Aktuelle Distributionen machen es einem sehr einfach, Software einzurichten und auch sauber wieder zu entsorgen. Die Distributoren verpacken Programme in RPM- oder DEB-Pakete und es gibt zentrale Repositories, aus denen man Software bequem nachinstallieren kann. Abhängigkeiten werden dabei automatisch aufgelöst und auch Security-Updates (für eine gewisse Frist) vom Distributor gepflegt. Eine feine Sache, die unter anderem auch dafür sorgt, dass Linuxer Virenprobleme nur aus Unterhaltungen mit Windows-Nutzern kennen.

Die Distributoren treffen beim Paketieren von Software eine Vorauswahl, die möglichst viele Anwender ansprechen soll. Freilich können Sie nicht jede frei verfügbare Software paketieren – ihre Zeit- und Festplattenressourcen sind begrenzt. Das jeweils neueste Release der Distribution soll ja auch zu einem gewissen Termin erscheinen, neue Software-Projekte und Programmversionen erscheinen dagegen täglich.

Insbesondere für Programmiersprachen wie Perl und PHP, aber auch für Software wie das Textsatzsystem LaTeX gibt es sehr viel mehr Pakete, als eine typische Distribution mitbringen könnte. Die Perlen der jeweiligen Programmierkunst lagern in eigenen Repositories, über die sie sich komfortabel nutzen lassen. Die wichtigsten davon stellt dieser Artikel kurz vor.

Perl-Module

Die Programmiersprache Perl genießt unter anderem wegen ihrer umfangreichen Modulsammlung hohe Akzeptanz. Mit dem Befehl

use Mein::Lieblingsmodul

verwenden Sie solche Module problemlos auch in eigenen Programmen. Die Modulsammlung von Perl finden Sie auf CPAN [1], dem seit Oktober 1995 aktiven Comprehensive Perl Archive Network, dessen Motto "You can never have too many Perl modules" lautet.

Dieses Motto ist wohl nicht so falsch: Zu Redaktionsschluss dieser Ausgabe umfasste das CPAN laut eigener Statistik mehr als 100 000 Perl-Module in knapp 25 000 "Distributionen", geschrieben von fast 10 000 Autoren und auf rund 300 Servern gespiegelt. Bis Sie diese Zeilen lesen, sind sicher wieder einige neue Module dazugekommen.

Vergleicht man diese Zahlen mit der Anzahl der Pakete, die beispielsweise Opensuse 12.1 standardmäßig paketiert – eine grobe Schätzung liefert das Kommando zypper search perl- | wc -l – so findet man lediglich 634 RPM-Pakete, deren Namen mit perl- beginnt, die also wohl Perl-Module enthalten.

Für Perl-Entwickler stellt Opensuse ein eigenes Repository namens devel:languages:perl bereit (Abbildung 1), das etwa 2 200 Pakete umfasst. Zwar kann ein RPM-Paket durchaus mehrere Perl-Module enthalten, aber trotzdem sieht man deutlich, dass Opensuse bei weitem nicht alle Module paketiert. In anderen Distributionen dürfte das Verhältnis ähnlich ausfallen.

Abbildung 1: Opensuse bietet ein eigenes Perl-Repository.

Um die Vielfalt des CPAN für Sie selbst zu nutzen, greifen Sie am besten zu einem der drei gängigen Paketmanager für Perl-Module: cpan, cpanm (CPAN-Minus) und cpanp (CPAN-Plus). Im folgenden beschreiben wir die Verwendung von Cpanp beschrieben, dessen wichtigste Kommandos die Tabelle "CPAN-Plus: Wichtige Befehle" aufführt. Zwei Beispiele zur Funktion von CPAN-Plus – die Installation und Deinstallation des Moduls Archive::Tar, mit dem Sie Tarballs bearbeiten – zeigt Listing 1.

CPAN-Plus: Wichtige Befehle

Befehl Funktion
cpanp m Modul suche Modul
cpanp a Autor suche Module des Autors Autor
cpanp i Modul installiere oder aktualisiere Modul
cpanp u Modul deinstalliere Modul
cpanp o finde veraltete Module

