Robitex's Blog

Ideas in the web

Kile e TeX Live 2010 su sistemi Ubuntu


Eleganza d’installazione

La gestione del software su un sistema Linux si avvale di solito di una infrastruttura a pacchetti: il reperimento dei file, l’installazione, l’aggiornamento e la rimozione dei programmi, sono tutte operazioni che si avvalgono di repository (un insieme di server internet) ed un software locale chiamato package manager.

I vantaggi di questo sistema sono molti: dal lato utente tutto il parco software sulla propria macchina è gestibile con la stessa unica semplice procedura compreso l’aggiornamento automatico mentre, dal lato del distributore, i repository consentono di controllare e predisporre opportunamente l’insieme dei programmi e delle librerie impostandone le politiche di sicurezza e di affidabilità.

Questo ordine è sconosciuto agli utenti Windows che si ritrovano i problemi dovuti al Registro di sistema, alle disinstallazioni mai perfette, al download manuale dei file da mille siti diversi e l’assenza di policy di sicurezza per il software…

Una delle migliori implementazioni del sistema dei pacchetti è quella di Debian, e quindi anche di Ubuntu, ma proprio le politiche di sicurezza particolarmente attente di queste distribuzioni, in alcuni casi possono diventare un po’ ingombranti.

Per esempio, se si installa la distribuzione TeX Live dai repository si ottiene una versione non recente e soprattutto un sistema privo dell’utility tlmgr creato per la manutenzione automatica della distro. Di solito quindi gli utenti installano TeX Live direttamente da CTAN, che anch’esso altro non è che un sistema pacchettizzato per il mondo TeX!

Anch’io sulla mia Ubuntu Lucid tengo una fiammante TeX Live 2010 installata con la procedura che ho descritto in questo post, che gestisco brillantemente attraverso il repository multipiattaforma CTAN.

Tutto perfetto ed allora perché ci vieni a raccontare queste banalità? direte voi. Pronto come un fulmine, vi risponderei: Provate ad installare Kile!

Kile è un ottimo editor specializzato per il mondo TeX a cui si accede scrivendo un sorgente in formato testo e quindi appunto con un qualsiasi editor. Ricorrendo ai repository ufficiali basterebbe digitare il comando seguente in una finestra di terminale (apt sta per Advanced Packaging Tool ed è appunto il gestore dei pacchetti di Debian/Ubuntu):

sudo apt-get install kile

Vi accorgereste ben presto che l’installazione di Kile comporta l’installazione automatica ed obbligatoria della TeX Live che risiede nei repository, ops. Infatti i pacchetti di Kile hanno come dipendenza obbligatoria i pacchetti texlive-base-bin e texlive-latex-base, come potete verificare nella pagina descrittiva del pacchetto kile per Lucid.

Eleganza della soluzione

La cosa più semplice per risolvere il problema è non considerarlo un problema, per esempio rinunciando a Kile o procedendo ugualmente all’installazione dell’editor, magari con l’opzione per apt –no-install-recommends, e continuando ad usare la TeX Live 2010 ed ignorando l’altra dei repository.

Non mi pare una modo elegante di procedere, ed allora che fare? Uhmm, si potrebbe scaricare sempre dai repository il codice sorgente di Kile, compilarlo, creare un pacchetto (l’estensione è .deb), ed installarlo sulla propria macchina con apt. Una soluzione che si basa su una sorta di repository locale. Ottimo e geniale. Peccato che serve almeno un pomeriggio intero e che sia una procedura proponibile solo per coraggiosi sperimentatori che vogliono scalare questa vetta dell’Himalaya dei pacchetti.

Altre idee?
Basterebbe imbrogliare il gestore dei pacchetti facendogli credere che i pacchetti ufficiali di TeX Live siano già installati sul sistema!

A parte il fatto che questa soluzione ha un qualcosa della furberia pratica italiana, la cosa strana è che tecnicamente è possibilissima da realizzare ed è quanto andrò ad esporre nella prossima sezione poiché la giudico… sufficientemente elegante!

Eleganza operativa

Useremo l’utility equivs il cui scopo è quello di “Circumvent Debian package dependencies”, cercando di falsare l’installazione del minor numero di pacchetti possibili.

Avvertenze: Per seguire la procedura è sufficiente un minimo di esperienza con il terminale di Linux, ma se non l’avete forse è proprio questa l’occasione di farsela. Ancora, Kile è un editor per l’ambiente KDE non per Gnome, ma si può installare anche per quest’ultimo desktop environment (almeno io non ho mai avuto grossi problemi).

