News:

è stata rilasciata Zorin OS 17 basata su ubuntu 22.04

Menu principale

A proposito delle SlackBuilds...

Aperto da Braccobaldo, Martedì 13 Dicembre 2016, 10:26:05

Discussione precedente - Discussione successiva

Braccobaldo

...Cosa sono le SlackBuilds?

Sono delle raccolte di script che svolgono un compito, quello di produrre un pacchetto installabile per Slackware. Un pacchetto installabile come potrebbe essere un .exe per Windows, un .deb per Debian o un .rpm per RedHat. Quelli per Slackware sono .tgz e .txz.

Nella maggior parte dei casi il pacchetto viene prodotto partendo dai sorgenti di un programma. La compilazione dal codice sorgente  viene eseguita secondo le le specifiche dettate dagli script che compongono la SlackBuild, fino ad arrivare al prodotto finito.

Occasionalmente gli script, per arrivare al pacchetto per Slackware, invece di compilare dal codice sorgente, si limitano a spacchettare un programma per Debian (.deb) o per RedHat (.rpm) e a rimpacchettarlo in un .txz o un .tgz.

Le fonti per le SlackBuilds sono tante; ma due sono fondamentali. Sono il DVD dei sorgenti di Slackware (trovi il link nel Topic:Get Slack) e il Sito/Repository SlackBuilds.org.

Con il DVD dei sorgenti di Slackware si può compilare qualsiasi programma nel sistema. Con il sito/repository SlackBuilds.org si può compilare tutto ciò che generalmente non è incluso nel DVD ufficiale.

Se state immaginando che sia una cosa complicata posso rassicurarvi da subito. Non è complicato.

Vi faccio un esempio:

vogliamo compilare tutto l'ambiente di KDE, compreso tutti i programmi.

Tutto quello che dobbiamo fare è entrare nella directory "kde" del DVD dei sorgentì e impartire questo comando:
./KDE.SlackBuild

oppure, se preferite:
sh KDE.SlackBuild

Partirà immediatamente la compilazione di tutti i pacchetti che compongono l'ambiente desktop di KDE. Terminato il processo troverete tutti i pacchetti compilati nella directory /tmp, e avrete KDE installato e funzionante senza nessun altro intervento.

Alla stessa maniera, dallo stesso DVD, potrete ricompilare qualsiasi programma componga il sistema, incluso XFCE naturalmente.

Potete anche compilare e installare MATE, Cinnamon, Lumina Desktop, ...

...Il seguito alla prossima puntata.  :)

bobol


trigg

se hai paura di far domande...
                                             ...hai paura d'imparare
     ... non si finisce mai d'imparare...

Braccobaldo

Se la prima parte di questa discussione vi è sembrata, come in effetti è, molto semplice, la seconda parte non vi farà la stessa impressione. In questo post parleremo del Repository/Sito-Internet https://slackbuilds.org/ e di come utilizzarlo e gestirlo. Mentre concettualmente valgono gli stessi principi di semplicità espressi in precedenza, nella gestione pratica di questo Repository il discorso si farà più articolato e di conseguenza un po' più complesso. Niente di cui preoccuparsi comunque.

Diamo una occhiata alla Home page di SlackBuilds.org:


Se notate nella barra dei menu, oltre alle varie voci, c'è una casella di ricerca con indicata una versione di Slackware (... che possiamo cambiare se stiamo usando una versione precedente alla 14.2). Da questa posizione cercheremo il software che ci interessa installare.
Quale che sia il metodo con il quale provvederemo alla esecuzione della SlackBuild è fondamentale leggere il file README che sempre l'accompagna. Esso infatti contiene le informazioni essenziali per portare a termine correttamente la compilazione e, soprattutto, indica le dipendenze necessarie al funzionamento del software che ci apprestiamo ad installare.

Facciamo un esempio con Qbittorrent:


