lunedì 20 settembre 2010

Creare un metapacchetto deb con equivs

Seguite queste istruzioni a vostro rischio e pericolo, non assicuro che non possano creare qualche dipendenza rotta.

In APT (il sistema che gestisce i pacchetti di Debian, Ubuntu e compagnia) i metapacchetti (o dummy packages, pacchetti silenziosi) sono dei pacchetti che non forniscono un vero e proprio software ma che permettono di installare come dipendenze altri programmi. È, per esempio, un metapacchetto ubuntu-desktop: in sé non installa nessun programma, ma fa installare come dipendenze tutti i programmi presenti di default nella versione desktop di Ubuntu.

È possibile creare (in Debian e Ubuntu) dei metapacchetti con il programma equivs. Si installa normalmente da repository. Come al solito si può scegliere la via grafica installando con Synaptic il pacchetto equivs, oppure da terminale con il comando
sudo apt-get install equivs
equivs, che funziona da terminale, fornisce due comandi: equivs-control ed equivs-build. Il primo genera il file di configurazione del metapacchetto che si vorrà creare:
equivs-control nomepacchetto
creerà un file chiamato nomepacchetto (ovviamente sostituirete a nomepacchetto il nome del metapacchetto che vi interessa creare). Il file deve essere modificato con un qualsiasi editor di testo affinché contenga le impostazioni desiderate. Le opzioni che devono essere necessariamente presenti sono Package, Description e Depends. Ricordarsi di rimuovere il cancelletto (decommentare) davanti a tutte le opzioni modificate.

Con
equivs-build nomepacchetto
(nomepacchetto deve essere il nome del file creato con il comando precedente) si costruisce nella stesa cartella il pacchetto deb sulla base delle informazioni contenute nel file appena impostato che potrà essere installato facendoci doppio clic sopra oppure ancora da terminale con il comando
sudo dpkg -i nomepacchetto.deb
(il nome però non sarà semplicemente nomepacchetto.deb ma conterrà il numero della versione e l'architettura impostate, usate l'autocompletamento con il tasto TAB per sapere qual è il nome, oppure semplicemente controllatelo aprendo la cartella).

Un dei possibili usi dei metapacchetti è quello di poter installare con un solo doppio clic numerosi programmi (inserendoli come dipendenze del metapacchetto creato), oppure far credere al sistema APT che sia installato un determinato programma quando lo si è installato in maniera diversa (per esempio attraverso la compilazione del codice sorgente).

In questi giorni ho installato la distribuzione TeX Live 2010 dal sito e voglio che APT veda tutti i pacchetti relativi a TeX Live siano installati (perché la distribuzione è installata all'esterno del gestore pacchetti APT, ma lui non è a conoscenza di ciò ovviamente), in modo da poter installare altri programmi dipendenti da questi pacchetti. Per fare ciò ho creato il file texlive con il seguente contenuto:
Section: tex
Package: texlive-dummy
Version: 2011
Homepage: http://tug.org/texlive/
Standards-Version: 3.9.2
Provides: asymptote, asymptote-doc, biblatex, biblatex-dw, cm-super, context, dblatex, dvipdfmx, dvipng, feynmf, fragmaster, guile-1.8, jadetex, lacheck, latex2html, latex-beamer, latex-cjk-all, latexmk, latex-xcolor, lcdf-typetools, libsigsegv0, lilypond, lilypond-data, lilypond-doc, lmodern, luatex, passivetex, pgf, preview-latex-style, prosper, ps2eps, psutils, t1utils, tex4ht, tex4ht-common, tex-common, texlive, texlive-base, texlive-base-bin, texlive-base-bin-doc, texlive-bibtex-extra, texlive-binaries, texlive-common, texlive-doc-base, texlive-doc-bg, texlive-doc-cs+sk, texlive-doc-de, texlive-doc-en, texlive-doc-es, texlive-doc-fi, texlive-doc-fr, texlive-doc-it, texlive-doc-ja, texlive-doc-ko, texlive-doc-mn, texlive-doc-nl, texlive-doc-pl, texlive-doc-pt, texlive-doc-ru, texlive-doc-si, texlive-doc-th, texlive-doc-tr, texlive-doc-uk, texlive-doc-vi, texlive-doc-zh, texlive-extra-utils, texlive-fonts-extra, texlive-fonts-extra-doc, texlive-fonts-recommended, texlive-fonts-recommended-doc, texlive-font-utils, texlive-formats-extra, texlive-games, texlive-generic-extra, texlive-generic-recommended, texlive-humanities, texlive-humanities-doc, texlive-lang-african, texlive-lang-arabic, texlive-lang-armenian, texlive-lang-croatian, texlive-lang-cyrillic, texlive-lang-czechslovak, texlive-lang-danish, texlive-lang-dutch, texlive-lang-finnish, texlive-lang-french, texlive-lang-german, texlive-lang-greek, texlive-lang-hebrew, texlive-lang-hungarian, texlive-lang-indic, texlive-lang-italian, texlive-lang-latin, texlive-lang-latvian, texlive-lang-lithuanian, texlive-lang-mongolian, texlive-lang-norwegian, texlive-lang-other, texlive-lang-polish, texlive-lang-portuguese, texlive-lang-spanish, texlive-lang-swedish, texlive-lang-tibetan, texlive-lang-ukenglish, texlive-lang-vietnamese, texlive-latex3, texlive-latex-base, texlive-latex-base-doc, texlive-latex-extra, texlive-latex-extra-doc, texlive-latex-recommended, texlive-latex-recommended-doc, texlive-luatex, texlive-math-extra, texlive-metapost, texlive-metapost-doc, texlive-music, texlive-omega, texlive-pictures, texlive-pictures-doc, texlive-plain-extra, texlive-pstricks, texlive-pstricks-doc, texlive-publishers, texlive-publishers-doc, texlive-science, texlive-science-doc, texlive-xetex, tipa, xmltex
Architecture: all
Description: texlive dummy package
Quelli elencati in Provides sono i pacchetti della distribuzione TeX Live che ho trovato o che comunque avevo bisogno di far finta che fossero installati, ne esistono molti altri non presenti in questo elenco. Con il comando
equivs-build texlive
ho generato il pacchetto deb che ho potuto installare con un doppio clic.

Come suggerito nella documentazione (in particolare nel manuale di equivs-build), se riscontrate qualche caso in cui il sistema delle dipendenze dei pacchetti dovrebbe essere migliorato, non usate equivs ma piuttosto segnalate agli sviluppatori il problema.

Qui trovate altre informazioni sulla gestione dei metapacchetti: http://guide.debianizzati.org/index.php/Gestione_dei_metapacchetti.

2 commenti:

  1. Ciao, ho seguito la tua guida proprio per l'installazione di TeXLive 2011. Mentre scarico il file .iso avrei una domanda: è normale che nel gestore dei pacchetti quei pacchetti presenti del pacchetto dummy non sono visti come installati?
    Grazie mille

    RispondiElimina
  2. Sì, è normale: l'unico pacchetto realmente installato è "texlive-dummy" che fornisce ("provides" in inglese) anche tutti gli altri pacchetti elencati nel campo "Provides" del file di configurazione, ma quelli non sono installati. Il metapacchetto è utile perché fa credere al gestore pacchetti che tutti i vari pacchetti (scusa le ripetizioni) relativi a TeX Live siano installati senza questi lo siano realmente!
    Ciao

    RispondiElimina

I commenti inseriti vengono lasciati dall'autore degli stessi accettandone ogni eventuale responsabilità civile e penale.
Il curatore del blog si riserva la possibilità di eliminare messaggi contenenti frasi offensive o spam.