Pagina 1 di 1

sbopkg - solo build e solo install

Inviato: gio 12 ott 2017, 15:31
da joe
sbopkg permette di processare i software scaricandone il necessario per la pacchettizzazione, compilando i sorgenti e creandone il pacchetto, installando il pacchetto scaricato.
Può anche gestire più pacchetti in una sola volta utilizzando le "code" o "queues" che dir si voglia che genericamente sono una lista di pacchetti da processare. In particolare c'è la possibilità di creare delle code per soddisfare le dipendenze di un certo pacchetto, lo si può fare a mano pacchetto per pacchetto (si guardano i vari files info alla riga "REQUIRES="), oppure grazie ad un altro tool chiamato "sqg" si crea la coda da processare automaticamente.

Faccio un esempio così è più facile spiegarmi. Consideriamo mpv il media player.

Codice: Seleziona tutto

sqg -p mpv
crea una coda che contiene i seguenti pacchetti:

Codice: Seleziona tutto

cat /var/lib/sbopkg/queues/mpv.sqf 
docutils
libass
# %README%: see the ffmpeg README file. 
ffmpeg
mpv
Ora qui già mi è venuto un grosso dubbio.
Se comando a sbopkg di processare completamente mpv, quindi installando:

Codice: Seleziona tutto

sbopkg -i mpv
Lui trova la coda mpv.sqf e propone di processare quella oppure il solo pacchetto. Scegliendo la coda i pacchetti vengono considerati uno dopo l'altro nell'ordine in cui appaiono nella coda e accade quanto segue:

Codice: Seleziona tutto

1. pacchetto docutils
- scaricato
- costruito
- installato
2. pacchetto libass
- scaricato
- costruito
- installato
3- pacchetto ffmpeg
ecc ecc
Osservazione: in questo modo mpv sarà compilato "contro" la versione di ffmpeg appena costruita e installata e contro gli altri pacchetti della coda appena processati.

La situazione cambia se comandiamo a sbopkg di processare la coda parzialmente, costruendo i pacchetti ma senza installarli.

Codice: Seleziona tutto

sbopkg -b mpv
In questo caso il nostro mpv verrà costruito usando la versione di ffmpeg e delle altre dipendenze installata sul sistema...
Non vi pare?
Quindi se si vuole aggiornare mpv mi sembra ben diverso usare la coda col flag "-i" piuttosto che col flag "-b"... Cioè saranno proprio differenti i due pacchetti mpv che ne saltano fuori.... Uno sarà basato su dipendenze più vecchie l'altro su versioni delle stesse più aggiornate.
Quindi domanda 1.
Il mio dubbio è fondato oppure ho capito male come funziona sbopkg?


Altra situazione: mettiamo di aver processato la nostra coda limitandoci a costruire i nostri pacchetti (sbopkg -b mpv) e quindi in /tmp avremo i nostri "tgz".
Se volessi semplicemente installarli in un secondo momento, senza dovermi andare a riguardare la lista della coda per capire quali erano da installare, come dovrei fare?
Nel man di sbopkg, dice che usandolo con l'iterfaccia dialog c'è la possibilità di installare solo il pacchetto che trova:
If using the dialog interface, and if sbopkg finds a built package for a particular piece of software in the OUTPUT directory, then sbopkg will automatically add a new menu entry allowing the user to install the package if he chooses.
Siccome nel mezzogiorno avevo lanciato "sbopkg -b mpv" perchè mpv era in uso... E avevo pensato lancio il build poi installo dopo pranzo... al ritorno ho provato ad usare sbopkg dall'interfaccia dialog: ho caricato la coda di mpv e ho avviato il processo completo, sperando che vedesse i pacchetti coinvolti e presenti in /tmp e che mi proponesse di installare quei precompilati lì...
Invece no: ha rifatto tutto, scaricando nuovamente i sorgenti e compilandoli. Forse la sola installazione funziona solo per pacchetti singoli ma non per la coda intera?
Quindi domanda 2:
Come avrei dovuto fare per non ricompilare tutto (a parte l'ovvio: cat /var/lib/sbopkg/queues/mpv.sqf e installpkg /tmp/{dipendenze.tgz,mpv.tgz})?

Grazie mille a tutti in anticipo! :D

Re: sbopkg - solo build e solo install

Inviato: gio 12 ott 2017, 17:47
da ponce
per la domanda 1, se vuoi aggiornare solo mpv non ti serve a niente processare la coda mpv.sqf con l'opzione -b ma dovresti installare solo quello con

Codice: Seleziona tutto

sbopkg -i mpv
discorso diverso se vuoi aggiornare anche le dipendenze: in quel caso puoi anche rinominare il file mpv.sqf chiamandolo, per esempio, pippo.sqf e modificarlo come credi (nel caso tu voglia ricompilare solo alcune dipendenze, aggiungerne altre, ecc.) e poi installare il tutto con

Codice: Seleziona tutto

sbopkg -i pippo
l'opzione -b ha senso solo per pacchetti singoli e/o senza dipendenze.

sull'interfaccia non so che dirti perche' non la uso mai :)