Uno dei modi di procedere è quello di scaricare a mano i pacchetti e gli script della SlackBuild e di eseguire la compilazione di un singolo pacchetto per volta, funziona così:
CitazioneSe fai attenzione, quando dei nella pagina di download di SlackBuilds.org, hai due pacchetti. Normalmente sono archivi tar, il primo, scorrendo la pagina, è quello relativo alla SlackBuild, il secondo è quello dei sorgenti del software.
Devi scaricare entambi ma devi scompattare solo il primo archivio, quello della SlackBuild, così facendo otterrai una cartella che contiene degli script. Adesso dovrai copiare o spostare l'archivio tar dei sorgenti all'interno della cartella degli script. Quindi aprirai un terminale e ti porterai nella directory di lavoro (quella degli script) per lanciare con i privilegi elevati lo script "nomepacchetto.SlackBuild".
A compilazione ultimata lo script produrrà un pacchetto .txz che potrai installare normalmente.

Se facciamo attenzione Qbittorrent richiede una dipendenza:  libtorrent-rasterbar. Indicata alla voce "this require: ...". La voce libtorrent-rasterbar è a sua volta un link alla sua Slackbuild e dovremo installarlo "prima" di Qbittorrent. Se apriamo il link ci accorgeremo che libtorrent-rasterbar ha, a sua volta, una dipendenza da soddisfare prima di essere compilato che è "Geoip"...

... Ci sarebbe da diventare matti se ci mettessimo a compilarle tutto a mano. Ma non è necessario. Esistono infatti una serie di tool che ci consentono di automatizzare e semplificare il procedimento. Io uso sbopkg, e di questo vi parlerò la prossima volta... :ciao:

Braccobaldo

#4
... Se non fosse che per spiegarne il funzionamento userò molte parole, direi che l'utilizzo di sbopkg è estremamente semplice...

Ma partiamo dal principio:

scarichiamo sbopkg dal suo sito, ci portiamo nella directory di download, apriamo un terminale e lo installiamo con il comando:
installpkg "nomecompletodelpacchetto"

Sbopkg può essere usato sia con la sua interfaccia che direttamente dalla riga di comando. In ogni caso avremo bisogno di autenticarci come "root vero", che è un po' diverso dal "super utente". Infatti, mentre generalmente si usa il comando
su
per ottenere i privilegi di super utente; per diventare root vero il comando sarà:
su -
(Vi accorgerete della differenza osservando la shell...)

Sia che si usi l'interfaccia, sia che si usi la riga di comando, la prima operazione da compiere è sincronizzarsi con il repository.
Diamo una occhiata all'interfaccia (per avviarla scrivete "sbopkg" nel terminale):
bash-4.3$ su -
Password:
root@slackware:~# sbopkg



Le prime volte che ho usato sbopkg l'ho fatto usandolo con l'interfaccia, adesso la uso solo per gli aggiornamenti. Vi invito a esplorarla e a prenderci un po' di confidenza prima di passare alla riga di comando.

...Riga di comando che vedremo con il prossimo post.  :)

Braccobaldo

#5
Per mostrarvi il funzionamento di sbopkg da riga di comando faremo una installazione complessa, vale a dire che installeremo uno di quei programmi che per sua natura richiede molte dipendenze, installeremo Kdenlive.

Apriamo un browser web, andiamo sul sito di SlackBuilds.org e inseriamo "kdenlive" nella casella di ricerca...



Quello che ci viene presentato per primo  è il contenuto del file "readme". Sempre, in fondo al readme ci sono alla voce, "This requires:", tutte le dipendenze richieste dal programma. Nel nostro caso sono:



Tutto quello che dobbiamo saper fare è il copia e incolla delle voci presenti, nello stesso ordine in cui sono presentate.
Ognuna delle voci relative alle dipendenze è anche un link alla pagina dello stesso sito relativa al pacchetto. E qui dobbiamo fare un po' di attenzione. Ognuno dei pacchetti potrebbe volere qualche dipendenza ulteriore, per cui dobbiamo cliccare sul link e assicurarci che sia più o meno così.
Bisogna fare attenzione a mettere i nomi nell'ordine corretto, e cioè, le dipendenze precedono sempre, nella coda, il pacchetto che le richiede.

Nella maggior parte dei casi le dipendenze sono pochissime o addirittura non ce ne sono. Questo perchè Slackware, con l'installazione del sistema, installa un gran numero di librerie utili, proprio per semplificare la gestione delle dipendenze.

Passiamo alla sintassi.

Prima di tutto diventiamo root:

su -

Ogni volta che usiamo sbopkg dobbiamo sincronizzarci con il repository.  questo è il comando:

sbopkg -r

Nel caso in cui il nostro lavoro prevede l'installazione di più pacchetti l'intera coda dovrà essere racchiusa tra le virgolette, esempio:

sbopkg -i "pacchetto1 pacchetto2 pacchetto3"

L'opzione "-ì" provvederà a scaricare i sorgenti, compilarli e installarli nel sistema.

Adesso inserirò l'intera coda per l'installazione di kdenlive, poi la commentiamo brevemente:

sbopkg -k -i "amrnb faad2 gsm lame dvdauthor libavc1394 libdv libiec61883 dvgrab schroedinger x264 xvidcore libmp4v2 faac mlt kdenlive"


Se notate, l'opzione -i è preceduta dall'opzione -k.

Perché ???

Mettiamo il caso che è già da un po' che uso le slackbuilds e sbopkg e che qualcuna delle dipendenze richieste da un programma le ho già installate in precedenza. Sarebbe una inutile perdita di tempo compilare e reinstallare qualcosa che avevo già installato, e allo stesso tempo correrei il rischio di diventare matto (ancora di più... :) ) a tentare di ricordarmi quali sono o, ancora peggio, a rintracciarle nel sistema per toglierle dalla coda. L'opzione -k impone a sbopkg di saltare la compilazione dei pacchetti già presenti. Semplice semplice.

Come tutti i programmi di Linux anche sbopkg ha le sue pagine "man" e ha anche molte altre opzioni disponibili. Io le altre non le ho mai usate ma vi consiglio comunque di dargli una occhiata...

man sbopkg

Nota: sbopkg non è l'unico programma in grado di gestire le slackbuilds e il loro repo. Io so che esistono ma non li ho mai ne installati ne usati. Se ne conoscete qualcuno e volete integrare questa discussione con le vostre conoscenze sentitevi liberi di farlo.
Così come se avete delle domande da fare fatele tranquillamente. Per quel poco che conosco sarò lieto di rispondervi.

Buon divertimento!  ;)

:ciao:

Braccobaldo

#6
Avevo dimenticato di sottolineare alcuni aspetti che ritengo siano importanti...

Sotto l'aspetto della gestione del sistema, nel caso in cui si faccia un uso sistematico delle slackbuilds, è importante sapere che la compilazione del software sul sistema produce una gran quantità di dati. Questo comporta che la partizione di root / deve essere adeguatamente dimensionata. In modo particolate la directory /tmp. In questa directory sbopkg crea la sua directory di build che si chiama SBo (il percorso è /tmp/SBo/). Questa è la directory in cui si crea il maggior volume di dati e che periodicamente va svuotata.

Il processo di compilazione produce sempre un pacchetto di Slackware con estensione .tgz, che, come dicevo nel post iniziale, è l'equivalente di Slackware di un .deb, di un .rpm o di un .exe. Questi pacchetti li trovate sempre in /tmp e potete farne ciò che credete più opportuno: conservarli e creare un vostro repository oppure buttarli insieme a tutto il resto.

Per rendere visivamente...

