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.
- Debianisierte CPAN-Pakete
- cpan2dist
- dh-make-perl
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.