CPAN-Module für Ubuntu mit dem Debian Package Manager installieren

| | Kommentare (1)

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.

  1. Debianisierte CPAN-Pakete
  2. cpan2dist
  3. 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:

  1. Top-Favorit:debianisierte CPAN-Pakete.
  2. cpan2dist, falls ich mit Methode 1 nicht fündig werde.
  3. dh-make-perl verwende ich so gut wie nie.

1 Kommentare

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

Jetzt kommentieren

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Thomas Fahle vom 23.06.08 23:30.

Zufallszahlen (Pseudo Random Numbers) mit Bordmitteln erzeugen ist der vorherige Eintrag in diesem Blog.

SMTP via Telnet ist der nächste Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.