bash-4.3$ ls /tmp |grep tgz
GeoIP-1.6.9-x86_64-1_SBo.tgz
aMule-2.3.1-x86_64-1_SBo.tgz
amrnb-11.0.0.0-x86_64-1_SBo.tgz
cryptopp-5.6.4-x86_64-2_SBo.tgz
digikam-4.14.0-x86_64-3_SBo.tgz
docutils-0.12-x86_64-1_SBo.tgz
dvdauthor-0.7.1-x86_64-2_SBo.tgz
dvgrab-3.5-x86_64-1_SBo.tgz
faad2-2.7-x86_64-2_SBo.tgz
feh-2.14-x86_64-1_SBo.tgz
frei0r-1.5.0-x86_64-1_SBo.tgz
imlib2-1.4.9-x86_64-1_SBo.tgz
kdenlive-0.9.10-x86_64-1_SBo.tgz
lensfun-0.3.2-x86_64-1_SBo.tgz
libass-0.13.5-x86_64-1_SBo.tgz
libdv-1.0.0-x86_64-2_SBo.tgz
libgme-0.6.1-x86_64-1_SBo.tgz
libkface-15.08.3-x86_64-2_SBo.tgz
libkgeomap4-15.08.3-x86_64-1_SBo.tgz
libkvkontakte-4.12.0-x86_64-2_SBo.tgz
liblqr-0.4.2-x86_64-1_SBo.tgz
libmp4v2-2.0.0-x86_64-1_SBo.tgz
libpgf-6.14.12-x86_64-2_SBo.tgz
libtorrent-rasterbar-1.0.10-x86_64-1_SBo.tgz
libxkbcommon-0.6.1-x86_64-1_SBo.tgz
luckybackup-0.4.8-x86_64-1_SBo.tgz
mlt-6.2.0-x86_64-2_SBo.tgz
mpv-0.18.0-x86_64-1_SBo.tgz
murrine-themes-0.98.11-noarch-1_SBo.tgz
numix-icon-theme-0.3.872.201611140017-noarch-1_SBo.tgz
numix-icon-theme-circle-2.0.3.13.201611240401-noarch-1_SBo.tgz
opencv-3.1.0-x86_64-3_SBo.tgz
paper-icon-theme-1.4.0-noarch-1_SBo.tgz
python2-pythondialog-3.4.0-x86_64-1_SBo.tgz
pyxdg-0.25-x86_64-2_SBo.tgz
qbittorrent-3.2.5-x86_64-1_SBo.tgz
rtmpdump-20151223_fa8646d-x86_64-1_SBo.tgz
skype-4.3.0.37-i486-1_SBo.tgz
slackware-xdg-menu-0.7.6.2-noarch-1_SBo.tgz
slpkg-3.2.2-x86_64-1_SBo.tgz
snappy-1.1.3-x86_64-2_SBo.tgz
soundkonverter-2.2.0-x86_64-1_SBo.tgz
txt2tags-r1172-x86_64-1_SBo.tgz
vivaldi-1.6.689.46-x86_64-1_SBo.tgz
vivaldi-1.6.689.46-x86_64-2_SBo.tgz
vivaldi-codecs-ffmpeg-extra-55.0.2883.87-x86_64-1_SBo.tgz
wxPython-2.8.12.1-x86_64-2_SBo.tgz
x265-2.2-x86_64-1_SBo.tgz
xdgmenumaker-1.4-noarch-1_SBo.tgz
youtube-dl-2016.12.09-x86_64-1_SBo.tgz
youtube-dl-2017.01.08-x86_64-1_SBo.tgz
bash-4.3$


...Questi sono i .tgz che al momento sono nella mia /tmp

Questa discussione può essere interessante http://www.linuxminditalia.org/index.php?topic=22926.msg249253#msg249253.

Superciuk

#7
...Chi ha avuto la pazienza di imparare a usare le SlackBuilds e sbopkg adesso si merita un premio.  ;D

Il premio è slpkg.

Slpkg è un programma (da riga di comando) che è in grado di gestire tutti i repository di Slackware, ufficiali e non, e supporta pienamente la risoluzione delle dipendenze.
Oltre a gestire i repos del software precompilato, slpkg gestisce anche il repository di SlackBuilds.org e, anche in questo caso, è in grado di risolvere le dipendenze compilandole automaticamente.

E' un programma  davvero completo e con un gran numero di opzioni, per questo il mio sarà solo un breve cenno: quel tanto che basta per usarlo con le SlackBuilds.

Per prima cosa lo installiamo con:

sbopkg -i slpkg

Il repo SBo è attivo di default, la prima cosa da fare è dare il comando di update:

slpkg update

Adesso è possibile installare ciò che desideriamo, il comando è:

slpkg -s sbo <nomepacchetto>

per rimuovere il pacchetto il comando è:

slpkg -r sbo <nomepacchetto>

Una guida, non esaustiva, sui comandi di slpkg (in lingua spagnola) la potete trovare qui: https://ayudalinux.com/slpkg-administrador-paquetes

anche leggere le pagine man può essere interessante: man slpkg

...Dovrebbe essere superfluo sottolineare che i comandi di sbopkg e di slpkg vanno impartiti con i privilegi elevati.  :)

:ciao:


EDIT:

Per chi, oltre me (naturalmente  :hehe:), usa Slackware slpkg può essere un programma molto interessante. A patto che si impari ad usarlo, le cose che fa sono davvero tante.

Il link a quella specie di guida postato più su è un po' una ciofeca e tutt'altro che esaustiva, quella che posto adesso è decisamente migliore. E' quella ufficiale:

https://github.com/dslackw/slpkg#id2


:)

zar Marco

#8
Mi stavo chiedendo, so che potrebbe essere stupido ma seguo sempre il mio mantra personale, i pacchetti per slackware sono dei tgz, non deb ne rpm ne nient'altro. Credo che quindi si possa usare il consueto make sudo make install. Ma la curiosità è un altra. Essendo appunto un tgz hanno l'estensione di un qualunque altro pacchetto reperibile nel web, quindi, a livello ipotetico si potrebbero usare anche i pacchetti prelevati tipo da AUR?



Superciuk

Credo che mi sia sfuggito il senso di quel "mantra personale"...

...Per quanto riguarda i pacchetti .tgz si, è vero, non sono .deb e neanche .rpm. Infatti sono .tgz. Sono l'equivalente per slackware del .deb per Debian (ecc.). E infatti non li puoi installare con make e make install, perché non sono dei sorgenti, quindi non devi compilarli. Infatti (ancora una volta) sono pre-compilati, proprio come i deb e gli rpm; e si installano con i comandi "installpkg" e "upgradepkg".

I pacchetti prelevati da AUR non li puoi usare perché non sono precompilati. In AUR trovi i sorgenti e gli script di build che userai (con yaourt) per compilare e installare i pacchetti.

zar Marco

#10
Il mantra personale è: meglio una domanda stupida in più, che una intelligente in meno.

Detto ciò, grazie mille per la spiegazione, credevo che fossero comunque sorgenti che poi venissero compilati. Ho capito male.
Quindi in pratica sono comunque dei binari



Superciuk

I pacchetti binari per Slackware hanno 3 o 4 estensioni diverse, ma tutte iniziano con una t e tutte finiscono con una z. La maggior parte dei pacchetti che trovi pre-compilati per Slackware (nei repo di alien, salixos, ecc) hanno la x (.txz), quelli prodotti con gli script di SlackBuilds hanno la g (.tgz), ma sono sicuro che ce ne sono altri. La differenza sta nel tipo di compressione...

...L'equivoco che un pacchetto .tgz possa essere scambiato per sorgenti non mi meraviglierebbe se venisse da un utente di debian. Ma dal momento che usi arch e che il formato dei binari di arch è .pkg.txz, allora mi fa un po' di meraviglia. Inoltre questa stessa estensione è molto comune in ambito BSD e anche con altre distro Linux.

Comunque, se la pacchettizzazione dei binari di Slackware ti interessa davvero, sulle pagine Wiki ufficiali troverai informazioni dettagliate in proposito. Molto interessante.  :)

zar Marco

#12
Ammetto che ogni tanto mi capita di fare un po' di confusione con le varie estensioni, nei sistemi che uso. Chiaramente so che il formato dei pacchetti binari di arch è in txz, solo che tendo a far confusione ogni tanto



Superciuk

Forse non ti sei accorto che questo Topic è una sorta di guida-how to sull'uso delle Slackbuilds.
Puoi anche usarlo per le tue considerazioni facete se credi: fai come ritieni opportuno.

P.S.
Nel post precedente confondi la velocità di download del repo di alienbob con Slackware, con la quale invece i downloads sono sempre a banda piena.

zar Marco

Ok mi scuso, ho provveduto ad eliminare il post, vedrò di stare più attento