Pagina 1 di 1

Slackage...

Inviato: dom 11 ott 2009, 16:02
da gigiobagiano
Da un po' di giorni sto lavorando ad uno script bash che lavori in maniera simile a portage per gentoo. Le operazione che al momento dovrei essere riuscito ad implementare sono:

ricerca
installazione (compila ricorsivamente tutte le dipendenze per poi compilare il pacchetto)
rimozione singolo pacchetto
rimozione singolo pacchetto e dipendenze non più richieste da nessuno
(il minimo per poter far qualcosa)


Adesso sto sistemando una copia locale degli SlackBuild presenti su slacky, perchè per come ho impostato la cosa devo creare un file che raccolga in maniera particolare tutti i pacchetti presenti ed elenchi le relative dipendenze.
In un paio di giorni (doveroso una tastatina :oops: ) dovrei riuscire a testarlo un po' per evitare i classici errori stronzi e poi metterlo a disposizione...

Non so se effettivamente potrà interessare a qualcuno, ho preso questo script più come una sfida e un motivo per studiacchiare bash piuttosto che per un effettiva necessità o utilità, ma può darsi che non faccia così schifo ;)

Re: Slackage...

Inviato: dom 11 ott 2009, 17:26
da ocman
Wooow.

Personalmente ho sempre desiderato utilizzare Gentoo per il geniale approccio per la creazione/gestione dei pacchetti, ma sono rimasto a slackware più che altro per abitudine.
Questo script bash sarebbe una manna dal cielo a dir poco per:
- ottimizzare le applicazioni con i migliori flags per spremere appieno la propria architettura.
- applicare opzioni in compilazione secondo le esigenze che uno ha
- avere sempre software aggiornato!
- non dipendere da repository, ma solo dai mirror dei sorgenti ed eventualmente da chi aggiornerà gli slackbuilds.

Inoltre se anche le dipendende riescono ad essere risolte, soprattutto per pacchetti non ufficiali, allora è sicuramente una marcia in più.
=D> =D>

Ansioso di Provarlo

Re: Slackage...

Inviato: dom 11 ott 2009, 18:11
da cymon
Progetto affascinante come tutti quelli in questo campo.
Di solito però il problema più grosso da dirimere è la gestione delle dipendenze. Tu come le individui e gestisci?

Re: Slackage...

Inviato: dom 11 ott 2009, 19:01
da gigiobagiano
La mia idea attualmente si basa sul modificare il meno possibile gli slackbuild attualmente presenti, con il solo accorgimento di passare la $ARCH e $CHOST dal file di configurazione invece che scrivendola direttamente nello SlackBuild. Quindi, per adesso non si può impostare globalmente delle flags particolari (non che sia una cosa complicata inserire questa cosa).

Premesso che, a livello di chi crea il pacchetto o lo slackbuild, non cambierà pressochè nulla nelle sue operazioni, mi sto affidando agli slackrequired. In particolare, slackage guarda un file (da aggiornare ad ogni inserimento di un nuovo programma o di una nuova versione di uno esistente) del tipo:

DEPENDENCY_nomesoftware=('array' 'con' 'tutti' 'i' 'programmi' 'da' 'cui' 'dipende')
VERSION_nomesoftware=('array' 'versioni' 'disponibili') # le versioni vanno elencate dalla nuova alla vecchia ed è possibile indicare quale installare
PATH_nomesoftware="categoria/nomepacchetto"

Ho creato una funzione che:

-controlla se il pacchetto è installato (restituisce diversi valori in base a il pacchetto esistente è aggiornato (in tal caso esce), se è vecchio o se non c'è( continua)
-controlla se il pacchetto ha dipendenze e nel caso non nè avesse compila ed installa(o fa l'upgrade se c'è un pacchetto vecchio) direttamente (*)
-se ha dipendenze inizia un ciclo for su tutte le dipendenze richiamando sè stessa (ricorsivamente) per ognuna; una volta finito il ciclo installa il programma.
(prima di compilare e installare controlla anche se esiste un pacchetto già fatto in precedenza)

(*) ho messo questa cosa pensando ai pacchetti della distribuzione (di PJV per capirci), che ovviamente non sono elencati nei file di slackage, e quindi non dispongono di una lista dipendenze. A questo proposito, per semplificarmi ulteriormente la prima implementazione ipotizzo una slackware con installazione full, cioè non prevedo di far richiamare allo script comandi di slackpkg (non vorrei sostituire infatti il "gestore principale"). Lo script tiene anche aggiornato un file elenco dei pacchetti installati.

Come funzione è stupida, nel senso che ho pensato a quello che farei se dovessi fare tutto manualmente. Ho messo un'ulteriore possibilità, cioè:
DEPENDENCY_nomesoftware_VERSIONE=(array)
in modo che se per una particolare versione le dipendenze sono diverse si possano evidenziare.

Re: Slackage...

Inviato: dom 11 ott 2009, 19:43
da ocman
VERSION_nomesoftware=('array' 'versioni' 'disponibili') # le versioni vanno elencate dalla nuova alla vecchia ed è possibile indicare quale installare
Direi che diventa difficile da mantenere a lungo termine un elenco delle versioni per ogni pacchetto.
Forse è meglio affidarsi a qualche servizio online che fa quotidianamente il report di nuove versioni per software linux, una specie di changelog.
cioè non prevedo di far richiamare allo script comandi di slackpkg (non vorrei sostituire infatti il "gestore principale")
Sono daccordo sul discorso che hai fatto sulle dipendenze.
Invocare slackpkg secondo me può essere utile, in fondo è un pacchetto ufficiale che altro non fa che appoggiarsi a pkgtool, e potrebbe avere utili impieghi nel tuo script. è ben scritto e potresti attingere al suo codice, se ti ispira, magari per le funzioni di reperimento dei changelogs....

Re: Slackage...

Inviato: dom 11 ott 2009, 20:08
da gigiobagiano
Mi sembra che tu abbia un po' frainteso (o probabilmente sono io che non ho capito); qualcuno che fa lo slackbuild ci deve per forza essere, e quest'ultimo per adesso è costretto ad aggiungere la versione all'elenco manualmente. Suppongo che per il repo di slackware ci sia uno script che fa un lavoro simile e aggiorna i file globali. Mi dispiace...
Fra le altre cose funziona alla stessa maniera anche per gentoo, nel senso che se nessuno fa l'ebuild per una nuova versione di un programma, nessuno lo installerà attraverso portage.

Re: Slackage...

Inviato: dom 11 ott 2009, 20:30
da conraid
se è solo per didattica ok, ma altrimenti perché non collabori al progetto SBOpkg?

Re: Slackage...

Inviato: dom 11 ott 2009, 20:49
da gigiobagiano
Hai ragione, ma prima devo capirci qualcosa di bash e di sbopkg, questo è il mio primo script più o meno serio e vado avanti guida alla mano... ;)