Listing 1

# cpanp i Archive::Tar
Installing Archive::Tar (1.84)
...
Result: PASS
*** Install log written to:
  /root/.cpanplus/install-logs/Archive-Tar-1.84-1336416866.log
Module 'Archive::Tar' installed successfully
No errors installing all modules
# cpanp u Archive::Tar
This will uninstall the following modules:
    Archive::Tar
Note that if you installed them via a package manager, you probably
should use the same package manager to uninstall them
Are you sure you want to continue? [y/N]: y
Uninstalling 'Archive::Tar'
Module 'Archive::Tar' uninstalled successfully
All modules uninstalled successfully

Rufen Sie CPAN-Plus ohne Optionen auf, gelangen Sie in eine Shell, wo Sie dann beispielsweise mit dem Befehl i Archive::Tar das gewünschte Modul installieren. h zeigt einen Hilfetext, mit q verlassen Sie die CPAN-Plus-Shell wieder.

Never change …

Auch wenn ein Aufruf von cpanp o viele Module zeigt, von denen es neuere Versionen gibt, ist es nicht zwangsläufig ratsam, sofort alle zu aktualisieren. Einerseits: Never change a running system – warum sollten Sie etwas ändern, wenn ohnehin alles funktioniert und Sie neue Features (und neue Bugs) gar nicht brauchen? Andererseits kommen Sie damit möglicherweise dem System-Perl (das über RPM, DEB oder sonstwie bei der Installation eingerichtet wurde) in die Quere: Dann können Sie eventuell Module, die Sie über das Distributionspaketmanagement installiert haben, nicht mehr sauber aktualisieren oder deinstallieren.

Um solche Problemchen zu vermeiden, bietet es sich gegebenenfalls an, Perl von der Projekt-Webseite [2] herunterzuladen und aus dem Quellcode eine zweite Perl-Installation einzurichten – etwa unter /opt/perl. So umgehen Sie Schwierigkeiten mit der Systeminstallation der Distribution.

Damit steht eigenen Experimenten mit den aktuellsten Versionen der neuesten Module über die selbst installierte Version in /opt/perl nichts mehr im Weg. Dazu rufen Sie dann das selbst installierte Perl mit /opt/perl/bin/perl auf, Cpanp über /opt/perl/bin/cpanp. Auf diese Weise verhindern Sie auch, dass neuere Versionen von Modulen eventuell inkompatible Änderungen einführen und damit Probleme im System verursachen.

Die Firma Activestate [3] stellt eine binäre Distribution von Perl (und auch anderen Programmiersprachen) zur Verfügung, die es auch als Community-Edition gibt. Diese Perl-Distribution bringt auch einen komfortablen grafischen Modul-Manager mit, den Perl Package Manager ppm. Mit ihm installieren Sie bequem Module, die dann nicht direkt von CPAN kommen, sondern als PPMs von der Activestate-Seite (Abbildung 2).

Abbildung 2: Der praktische Perl Package Manager von Activestate.

Pear – Extensions für PHP

Auch für die Programmiersprache PHP gibt es eine Menge Erweiterungsmodule, die sich über den eigenen Paketmanager pear installieren lassen. Haben Sie PHP ab Version 4.3.0 installiert, ist in der Regel auch Pear schon verfügbar. Die wichtigsten Befehle finden Sie in der Tabelle "Pear: Wichtige Befehle".

Pear: Wichtige Befehle

Befehl Funktion
pear help Hilfetext anzeigen
pear search Paket suche Paket
pear install Paket installiere Paket
pear upgrade Paket aktualisiere Paket
pear upgrade aktualisiere alle Pakete
pear uninstall Paket deinstalliere Paket

Pear [4] bietet neben den Haupt-Modulen auch diverse alternative Channels an, über die Sie weitere Module installieren, vergleichbar beispielsweise mit weiteren Software-Repositories in Opensuse.

Pakete bei TeX Live

Das Textsatzsystem TeX richtet man üblicherweise über das Standard-Paketmanagement der Distribution ein – mit genau den Optionen, die der Distributor dafür ausgewählt hat. Die TeX-Distribution TeX Live [5], die Standard-TeX-Distribution unter Linux/Unix, liefert auch einen umfangreichen Paketmanager mit, dieser wird bei den RPM/DEB-Paketen aber in der Regel nicht mitgeliefert. Daher lohnt es sich, TeX selbst über das Web einzurichten (Listing 2).

Listing 2

$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
$ tar xvf install-tl-unx.tar.gz
$ cd install-tl-Version
$./install-tl -gui=perltk

Das Installationsskript install-tl offeriert normalerweise nur eine Textoberfläche, die Option -gui=perltk startet die grafische Installation. Im Installationsbildschirm (Abbildung 3) wählen Sie ein Installationsschema aus, das die einzurichtenden Pakete festlegt, sowie ein Hauptinstallationsverzeichnis. Für Installationsorte wie /usr/local benötigen Sie Root-Rechte, Sie können TeX damit aber auch beispielsweise in Ihr Home-Verzeichnis installieren. Abschließend klicken Sie auf Install TeX Live.

Abbildung 3: Das Installationsmenü von TeX Live bietet zahlreiche Optionen.

Der Installer lädt die Pakete nun über das Netz und richtet die TeX-Distribution im gewünschten Verzeichnis ein. In der Vorgabe landen die Binaries dann (auf 64-Bit-Systemen) unter /usr/local/texlive/2011/bin/x86_64-linux. Sie ergänzen in der Bash noch den Suchpfad um dieses Verzeichnis (oder lassen mit der Option Create Symlinks in System directories TeX beispielsweise in /usr/local/bin Links selbst setzen), und das frisch installierte TeX Live ist einsatzfähig.

TIPP

Falls sie bereits eine TeX-Instanz über das Paketmanagement der Distribution eingerichtet haben, könnte es sein, dass diese im Suchpfad vor der selbst installierten Variante gefunden wird.

Den Paketmanager von TeX Live starten Sie mit dem Kommando tlmgr --gui im grafischen Modus (Abbildung 4). Hier wählen Sie bequem via Menü einzelne Pakete oder auch ganze Schemas zur Installation oder Deinstallation aus und aktualisieren Pakete. Auch die Optionen, die Sie bei der Grundinstallation ausgewählt haben, passen Sie gegebenenfalls via Tlmgr an.

Abbildung 4: Der komfortable grafische Paketmanager von TeX Live.

Octave-Forge

Das Mathematikprogramm GNU Octave [6] glänzt durch weitgehende Kompatibilität zum kommerziellen Matlab. Auch für Octave gibt es eine Sammlung an zusätzlichen Paketen, die Sie über einen eigenen Paketmanager nachinstallieren können: Octave-Forge. Eine Übersicht über die zusätzlichen Pakete finden Sie auf der Octave-Forge-Webseite [7].

Pkg: Wichtige Befehle

Befehl Funktion
help pkg Hilfetext ausgeben
pkg install Paket.tar.gz bereits heruntergeladenes Paket installieren
pkg install -forge Modul Paket Modul direkt von Octave-Forge installieren.
pkg uninstall Paket Paket deinstallieren
pkg update Update aller Pakete
pkg list zeige installierte Pakete
pkg describe Paket beschreibe Paket
pkg describe all beschreibe alle Pakete

Der Octave-Befehl pkg dient zur Paketadministration, seine wichtigsten Optionen zeigt die Tabelle "Pkg: Wichtige Befehle". Um etwa das Paket strings einzurichten, geben Sie den Befehl aus Listing 3 ein. Im Erfolgsfall liefert er nur eine recht schmallippige Meldung.

Listing 3

octave:1> pkg install -forge strings
For information about changes from previous versions of the strings package, run 'news ("strings")'.

