Certo che si può, consigliatissimo lanciare sbopkg con l'opzione help:
Ho notato che lanciando direttamente sbopkg, mi avverte che è presente una coda per il pacchetto in questione. Nelle versioni precedenti mi pare non lo facesse... ma forse è perché avevo generato le code dell'intero repo con sqg, non ricordo più. In pratica mi propone di scegliere la coda piuttosto che il pacchetto singolo. Così se scelgo la coda lui mi crea tutti i pacchetti di dipendenza presenti nella stessa, insieme al pacchetto "target" cui la coda serve appunto come dipendenza.
Se NON voglio ricompilare il mondo ma solo i pacchetti non ancora installati, posso aggiungere l'opzione "-k" che appunto salta il rebuild di eventuali pacchetti già installati.
Esempio, se vuoi installare cudatoolkit senza ricompilare e ripacchettizzare:
- zulu-openjdk8, nvidia-driver
- nvidia-kernel
- ecc ecc... quindi altri eventuali pacchetti necessari per dipendenza
Basta lanciare:
Questo dovrebbe proporti la pacchettizzazione dell'intera [q]ueue, cioè la coda di dipendenze per cudatoolkit, incluso cudatoolkit.
Tu scegli "q", appunto la coda quindi.
E prima di cominciare ti mostra un report di ciò che andrà a lavorare e costruire:
Codice: Seleziona tutto
~# sbopkg -i cudatoolkit
Both a queuefile and a package were found with the name "cudatoolkit".
Use (Q)ueuefile, (P)ackage, or (A)bort?: q
Come si vede io scelgo "q"...
Ed ecco cosa salta fuori:
Codice: Seleziona tutto
PRE-CHECK LOG
Using the SBo repository for Slackware 15.0
Queue Process: Download, build, and install
apache-ant:
Checking GPG for apache-ant.tar.gz ... OK
Processing apache-ant 1.10.12-1
Using original .info file
Using original SlackBuild file
No build options selected.
openjdk7:
Checking GPG for openjdk7.tar.gz ... OK
Processing openjdk7 7u321-2
Using original .info file
Using original SlackBuild file
No build options selected.
openjdk8:
Checking GPG for openjdk8.tar.gz ... OK
Processing openjdk8 8u345-2
Using original .info file
Using original SlackBuild file
No build options selected.
nvidia-kernel:
Checking GPG for nvidia-kernel.tar.gz ... OK
Processing nvidia-kernel 515.76-1
Using original .info file
Using original SlackBuild file
No build options selected.
nvidia-driver:
Checking GPG for nvidia-driver.tar.gz ... OK
Processing nvidia-driver 515.76-1
Using original .info file
Using original SlackBuild file
No build options selected.
cudatoolkit:
Checking GPG for cudatoolkit.tar.gz ... OK
Processing cudatoolkit 10.2.89-1
Using original .info file
Using original SlackBuild file
No build options selected.
+++++++++++++++++++++++++++++++++++++++++++
Pre-check complete.
Do you wish to proceed based on the search results above? Packages not
found will be skipped during the process.
(P)roceed or (Q)uit?:
Use (Q)ueuefile, (P)ackage, or (A)bort?: q
L'opzione -k ti evita appunto la ricompilazione di eventuali pacchetti della cosa che sono già installati sul sistema.
Serve comunque una attenzione.
La dipendenza generica di cudatoolkit è nvidia-kernel e nvidia-driver.
Ma nel caso della tua scheda tu hai installato (o comunque devi installare) i driver nvidia-legacy470-kernel e nvidia-legacy470-driver, altrimenti la tua scheda video non è correttamente gestita.
Per cui dalla coda generata automaticamente dovrai togliere i due pacchetti di default e mettere i legacy che servono per la tua scheda. Anche se generi la coda con sqg dovrai poi mettervi mano sostituendo il nome dei pacchetti più recenti con quelli legacy.
La coda non è altro che un file di testo con un pacchetto per riga, e va posizionata nella dir /var/lib/sbopkg/queues.
O per lo meno a me di default le piazza lì. Poi ci sarebbe una variabile da impostare nel sbopkg.conf per controllare sta roba, ma va be', non complichiamo...
In pratica se tu vai a vedere com'è fatta la coda di cudatoolkit ti basta:
Codice: Seleziona tutto
# cat /var/lib/sbopkg/queues/cudatoolkit.sqf
apache-ant
openjdk7
openjdk8
nvidia-kernel
nvidia-driver
cudatoolkit
In questo caso la cosa più conveniente è quindi quella di creare una copia della coda con i due pacchetti driver e kernel modificati col nome dei corrispondenti legacy470.
La nuova coda così creata andrà salvata sempre nella dir delle code, ma con nome non ambiguo, potrebbe essere un'idea:
Codice: Seleziona tutto
# cat /var/lib/sbopkg/queues/custom-cudatoolkit.sqf
apache-ant
openjdk7
openjdk8
nvidia-legacy470-kernel
nvidia-legacy470-driver
cudatoolkit
Se non rinominiamo così potrebbe accadere che aggiornando sbopkg o anche solo il repository le nostre modifiche vadano perse.
Per lanciare la nostra coda senza rischiare di ricompilare roba già installata che non serve reinstallare:
Codice: Seleziona tutto
# sbopkg -k -i custom-cudatoolkit
PRE-CHECK LOG
Using the SBo repository for Slackware 15.0
Queue Process: Download, build, and install
apache-ant:
Checking GPG for apache-ant.tar.gz ... OK
Processing apache-ant 1.10.12-1
Using original .info file
Using original SlackBuild file
No build options selected.
openjdk7:
Checking GPG for openjdk7.tar.gz ... OK
Processing openjdk7 7u321-2
Using original .info file
Using original SlackBuild file
No build options selected.
openjdk8:
Checking GPG for openjdk8.tar.gz ... OK
Processing openjdk8 8u345-2
Using original .info file
Using original SlackBuild file
No build options selected.
nvidia-legacy470-kernel:
Checking GPG for nvidia-legacy470-kernel.tar.gz ... OK
Processing nvidia-legacy470-kernel 470.141.03-1
Using original .info file
Using original SlackBuild file
No build options selected.
nvidia-legacy470-driver:
Checking GPG for nvidia-legacy470-driver.tar.gz ... OK
Processing nvidia-legacy470-driver 470.141.03-1
Using original .info file
Using original SlackBuild file
No build options selected.
cudatoolkit:
Checking GPG for cudatoolkit.tar.gz ... OK
Processing cudatoolkit 10.2.89-1
Using original .info file
Using original SlackBuild file
No build options selected.
+++++++++++++++++++++++++++++++++++++++++++
Pre-check complete.
Do you wish to proceed based on the search results above? Packages not
found will be skipped during the process.
(P)roceed or (Q)uit?:
Poi anche qui la cosa non è mica finita. Perché compilare le openjdk (se si hanno già installate l'opzione "-k" ce le risparmia) è una roba molto dispendiosa. Probabilmente è conveniente toglierle dalla coda creata semi-automaticamente e mettere la sola zulu-openjdk8, che è più semplicemente una ripacchettizzazione di openjdk e anche dalla pagina di cudatoolkit su SBo dovrebbe essere sufficiente come dipendenza.