Buona domanda.
In effetti uno pensa, ma se ho già installato il pacchetto "pippo-0.1" e voglio aggiornarlo a "pippo-0.2" e vedo che su SBo hanno caricato proprio lo slackbuild per la nuova versione di pippo, posso aggiornarlo usando sbopkg?
Il dubbio è tanto più giustificato dal momento che l'help di sbopkg riporta:
" -i pkg/queue(s) Like '-b', but also install built packages"
Non esiste un comando tipo "sbopkg upgrade pippo". Quindi resta il dubbio su cosa accada al mio pacchetto preinstallato pippo-0.1 qualora lanciassi:
La risposta è ovviamente: sì, è possibile aggiornare il pacchetto con sbopkg, proprio con il comando sopra (opzione -i "install").
Capire perchè non è così ovvio nè banale, o per lo meno non lo è stato per me che non sono riuscito a trovare alcun documento che spiegasse questo aspetto.
La domanda giusta da farsi è: cosa fà "sbopkg -i nomepacchetto" ?
Sappiamo che esegue il build dei sorgenti creando il pacchetto slackware installabile e poi lo installa. La domanda diventa allora: quale comando viene lanciato attraverso sbopkg per installare il pacchetto creato in fase di build?
Ho trovato la risposta solo leggendo il sorgente di sbopkg:
https://github.com/sbopkg/sbopkg/blob/m ... bin/sbopkg
È solo uno script di shell, nulla di complicato, basta cercarvi dentro la parolina magica "upgrade" e "install".
Salta fuori che quando passiamo l'opzione "-i" per installare il pacchetto, vengono richiamate le function set_type install:
Codice: Seleziona tutto
i ) # Download, build, install
set_type install
BUILDLIST+=("$OPTARG")
unset DIAG
;;
Da lì si arriva a dedurre che ad un certo punto interviene la funzione install_package, la quale alla fine richiama il comando di sistema
upgradepkg per installare il pacchetto:
Codice: Seleziona tutto
/sbin/upgradepkg --reinstall --install-new $OLDPKG%$INSTDIR/$INSTPKG
echo "Done upgrading/installing package."
Questo ci rende sicuri che la nostra installazione in realtà è un aggiornamento qualora il pacchetto pippo sia già presente sul sistema.
Forse c'era un modo meno funanbolico per confermare questo comportamento, ma tant'è io non l'ho trovato documentato. Può anche essere che non abbia cercato bene, intendiamoci, però un accenno ad upgradepkg (a parte il See Also finale) nella pagina man si potrebbe anche aggiungere.
Oppure nell'help, al posto di:
Codice: Seleziona tutto
-i pkg/queue(s) Like '-b', but also install built packages
mettere una cosa tipo:
Codice: Seleziona tutto
-i pkg/queue(s) Like '-b', but also install built packages (or "upgrade" if a previous version of them is found already installed)
Quindi in soldoni sì sbopkg si può usare per fare l'upgrade di un certo pacchetto.
Anche delle sue dipendenze, sono pacchetti anche loro alla fine.
Come si fà, allo stesso modo dell'installazione: si lancia sbopkg -i "dipend1 dipend2 nome_pacchetto"
Però occhio ad aggiornare le dipendenze. Se sono pacchetti già inclusi nel sistema slackware, tipo librerie e roba che serve anche a tanti altri pacchetti del sistema. Meglio non andare ad aggiornarli perchè può capitare che altri pacchetti dipendano dalle vecchie librerie e ti ritrovi a dover poi ricompilare un sacco di roba. Quindi se devi ricompilare delle dipendenze, meglio che ti assicuri che non sia roba preinstallata sul sistema ed eventualmente prima chiedi.