Die für Ubuntu bereitgestellten CPAN-Pakete sind leider nicht sonderlich zahlreich und auch nicht immer ganz taufrisch.
Die Installation mittels
perl -MCPAN -e shell
ignoriert das Debian-Package-Management leider vollständig. Für gestandene Systemadminstratoren ein Alptraum.
Erfreulicherweise gibt es mehrere Möglichkeiten aktuelle CPAN-Module für Debian basierte Linuxe im Einklang mit dem Debian-Paketmanagement zu installieren.
Methode 1: Debianisierte CPAN-Pakete
Für die Installation von CPAN-Modulen auf Debian basierten Linuxen gibt es bereits aktuelle debianisierte CPAN-Pakete bei http://debian.pkgs.cpan.org/.
Schritt 1: /etc/apt/sources.list anpassen
Dazu einfach folgende Zeile in /etc/apt/sources.list einfügen
deb http://debian.pkgs.cpan.org/debian unstable main
Schritt 2: Repository-Liste aktualisieren
$ sudo apt-get update .... Ign http://debian.pkgs.cpan.org unstable Release.gpg Ign http://debian.pkgs.cpan.org unstable/main Translation-de Ign http://debian.pkgs.cpan.org unstable Release Ign http://debian.pkgs.cpan.org unstable/main Packages Hole:1 http://debian.pkgs.cpan.org unstable/main Packages [32,6kB] Es wurden 32,6kB in 1s geholt (19,6kB/s) Paketlisten werden gelesen... Fertig
Schritt 3: Repository durchsuchen
Alle Debian-CPAN-Pakete sind mit dem Prefix cpan- gekennzeichnet, so kann man sie von den Standardpaketen unterscheiden.
$ apt-cache search cpan- bioperl - Perl tools for computational molecular biology libcpan-distnameinfo-perl - Extract distribution name and version from a distribution filename libcpan-mini-perl - create a minimal mirror of CPAN libparse-cpan-packages-perl - Perl module to parse 02packages.details.txt.gz libtest-reporter-perl - sends test results to cpan-testers@perl.org liblingua-en-numbers-ordinate-perl - Perl-Modul zur Konvertierung von Kardinalzahlen in Ordinalzahlen .....
Schritt 4: CPAN-Module installieren
Beispiel YAML installieren
$ sudo apt-get install cpan-libyaml-perl Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut Reading state information... Fertig Die folgenden NEUEN Pakete werden installiert: cpan-libyaml-perl 0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen noch 0B von 47,6kB Archiven geholt werden. After this operation, 381kB of additional disk space will be used. WARNUNG: Die folgenden Pakete können nicht authentifiziert werden! cpan-libyaml-perl Diese Pakete ohne Überprüfung installieren [j/N]? j Wähle vormals abgewähltes Paket cpan-libyaml-perl. (Lese Datenbank ... 187518 Dateien und Verzeichnisse sind derzeit installiert.) Entpacke cpan-libyaml-perl (aus .../cpan-libyaml-perl_0.66-1_all.deb) ... Richte cpan-libyaml-perl ein (0.66-1) ...
Prüfen, ob das Paket installiert wurde.
$ dpkg -l | grep cpan-libyaml ii cpan-libyaml-perl 0.66-1 YAML Ain't Markup Language (tm)
Installierte YAML-Version prüfen:
$ perl -MYAML -le "print YAML->VERSION"; 0.66
Ein Blick auf YAML auf CPAN, zeigt uns, das die aktuelle Version installiert wurde.
So einfach geht's. Sehr schön.
Parallele Installation der Pakete
Es ist ohne weiteres möglich, debianisierte CPAN-Pakete und Ubuntu Pakete gleichzeitig zu installieren.
$ sudo apt-get install libyaml-perl $ sudo apt-get install cpan-libyaml-perl $ dpkg -l | grep yaml ii cpan-libyaml-perl 0.66-1 YAML Ain't Markup Language (tm) ii libyaml-perl 0.62-1 YAML Ain't Markup Language (tm)
Die beiden Module werden in unterschiedliche Verzeichnisstrukturen installiert, was sich einfach prüfen lässt.
$ dpkg -L libyaml-perl ... /usr/share/doc/libyaml-perl /usr/share/perl5/YAML.pm ... $ dpkg -L cpan-libyaml-perl ... /usr/share/doc/cpan-libyaml-perl /usr/local/share/perl/5.8.8/YAML ...
Welche Modulversion verwendet wird, hängt vom @INC ab, i.d.R. wird die debianisierte CPAN-Paket-Version vor der Ubuntu-Version geladen.
Das gilt auch für mitgelieferte Komandozeilen-Tools.
$ which ysh /usr/local/bin/ysh $ dpkg -S /usr/local/bin/ysh cpan-libyaml-perl: /usr/local/bin/ysh $ dpkg -S /usr/bin/ysh libyaml-perl: /usr/bin/ysh
Welches der beiden Tools verwendet wird, hängt von der Umgebungsvariable $PATH ab.
Methode 2: Debian-Pakete mit cpan2dist selbst erstellen
Wer jetzt immer noch nicht fündig geworden ist, kann mit cpan2dist auch selbst Debian-Pakete erstellen.
Zunächst die benötigten Pakete installierten
$ sudo apt-get install cpan-libcpanplus-perl $ sudo apt-get install cpan-libcpanplus-dist-build-perl $ sudo apt-get install cpan-libcpanplus-dist-deb-perl
Beispiel: Debian-Paket für HTML::Template::Compiled erstellen
cpan2dist kann auch alle Abhängigkeiten auflösen (--buildprereq).
$ cpan2dist --format CPANPLUS::Dist::Deb --buildprereq HTML::Template::Compiled ... Created 'CPANPLUS::Dist::Deb' distribution for HTML::Template::Compiled to: ~/.cpanplus/5.8.8/dist/debian/main/pool/cpan-lib/h/cpan-libhtml-template-compiled-perl/cpan-libhtml-template-compiled-perl_0.91-1_all.deb
Ins das o.g. Verzeichnis wechseln
$ cd ~/.cpanplus/5.8.8/dist/debian/main/pool/cpan-lib/h/cpan-libhtml-template-compiled-perl $ ls cpan-libhtml-template-compiled-perl_0.91-1_all.deb cpan-libhtml-template-compiled-perl_0.91-1_i386.changes cpan-libhtml-template-compiled-perl_0.91-1.diff.gz cpan-libhtml-template-compiled-perl_0.91.orig.tar.gz cpan-libhtml-template-compiled-perl_0.91-1.dsc
und das Paket inspizieren
$ dpkg -I cpan-libhtml-template-compiled-perl_0.91-1_all.deb neues Debian-Paket, Version 2.0. Größe 66034 Byte: control-Archiv= 1454 Byte. 405 Byte, 11 Zeilen control 3328 Byte, 35 Zeilen md5sums Package: cpan-libhtml-template-compiled-perl Version: 0.91-1 Architecture: all Maintainer: cpanplus@example.com Installed-Size: 452 Depends: libpathtools-perl | cpan-libpathtools-perl, libtest-simple-perl | cpan-libtest-simple-perl, perl (>= 5.8.8) Provides: libhtml-template-compiled-perl Section: perl Priority: optional Description: Simple and fast templating module Simple and fast templating module
Das CPAN-Modul kann jetzt mit dpkg installiert werden.
$ sudo dpkg -i cpan-libhtml-template-compiled-perl_0.91-1_all.deb Wähle vormals abgewähltes Paket cpan-libhtml-template-compiled-perl. (Lese Datenbank ... 188201 Dateien und Verzeichnisse sind derzeit installiert.) Entpacke cpan-libhtml-template-compiled-perl (aus cpan-libhtml-template-compiled-perl_0.91-1_all.deb) ... Richte cpan-libhtml-template-compiled-perl ein (0.91-1) ...
Prüfen ob das Paket installiert wurde.
$ dpkg -l | grep compiled ii cpan-libhtml-template-compiled-perl 0.91-1 Simple and fast templating module
Noch schnell die installierte HTML::Template::Compiled Version prüfen:
$ perl -MHTML::Template::Compiled -le "print HTML::Template::Compiled->VERSION"; 0.91
Cool!
Methode 3: dh-make-perl
dh-make-perl ist eine weitere einfache Möglichkeit CPAN-Pakete zu debianisieren.
Zunächst dh-make-perl installieren
$ sudo apt-get install dh-make-perl
Beispiel: Debian-Paket für HTML::Template erstellen
$ mkdir /tmp/debian/ $ cd /tmp/debian/ $ dh-make-perl --build --cpan HTML::Template ... $ ls -l drwxr-xr-x 7 ... HTML-Template-2.9 -rw-r--r-- 1 ... libhtml-template-perl_2.9-1_all.deb
und das Paket inspizieren
dpkg -I libhtml-template-perl_2.9-1_all.deb neues Debian-Paket, Version 2.0. Größe 64106 Byte: control-Archiv= 1044 Byte. 1052 Byte, 24 Zeilen control 554 Byte, 7 Zeilen md5sums Package: libhtml-template-perl Version: 2.9-1 Architecture: all Maintainer: ............. Installed-Size: 208 Depends: perl (>= 5.6.0-16) Section: perl Priority: optional Homepage: http://search.cpan.org/dist/HTML-Template/ Description: Perl module to use HTML Templates from CGI scripts This module attempts to make using HTML templates simple and natural. It extends standard HTML with a few new HTML-esque tags - <TMPL_VAR>, <TMPL_LOOP>, <TMPL_INCLUDE>, <TMPL_IF>, <TMPL_ELSE> and <TMPL_UNLESS>. The file written with HTML and these new tags is called a template. It is usually saved separate from your script - possibly even created by someone else! Using this module you fill in the values for the variables, loops and branches declared in the template. This allows you to separate design - the HTML - from the data, which you generate in the Perl script. . This module is licensed under the GPL. See the LICENSE section below for more details. . This description was automagically extracted from the module by dh-make-perl.
Das CPAN-Modul kann jetzt mit dpkg installiert werden.
$ sudo dpkg -i libhtml-template-perl_2.9-1_all.deb
Welche der drei Methoden soll ich verwenden?
Hier meine persönliche Vorgehensweise:
- Top-Favorit:debianisierte CPAN-Pakete.
- cpan2dist, falls ich mit Methode 1 nicht fündig werde.
- dh-make-perl verwende ich so gut wie nie.
danke für die hilfreiche zusammenstellung! hat mir im cpan-abhängigkeits-dschungel deutlich geholfen!
allerdings hab ich mal nicht schlecht gestaunt, aus wie vielen dependencys net::amazon bei cpan2dist zusammengebastelt wird... da rennt man locker ins default timeout von 300 sekunden, aber das lässt sich einfach per parameter '--timeout 0' beheben.
zudem sollte an dieser stelle vielleicht noch angemerkt werden, dass fürs korrekte funktionieren von cpan2dist noch die pakete 'fakefoot' und 'debhelper' vonnöten sind, sonst wird gemeckert, das 'dh_perl' fehlt und 'Deb' nicht als zieldistri bekannt ist.
bei modulen, wo gleich noch mehrere abhängige module dazu gebaut werden, bietet es sich ferner an, alle erzeugten .deb's in ein lokales repository zu kopieren und dann z.b. per apt zu installieren. zum einen spart man sich nen haufen tipparbeit, des weiteren sind in meinem fall noch weitere abhängigkeiten ausserhalb des cpan fällig geworden. mit 'dpkg -i' wär das wohl etwas gemurkse geworden...
greez - anti