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.
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.