Robitex's Blog

Ideas in the web

Archivi Mensili: ottobre 2010

Free as FreeBSD


Ciao, solo per dirvi che ho installato sul PC in una piccola partizione FreeBSD.

Stavo valutando la possibilità di installare una distribuzione Linux come OpenSuse o Fedora, quando improvvisamente ho capito che cercavo qualcosa di completamente nuovo.

FreeBSD è un sistema operativo che ha profonde radici nella storia stessa dell’informatica. Le sue qualità sono fuori da qualsiasi discussione, tuttavia non è una passeggiata configurare correttamente il sistema, ma basta studiarsi la documentazione, in particolare l’Handbook, che quasi sempre si trova la soluzione.

Ho installato il server Xorg ed il desktop enviroment XFCE, configurato mouse, USB device, tastiera, ho sostituito la shell di default con bash (cosa di cui mi sono poi pentito), creato gruppi ed account di lavoro, installato Firefox e naturalmente TeX LIve 2010. Insomma, qualcosa di completamente nuovo.
Il lavoro di configurazione che tra l’altro non ho ancora terminato, forse è tempo che Ubuntu ti fa risparmiare, ma la sensazione di libertà equivale a quella dello scalatore che raggiunge la vetta.

My XFCE desktop screenshot

My XFCE desktop screenshot

Un quadro strutturale


Come volevasi dimostrare

Un’idea è sempre un’idea.
Sto osservando lo schermo che propone viste tridimensionali di una struttura a telaio i cui elementi hanno colori casuali, a volte scelti in automatico senza un criterio dal software di modellazione durante le operazioni di modifica.

Osservo lo schermo e, ad un tratto, mi sembra di vedere una composizione. Eccola (intanto che ammirate vi saluto, ciao):

Quadro strutturale n. 1

Quadro strutturale n. 1

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.

%d blogger hanno fatto clic su Mi Piace per questo: