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

Veröffentlicht von Thomas Fahle am (Permalink)

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.

Weitere Posts