Erstellen von Debian Paketen für Perl CPAN Module

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

Dieser Artikel zeigt wie man ein Debian Paket (.deb) für ein Perl CPAN Modul erstellen kann. Debian enthält zwar bereits viele Pakete für Perl CPAN Module, allerdings nicht alle. Daher ist die gezeigt Methode oft hilfreich, wenn man ein geringer verbreitetes CPAN Modul auf mehreren Debian Server verwenden will.

Beispielumgebung

Das gezeigte Beispiel wurde auf einem Debian 3.1 System durchgeführt. Die Vorgehensweise sollte auch mit neueren Debian Versionen weiterhin funktionieren. Im Beispiel wird ein Debian Paket für das Perl CPAN Modul HTML::Diff erstellt.

Vorbereiten eines Buildservers

Im Beispiel verwenden wir einen virtuellen Server mit Debian (deb31build.thomas-krenn.com). Bei der virtuellen Maschine handelt es sich um ein Debian 3.1 VE in Virtuozzo. Nach Instlalation dieses VE in Virtuozzo haben wir die Pakete im VE wie folgt angepasst:

echo "deb http://ftp.debian.at/debian sarge main contrib non-free" > /etc/apt/sources.list
echo "deb http://security.debian.org sarge/updates main contrib non-free" >> /etc/apt/sources.list
apt-get update
apt-get remove --purge a2ps anacron apache2-doc ash bzip2 console-tools-dev cracklib-runtime cracklib2 cvs dialog dpkg-dev emacsen-common ffingerd groff hspc-wwwroot iputils-arping iputils-tracepath ksymoops ldap-utils ldso libbind-dev libc-client2002edebian libc5 libcdb-file-perl libconvert-asn1-perl libcupsys2-gnutls10 libdevel-symdump-perl libg++2.8.1.3-glibc2.2 libgdbmg1 libglib2.0-0 libisccc0 libisccfg0 libldap-2.2-7 libmm13 libmng1 libnet-ldap-perl libnet-perl libpam-krb5 libparted1.6-12 libperl5.8 libpng3 libsablot0c102 libsnmp-base libsnmp5 libstdc++2.10-glibc2.2 libxaw7 libxft1 libxi6 libxmltok1 libxmu6 libxmuu1 libxp6 libxrandr2 libxrender1 libxslt1 libxslt1.1 libxtrap6 libxtst6 lynx mingetty mlock modconf modutils ncftp ncompress netpbm nscd nvi odbcinst1 parted perl-suid pinfo psutils pump pwgen python2.4 quota samba samba-common screen sendmail sendmail-base sendmail-bin sendmail-cf sendmail-doc sendmail-tuning slocate smbfs smsclient snmp stunnel syslinux sysutils talk talkd tcl8.4 tcl8.4-doc tcpdump tree units unixodbc usbutils wwwconfig-common xinetd xlibs popa3d expat fetchmail spamc joe libhesiod0 libsensors3 lpr metamail nmap
apt-get remove --purge apache2 apache2-common apache2-mpm-prefork apache2-utils libapr0
apt-get upgrade
apt-get install build-essential dh-make-perl devscripts
echo "thomas-krenn.com" > /etc/mailname

Erstellen des Debian Pakets

Für die Erstellung des Debian Pakets sind folgende Schritte notwendig:

  1. Installation aller CPAN Pakete, auf die das zu erstellende Paket eine Abhängigkeit hat
  2. Hinzufügen eines Users zum Erstellen und einloggen als dieser User
  3. Herunterladen des Quellcodes mit anschließendem Entpacken (unter http://kobesearch.cpan.org/ kann nach dem Quellcode gesucht werden)
  4. Aufrufen von dh-make-perl
  5. Abändern der changelog und control Datei (Hinzufügen der Abhängigkeiten)
  6. Wechseln des Verzeichnisses und Aufrufen von debuild
apt-get install libalgorithm-diff-perl
useradd -m username
su - username
wget http://cpan.uwinnipeg.ca/cpan/authors/id/E/EZ/EZRAKILTY/HTML-Diff-0.561.tar.gz
tar -pxzvf HTML-Diff-0.561.tar.gz
dh-make-perl HTML-Diff-0.561/ --desc "Debian package for HTML::Diff Perl CPAN module built by username"
cp HTML-Diff-0.561/debian/changelog changelog.orig
vi HTML-Diff-0.561/debian/changelog
diff changelog.orig HTML-Diff-0.561/debian/changelog
cp HTML-Diff-0.561/debian/control control.orig
vi HTML-Diff-0.561/debian/control
diff control.orig HTML-Diff-0.561/debian/control
cd HTML-Diff-0.561
debuild

Das Paket ist nun unter /home/username/libhtml-diff-perl_0.561-0.1_all.deb verfügbar. Dieses kann zur Kontrolle auf diesem Buildsystem installiert werden. Damit ist es auch verfügbar, falls später zu erstellende Pakete ebenfalls auf dieses Paket eine Abhängigkeit haben.

Anhang: diff Ergebnisse

changelog Datei:

username@deb31build:~$ diff changelog.orig HTML-Diff-0.561/debian/changelog
1c1
< libhtml-diff-perl (0.561-1) unstable; urgency=low
---
> libhtml-diff-perl (0.561-0.1) unstable; urgency=low
3c3
<   * Initial Release.
---
>   * Initial unofficial Release.
username@deb31build:~$ 

control Datei:

username@deb31build:~$ diff control.orig HTML-Diff-0.561/debian/control
11c11
< Depends: ${perl:Depends}, ${misc:Depends}, 
---
> Depends: ${perl:Depends}, ${misc:Depends}, libalgorithm-diff-perl
username@deb31build:~$ 

Weitere Informationen


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer, tätig im Bereich Communications / Knowledge Transfer bei Thomas-Krenn, hat sein Studium zu Computer- und Mediensicherheit an der FH Hagenberg abgeschlossen. Er ist regelmäßig Autor in Fachzeitschriften und Speaker bei Konferenzen wie LinuxCon, OSDC, OSMC, LinuxTag u.v.m. Seine Freizeit gestaltet er sehr abwechslungsreich. In einem Moment absolviert er seinen Abschluss im Klavierspielen, im anderen läuft er beim Linzmarathon in der Staffel mit oder interessiert sich für OpenStreetMap.


Das könnte Sie auch interessieren

Debian 7 32bit Libraries
SSH Login unter Debian mit fail2ban absichern
Thomas Krenn Debian Repository