Re: sbopkg - solo build e solo install

Inviato: ven 13 ott 2017, 12:08
da joe
Grazie Ponce! :)

Allora avevo capito bene...
Se si sta gestendo una coda di dipendenze per poi installare il software che ne ha bisogno, sbopkg deve anche installarle quelle dipendenze, altrimenti avrebbe poco senso.
Quindi nel caso in cui per qualche motivo si voglia creare un pacchetto per mpv, ma senza installarlo, si potrebbe fare così:
- con sqg -p mpv creo la coda di dipendenze comprendente anche il software finale mpv
- poi edito la coda togliendo l'ultima riga: si può fare a mano editando il file corrispondente. Oppure si lancia sbopkg, si carica la coda di mpv e si de-seleziona "mpv": in questo modo processando quella coda in modo completo vengono pacchettizzate e installate tutte le dipendenze e non viene processato mpv
- a questo punto posso eseguire il semplice build di mpv "slackpg -b mpv" e sarò sicuro che le dipendenze necessarie al build sono soddisfatte... il pacchetto viene collocato in /tmp di default.
- infine se in un secondo tempo se voglio installare mpv lo posso fare con installpkg /tmp/mpv-eccecc.tgz, oppure posso usare slackpkg dall'interfaccia dialog:
. cerco "mpv"
. confermo che si tratta del pacchetto indicato
. Ecco! ora appare il menù principale ma dopo la riga "process" in fondo, ve n'è una in più: "install mpv-$ver-$arch$-build_tag.tgz"
Quello è il pacchetto di mpv che sbopkg rileva in /tmp, quello precedentemente costruito.

Per cui il manuale si riferisce solo alla gestione dei pacchetti singoli, non delle code.
Per esempio, se volessi pacchettizzare N pacchetti (indipendenti tra loro a livello di dipendenza) e installarli in un secondo momento potrei pensare di creare una coda che li contiene e processarla in "build mode" senza installarli.
Se in un secondo momento volessi installare quei pacchetti sarebbe comodo richiamare la coda e poter scegliere la funzione "installa quelli che trovi in tmp". Invece sbopkg non contempla questa possibilità. Se la coda non contiene tanti pacchetti questo comunque non è un problema... Basterà dare un'occhiata alla coda creata e dare un "installpkg /tmp/ecc" aiutandosi col TAB e la bash completion.

Re: sbopkg - solo build e solo install

Inviato: ven 13 ott 2017, 17:43
da ponce
sbopkg e' nato per fare pacchetti da SlackBuilds.org, il suo scopo non e' quello di fare il package manager: una volta che ha compilato/installato pacchetti il suo ruolo e' finito.
dico questo perche' "installa quelli che trovi in /tmp" secondo me e' piu' una cosa da gestore dei pacchetti.