sbopkg - solo build e solo install

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3788
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

sbopkg - solo build e solo install

Messaggio 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

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 3022
Iscritto il: mer 5 mar 2008, 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 6.6.16
Desktop: lxde
Località: Pisa
Contatta:

Re: sbopkg - solo build e solo install

Messaggio 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 :)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3788
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: sbopkg - solo build e solo install

Messaggio 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.

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 3022
Iscritto il: mer 5 mar 2008, 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 6.6.16
Desktop: lxde
Località: Pisa
Contatta:

Re: sbopkg - solo build e solo install

Messaggio 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.

Rispondi