Passo zero: installare equivs
Probabilmente equivs non è installato sul vostro sistema, quindi aprite un terminale e date il classico comando per apt (paradossale installare un pacchetto per imbrogliare il sistema di pacchetti con il sistema di pacchetti stesso, vero?):

sudo apt-get install equivs

Passo uno: costruire il dummy package
L’eleganza della procedura basata su equivs sta nel fatto che è perfettamente reversibile e che l’utente può operare mettendoci un po’ della sua arte e l’arte sta nel trovare il più piccolo insieme di pacchetti da far considerare al sistema come installati.

Tentando di installare Kile senza i pacchetti raccomandati, il package manager ci fornisce l’elenco dei pacchetti la cui installazione è obbligatoria:

roberto@roberto-desktop:~$ sudo apt-get install kile --no-install-recommends
[sudo] password for roberto: 
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze       
Lettura informazioni sullo stato... Fatto
I seguenti pacchetti saranno inoltre installati:
  kdebase-runtime kdebase-runtime-data kdelibs-bin kdelibs5 kdelibs5-data
  konsole libattica0 libclucene0ldbl libdbusmenu-qt2 libexiv2-6 libiodbc2
  libphonon4 libplasma3 libpolkit-qt-1-0 libqca2 libqt4-designer
  libqt4-network libqt4-opengl libqt4-qt3support libqt4-sql libqt4-webkit
  libqt4-xmlpatterns libsoprano4 libssh-4 libstreamanalyzer0 libstreams0
  libxcb-shape0 libxcb-shm0 libxcb-xv0 libxine1 libxine1-bin libxine1-console
  libxine1-misc-plugins libxine1-x luatex oxygen-icon-theme
  phonon-backend-xine plasma-scriptengine-javascript shared-desktop-ontologies
  soprano-daemon tex-common texlive-base texlive-binaries texlive-common
  texlive-doc-base texlive-latex-base
Pacchetti suggeriti:
  djvulibre-bin hspell kile-doc libqca2-plugin-cyrus-sasl libqca2-plugin-gnupg
  libqca2-plugin-ossl libqca2-plugin-pkcs11 libqt4-dev gxine xine-ui
  libxine1-doc libxine-doc libxine1-ffmpeg kcm-phonon-xine debhelper
Pacchetti raccomandati:
  icoutils kubuntu-debug-installer ttf-dejavu asymptote context dblatex
  dvipdfmx dvipng kbibtex pybliographer gbib jabref latex2html lilypond
  psutils tex4ht texlive-metapost texlive-xetex exiv2 libqt4-sql-mysql
  libqt4-sql-odbc libqt4-sql-psql libqt4-sql-sqlite libqt4-sql-sqlite2
  texlive-luatex virtuoso-nepomuk lmodern texlive-latex-base-doc
I seguenti pacchetti NUOVI saranno installati:
  kdebase-runtime kdebase-runtime-data kdelibs-bin kdelibs5 kdelibs5-data kile
  konsole libattica0 libclucene0ldbl libdbusmenu-qt2 libexiv2-6 libiodbc2
  libphonon4 libplasma3 libpolkit-qt-1-0 libqca2 libqt4-designer
  libqt4-network libqt4-opengl libqt4-qt3support libqt4-sql libqt4-webkit
  libqt4-xmlpatterns libsoprano4 libssh-4 libstreamanalyzer0 libstreams0
  libxcb-shape0 libxcb-shm0 libxcb-xv0 libxine1 libxine1-bin libxine1-console
  libxine1-misc-plugins libxine1-x luatex oxygen-icon-theme
  phonon-backend-xine plasma-scriptengine-javascript shared-desktop-ontologies
  soprano-daemon tex-common texlive-base texlive-binaries texlive-common
  texlive-doc-base texlive-latex-base
0 aggiornati, 47 installati, 0 da rimuovere e 5 non aggiornati.
è necessario scaricare 81,1MB di archivi.
Dopo quest'operazione, verranno occupati 250MB di spazio su disco.
Continuare [S/n]? n
Interrotto.

Ecco che possiamo toccare con mano il problema: tra i pacchetti di libreria troviamo anche luatex, tex-common, texlive-base, texlive-binaries, texlive-common, texlive-doc-base e texlive-latex-base, ovvero tutti pacchetti già “manualmente” installati da CTAN e proprio per questo non notificati al sistema.