Tauchen dagegen zahlreiche Meldungen auf, wie in Listing 4, ist etwas schiefgegangen – aber was? Um das Paket zu kompilieren, benötigt Octave die Datei hdf5.h, und diese wurde nicht gefunden (Zeile 10). In so einem Fall benötigt man oft etwas Fantasie, um herauszufinden, wo genau es hapert. In diesem Fall fehlte das Paket hdf5-devel (also die Header-Dateien zur Bibliothek hdf5), das wir über das Paketmanagement der Distribution nachinstallieren mussten.

Listing 4

octave:1> pkg install -forge strings
In file included from /usr/include/octave-3.6.1/octave/../octave/ov.h:43:0,
                 from /usr/include/octave-3.6.1/octave/../octave/oct-obj.h:34,
                 from /usr/include/octave-3.6.1/octave/../octave/ov-fcn.h:32,
                 from /usr/include/octave-3.6.1/octave/../octave/ov-builtin.h:28,
                 from /usr/include/octave-3.6.1/octave/../octave/defun-int.h:28,
                 from /usr/include/octave-3.6.1/octave/../octave/defun-dld.h:30,
                 from /usr/include/octave-3.6.1/octave/../octave/oct.h:36,
                 from pcregexp.cc:24:
/usr/include/octave-3.6.1/octave/../octave/oct-hdf5.h:27:18: fatal error: hdf5.h: Datei oder Verzeichnis nicht gefunden
compilation terminated.
make: *** [pcregexp.oct] Fehler 1
'make' returned the following error: make: Entering directory `/tmp/oct-iUl5nt/strings/src'
mkoctfile -Wall pcregexp.cc
make: Leaving directory `/tmp/oct-iUl5nt/strings/src'
error: called from `pkg>configure_make' in file /usr/share/octave/3.6.1/m/pkg/pkg.m near line 1385, column 9
error: called from:
error:   /usr/share/octave/3.6.1/m/pkg/pkg.m at line 827, column 5
error:   /usr/share/octave/3.6.1/m/pkg/pkg.m at line 383, column 9

Verwendet man selbst nachinstallierte Module und Pakete, gilt es gut aufzupassen, sobald man etwas über das Distributionspaketmanagement deinstalliert: Die händisch eingerichteten Module benötigen zwar oft diverse Bibliotheken und Programme, die entsprechenden Abhängigkeiten sind jedoch nicht in der RPM- oder Dpkg-Datenbank registriert. Es entfällt also im Falle einer Deinstallation von RPM/DEB-Paketen jede Warnung, dass dadurch möglicherweise eine Abhängigkeit verletzt wird.

Fazit

Viele Software-Projekte bieten eingebaute Erweiterungsmöglichkeiten, die der Distributor häufig nicht alle paketieren und zur Verfügung stellen kann. Ähnliche Mechanismen für Erweiterungsmodule wie die vorgestellten gibt es beispielsweise auch für die populären Skriptsprachen Python (pip, easy_install) und Ruby (RubyGems).

Die Nutzung solcher projektspezifischen Zusatzpakete kann viel Programmierarbeit ersparen und Anwendungen komfortabler machen. Sie müssen allerdings etwas aufpassen, dass sich das software- und das distributionseigene Paketmanagement nicht ins Gehege geraten. Im Gegenzug erhalten Sie leistungsfähigere Software, als sie der Distributor jemals liefern könnte. 

Glossar

Pear

Das Kürzel steht für PHP Extension and Application Repository. Daneben gibt es für PHP auch noch PECL, die PHP Extension Community Library.

Infos

[1] CPAN: http://www.cpan.org

[2] Perl-Source: http://www.perl.org/get.html

[3] Activestate Perl: http://www.activestate.com

[4] PHP PEAR: http://pear.php.net/

[5] TeX Live: http://www.tug.org/texlive/

[6] GNU Octave: http://www.gnu.org/software/octave/

[7] Octave-Forge: http://octave.sourceforge.net/

Der Autor

Der Systemadministrator Wolfgang Dautermann hat neben vielen Linux-Varianten auch schon diverse andere Unix-Systeme gebändigt, darunter Solaris, Irix und Tru64. Er zählt zu den Organisatoren der Grazer Linux-Tage.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare