Creare pacchetti personalizzati
Può capitare, però, che neanche i repository personalizzati possano esservi d’aiuto nel reperire un pacchetto, o, peggio ancora, una particolare versione del pacchetto. Facciamo un esempio: io sono in possesso di uno scanner Canon CanoScan LIDE 35. Questa periferica è divenuta (quasi pienamente) supportata in SANE soltanto a partire dalla versione 1.0.17 dei backend (per chi viene da Windows, qualcosa di simile all’interfaccia di gestione “Scanner e fotocamere digitali”, mentre SANE è, in tutto e per tutto, un’alternativa superpotenziata, indipendente dalla piattaforma e dalla GUI di TWAIN). Inoltre, questa particolare versione (o una più recente) di SANE mi serve solo sul computer su cui esso è fisicamente collegato (la novella Slackware box). Questo perchè, per fare il fico (e alla faccia di chi ancora si ostina a usare Windows
), posso controllare lo scanner da un altro computer con il backend net - cosa che mi evita di trascinarmi la periferica assieme al portatile, su cui è, peraltro, installata Kubuntu 6.06 Dapper Drake, che la supporta perfettamente.
Ora, per quanto noi possiamo essere bravissimi a compilare software dai sorgenti (e credetemi, si tratta di un procedimento facilissimo, soprattutto grazie ai potenti strumenti di autoconfigurazione degli stessi che la maggior parte dei progetti mette a disposizione, non ultimo il famosissimo script di shell configure), dobbiamo anche pensare in chiave futura: Slackware 11.0, infatti, include, SANE 1.0.17, che è perfetto per lo scanner in questione - e noi vogliamo la possibilità di poter tornare ad un package certificato da Patrick J. Volkerding - che di certo sarà più leggero ed efficiente di quello che noi potremo creare.
A noi, però, lo scanner serve adesso!
Faremo in modo, quindi, di creare un pacchetto .tgz in tutto e per tutto equivalente a quelli visti sinora, così che potremo rimuoverlo facilmente con un bel colpo di removepkg quando lo riterremo più opportuno.
Prenderò l’esempio di SANE (che è, tra l’altro, uno dei pacchetti che credo distribuirò tramite il mio sito Web, data l’elevata utilità): ne preleveremo i sorgenti, li compileremo e creeremo il pacchetto.
Come è ovvio, altri software potrebbero richiedere un livello di adattamento diverso da quello mostrato nell’esempio (per dire, diverse opzioni da passare a configure, o ulteriori operazioni preliminari): in ogni caso, i passaggi a partire dal punto 5 (escluso i l 6) sono pressochè universali, indipendenti da quale software si sta preparando.
- Scarichiamo i sorgenti di SANE (l’ultima versione, per chi scrive, è la 1.0.18 per i backend, e la 1.0.14 per i frontend):
wget http://alioth.debian.org/download.php/1669/sane-backends-1.0.18.tar.gz wget http://alioth.debian.org/download.php/1140/sane-frontends-1.0.14.tar.gz
- Decomprimiamo i backend, e spostiamoci nella directory che viene creata:
tar xfz sane-backends-1.0.18.tar.gz; cd sane-backends-1.0.18*/
- Configuriamo i sorgenti e iniziamo la compilazione. Attenzione a non scegliere il filesystem /usr/local, poichè vogliamo che i componenti risultino logicamente integrati nella distribuzione principale.
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var; make; make install
- (passaggio non sempre necessario) SANE rappresenta un caso particolare: infatti, mentre a livello sorgente esistono due pacchetti distinti e separati, ed una stretta dipendenza dei frontends da una versione installata (i.e. reperibile in /usr/*) dei backends, i pacchetti precompilati, di solito (ed è anche il caso di Slackware), sono unici, e installano sia gli uni che gli altri. Per poter, quindi, far trovare ai frontend la versione da noi compilata dei frontend (e quindi permettere la loro compilazione) dovremo fare un
make install
- Creiamo, se non l’abbiamo già fatto prima, una directory in cui porre tutti i file che dovranno far parte del pacchetto, e indichiamo a make di creare una gerarchia di filesystemtale da poter essere incorporata nel nostro pacchetto - poichè, in pratica, è come se facessimo credere al tool che la / si trova da un’altra parte), in questo modo:
mkdir -p $HOME/pacchetti/sane; make install DESTDIR=$HOME/pacchetti/sane
- Ripetiamo dal passaggio 1 al passaggio 5 (escluso il 4) per sane-frontends-1.0.14.tar.gz
- Spostiamoci nella directory che contiene i file da includere nel pacchetto, e creiamo una subdirectory /install:
cd $HOME/pacchetti/sane; mkdir install
- Creiamo un file di testo, slack-desc, nella directory install, scrivendo quanto segue:
# HOW TO EDIT THIS FILE: # The "handy ruler" below makes it easier to edit a package description. Line # up the first '|' above the ':' following the base package name, and the '|' on # the right side marks the last column you can put a character in. You must make # exactly 11 lines for the formatting to be correct. It's also customary to # leave one space after the ':'. |-----handy-ruler------------------------------------------------------| sane: sane (Scanner Access Now Easy) - backends v1.0.18, frontends v1.0.14 sane: sane: SANE is a universal scanner interface that provides standardized sane: access to any raster image scanner hardware, such as flatbed scanners, sane: hand-held scanners, video and still cameras, frame-grabbers, and other sane: similar devices. sane: sane: This package has been built on an i686 Slackware 10.2 box, and requires sane: libgphoto2 from the Slacky.it (http://www.slacky.it/) repository. sane: sane: - Usciamo dall’editor.
- Spostiamoci nella directory parent, e avviamo makepkg, specificando il nome del pacchetto da creare:
cd ..; makepkg sane-1.0.18-i686-1.tgz
Vi verranno poste alcune semplici domande: rispondete sì alla richiesta di cancellare i link simbolici (verranno ricreati per mezzo di uno script che sarà salvato in ./install/doinst.sh - script che potrete modificare a vostro piacimento in seguito, magari ricreando successivamente il pacchetto), e in breve tempo dovreste avere un pacchetto pronto da installare e gestire con le usuali utility di manutenzione Slackware (installpkg, removepkg, …).
Hope this helps!
(Edit del 24/09/2006: Alcuni pacchetti creati da me sono, da oggi, disponibili qui.)










11 commenti
Io ho uno scanner simile, il più vecchiotto LD20… Su Slack 10.2 funzionava benissimo…sulla 11 nisba… Hai qualche suggerimento?
Ho effettuato l’aggiornamento a Slackware 11.0 ieri, tramite slapt-get. E non è andata un granchè, nonostante il sistema sia sopravvisuto. Aspetto che mi arrivi il router, e poi proverò (se mi conviene) a rifare l’installazione daccapo. Testerò quindi anche lo scanner in quel caso.
Ciao Emanuele.Avrei un problemino:nell’installare Slackware 12.0,mi sono dimenticato i tools per la compilazione dei sorgenti.Secondo te come posso recuperarli?Che librerie mi servono?Grazie.
@Franco: Supponendo che tu abbia riavviato il sistema, basta fare (da root):
mount /mnt/cdromcd /mnt/cdrom/slackware/d
./install-packages
e ti verrà presentato il menu che avresti visto se avessi selezionato i tools di sviluppo all’atto dell’installazione. Se poi ti servono anche dele librerie (non so cosa esattamente tu abbia dimenticato di installare, perchè “tools per la compilazione dei sorgenti” dice tutto, e dice niente
), ripeti la stessa operazione in /mnt/cdrom/slackware/l. Altrimenti, puoi sempre installare i pacchetti singolarmente con installpkg.
Ti ringrazio.Ho gtk+ e gtk+2.Che cosa serve d’altro secondo te?Col dvd d’installazione non sono riuscito a far niente.
Il punto di montaggio del dvd è:/media/Slack12DVD
@Franco: Perdonami per l’imprecisione, ho lasciato Slackware quando ancora non mountava automaticamente i media
Quanto alle librerie: dipende da cosa vuoi compilare
Io voglio compilare sorgenti.Ecco un esempio:
http://mxhaard.free.fr/spca50x/Download/gspcav1-20070508.tar.gz
Purtroppo la shell non mi riconosce il coando “./configure”.
P.S.:che distro usi adesso?
“configure” non è incluso col sistema, ma viene fornito da ogni archivio di sorgenti. Gli sviluppatori partono da un modello standard di script, e lo adattano alle loro esigenze.
Se non ti viene riconosciuto, significa che: non è stato fornito dallo sviluppatore, e che magari basta fare make. Devi leggere i vari README che di solito vengono forniti con gli archivi stessi, se non hai un occhio allenato per scoprire cosa fare di primo acchitto.
Quanto al “compilare sorgenti”: ogni programma può dipendere da una o più librerie - e non è detto che tu le abbia installate tutte (non è questo il caso che mi sottoponi, però).
Adesso uso la release stabile di Debian (attualmente la v4.0)
Ho già installato gspcav1 un mese fa e ./configure è proprio necessario.Purtroppo kdtv mi aveva incasinato xorg ed ho dovuto reinstallare Slack.E lì purtroppo sono cominciati i guai.
Sai che avevi ragione?Per compilare gspcav1 è bastato make e make install.Che sia rimasto qualcosa dell’installazione precedente di Slack?Solo così si potrebbe spiegare il fatto che,l’altra volta,il configure era stat necessario.Beh,ogni giorno s’impara qualcosa di nuovo.Grazie,Emanuele,torna presto a Slack.:)