Bando agli indugi, prepariamo un file di testo di nome texlive.ctl (l’estensione sta per control) in cui ciascuna riga sia formata dalla sintassi Chiave: lista di valori (attenzione tutti i valori devono essere scritti su un unica riga anche se, per esempio, la lista dei pacchetti fosse molto lunga):

Section: tex
Package: texlive-dummy-essential-for-kile
Provides: luatex, tex-common, texlive, texlive-base, texlive-base-bin, texlive-binaries, texlive-common, texlive-doc-base, texlive-latex-base
Description: texlive dummy essential package. This fake package provides to the package system the information that the texlive essential packages are installed, so you can install kile with a CTAN TeX Live installation.

Mettete la vostra arte nel costruire il file di controllo con l’elenco dei pacchetti misurato secondo le vostre esigenze ma comunque sempre essenziale, e compilatelo con il comando:

equivs-build texlive.ctl

Verrà magicamente costruito il dummy package con il nome texlive-dummy-essential-for-kile_1.0_all.deb.

Passo due: installare il dummy package
Bene, installate il “paccetto” appena nato direttamente con:

sudo dpkg -i texlive-dummy-essential-for-kile_1.0_all.deb

Passo tre: installare Kile
Possiamo adesso rilanciare lo stesso comando precedente per installare Kile con apt (l’opzione –no-install-recommends è importante):

sudo apt-get install kile --no-install-recommends

Un controllo sull’output confermerà che nell’elenco dei pacchetti nuovi da installare non saranno più presenti quelli relativi a TeX Live (altrimenti interrompete l’installazione, rimuovete con il comando sudo apt-get remove texlive-dummy-essential-for-kile_1.0_all, il dummy package e ricostruitene uno adatto modificando il file di controllo).

Giunti fino a qui, Kile sarà installato correttamente perché avrà automaticamente agganciato la TeX Live 2010 (lo vedete in splendida forma nello screenshot sottostante), e sul vostro sistema non vi saranno pacchetti inutili.

Kile in action

Kile in action

Ringraziamenti

Ringrazio il Professor Claudio Beccari che mi ha solleticato questo complemento alla guida all’installazione di TeX Live 2010, e l’utente capitalaslash che con questo post sul forum di GuIT mi ha indicato la strada.

Grazie a tutti ed alla prossima.

5 risposte a “Kile e TeX Live 2010 su sistemi Ubuntu

  1. Bit3Lux 12/10/2010 alle 12:16

    Guida favolosa!

    Complimenti per l’esposizione chiara e concisa!

    Non ero a conoscenza del “–no-install-recommends”

    Perciò Grazie! 🙂

  2. Matteo 22/10/2010 alle 03:31

    La soluzione piu’ elegante (ma non disponibile, mi risulta) sarebbe la seguente:
    dopo il download e l’estrazione, il pacchetto controlla una variabile d’ambiente tipo USE_LATEX_DIST=texlive o quel che e’, e aggiusta le dipendenze.

    • robitex 22/10/2010 alle 08:37

      Una cosa del genere semplificherebbe la vita agli utenti.
      ma… ti posso chiedere cosa succederebbe in FreeBSD in una situazione del genere?
      Immagino che il sistema dei package e dei ports sia più flessibile, o no?
      Ciao e grazie.

  3. myAdmin 29/01/2014 alle 10:08

    Ciao Robitex,
    Io ho un Debian 7.3 KDE su cui ho installato TEXLIve 2013 con interfaccia grafica perl-tk. In fase d’installazione ho spuntato la casellina di “Crea symlinks nelle directory di sistema”. Ora sto cercando di installare Kile (che senso ha altrimenti, avere un desktop KDE?). Anche chi ha già un ambiente KDE deve crearsi i dummy packages? Insomma posso seguire la tua guida ad occhi chiusi? Lo chiedo perché sono molto pratica di Debian…

    • robitex 29/01/2014 alle 12:11

      Ciao,
      a logica si.
      È sufficiente che tu controlli le dipendenze del pacchetto kile per la tua Debian per rendertene conto.
      La guida dovrebbe quindi essere ancora valida e valida anche per Debian visto che il sistema di pacchetti è lo stesso che quello di Ubuntu.
      Alla prossima.

Lascia un commento