Tutorials - Debian Paketbau

Sprachenübersicht/Betriebssysteme/Linux/Debian

Debian Paketbau

Diese Seite wurde 2320 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: debian package paket build bau howto tutorial guide

Inhaltsverzeichnis



Vorwort Top


Auch bei Debian kommt hin und wieder der Punkt, an dem ein Programm nicht im Repository enthalten ist. Für den geübten Sysadmin ist es keine größere Schwierigkeit, sich seine Software selbst zu kompilieren - wenn jedoch das Programm auf mehreren Servern gemischter CPU-Architektur installiert werden soll, auf denen keine Compiler vorhanden sind, lohnt es sich, einen Blick auf das Erstellen von Softwarepaketen zu werfen.

Explizit möchte ich alle, die in diesem Tutorial Fehler finden, dazu einladen, sie zu korrigieren bzw. das Tutorial als Ganzes zu verbessern.

Vorbereitung Top


Zunächst werden auf einem Debian-System die build-essential sowie dh-make benötigt. Diese lassen sich unkompliziert mit einem aptitude install dem System hinzufügen.

Code:


aptitude install build-essential dh-make
mkdir ~/debbuild
cd ~/debbuild



Für den Paketbau machen wir uns nun ein eigenes Verzeichnis im Home namens debbuild und wechseln in dieses.

Dort laden wir als erstes das Quellcode-Archiv des Programms, das wir verpacken möchten, herunter.

Code:


wget http://www.consol.de/fileadmin/opensource/Nagios/check_logfiles-3.0.tar.gz
mkdir check-logfiles-3.0 # Name des Pakets und Versionsnummer als Ordnername, Underscore nicht erlaubt
cd check-logfiles-3.0
dh_make -f ../check_logfiles-3.0.tar.gz -s -e j.g@example.com -r -c gpl



  • -c Lizenz (gpl)


  • -r Kopieren des Source-Archivs mit dem neuen Namen check-logfiles-3.0.orig.tar.gz


  • -e Email des Paketbauers


  • -s Singe-Binary-Paket


  • -f Pfad zum Quellcode-Archiv



Im Unterverzeichnis debian alle Dateien, bis auf die wirklich für diese Paket benötigten, löschen.

In diesem Beispiel blieben folgende Dateien erhalten:

Code:


# ls -la debian/
total 44
drwxr-xr-x 3 julian julian 4096 2009-06-29 23:12 .
drwxr-xr-x 5 julian julian 4096 2009-06-29 23:07 ..
-rw-r--r-- 1 julian julian  197 2009-06-29 23:07 changelog
-rw-r--r-- 1 julian julian    2 2009-06-29 23:07 compat
-rw-r--r-- 1 julian julian  424 2009-06-29 23:07 control
-rw-r--r-- 1 julian julian 1410 2009-06-29 23:07 copyright
-rw-r--r-- 1 julian julian   23 2009-06-29 23:07 dirs
-rwxr-xr-x 1 julian julian 1915 2009-06-29 23:07 rules



Die Dateien wurden wie folgt abgeändert:

changelog:


check-logfiles (3.0-1) unstable; urgency=low

  * Initial release

 -- Julian Golderer <j.g@example.com>  Mon, 22 Jun 2009 22:45:32 +0200



compat:


7



control:


Source: check-logfiles
Section: unknown
Priority: extra
Maintainer: Julian Golderer <j.g@example.com>
Build-Depends: debhelper (>= 7)
Standards-Version: 3.7.3
Homepage: http://www.consol.de/opensource/nagios/check-logfiles

Package: check-logfiles
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Nagios plugin which checks logfiles incremental
 <insert long description, indented with spaces>



copyright:


This package was debianized by Julian Golderer <j.g@example.com> on 
Mon, 22 Jun 2009 22:45:32 +0200.                                        

It was downloaded from <url://http://www.consol.de/opensource/nagios/check-logfiles>

Upstream Author(s):

    Gerhard Laußer <gerhard.lausser@consol.de>

Copyright:

    <Copyright (C) 2007 Gerhard Laußer>

License:

    This package is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This package is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this package; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.

The Debian packaging is (C) 2009, Julian Golderer <j.g@example.com> and
is licensed under the GPL, see above.


# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.



dirs:


usr/lib/nagios/plugins



rules:


#!/usr/bin/make -f                                                                                                                                      
# -*- makefile -*-                                                                                                                                      
# Sample debian/rules that uses debhelper.                                                                                                              
# This file was originally written by Joey Hess and Craig Small.                                                                                        
# As a special exception, when this file is copied by dh-make into a                                                                                    
# dh-make output file, you may use that output file without restriction.                                                                                
# This special exception was added by Craig Small in version 0.37 of dh-make.                                                                           

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1                     





configure: configure-stamp
configure-stamp:          
        dh_testdir        
        # Add here commands to configure the package.
        dh_auto_configure -- --prefix=/usr/lib/nagios --libexecdir=\${prefix}/plugins

        touch configure-stamp


build: build-stamp

build-stamp: configure-stamp  
        dh_testdir            

        # Add here commands to compile the package.
        $(MAKE)                                    
        #docbook-to-man debian/check-logfiles.sgml > check-logfiles.1

        touch $@

clean: 
        dh_testdir
        dh_testroot
        rm -f build-stamp configure-stamp

        # Add here commands to clean up after the build process.
        dh_auto_clean                                           
        dh_clean                                                

install: build
        dh_testdir
        dh_testroot
        dh_prep    
        #dh_clean -k 
        dh_installdirs

        # Add here commands to install the package into debian/check-logfiles.
        $(MAKE) DESTDIR=$(CURDIR)/debian/check-logfiles install               


# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
        dh_testdir
        dh_testroot
        dh_installchangelogs
        dh_installdocs
        dh_installexamples
#       dh_install
#       dh_installmenu
#       dh_installdebconf
#       dh_installlogrotate
#       dh_installemacsen
#       dh_installpam
#       dh_installmime
#       dh_python
#       dh_installinit
#       dh_installcron
#       dh_installinfo
        dh_installman
        dh_link
        dh_strip
        dh_compress
        dh_fixperms
#       dh_perl
#       dh_makeshlibs
        dh_installdeb
        dh_shlibdeps
        dh_gencontrol
        dh_md5sums
        dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure



Source-Paket-Dateien erstellen:

Code:


cd ~/debbuild
dpkg-source -b check-logfiles-3.0/



Nochmaliges entpacken des Source-Pakets nach check-logfiles-bin, anschließendes Kompilieren und Paken.

Code:


dpkg-source -x check-logfiles_3.0-1.dsc check-logfiles-bin
cd check-logfiles-bin
dpkg-buildpackage



Nun sollte sich im Überverzeichnis die fertige .deb-Datei befinden.

Schlusswort Top


Mit diesen beschriebenen Schritten sollte einem ersten Paket nichts im Wege stehen. Für komplexere Software (z.B. Bibliotheken) führt kein Weg an Google, Debian-Wiki und -Mailinglisten vorbei.

Anhang: Verwendung mit SuSE Build Service Top


Mit wenigen Schritten können die Pakete nun automatisch inkl. einbindbarem Repository im SuSE Build Serve erstellt werden.

1. Benutzer registrieren auf build.opensuse.org
2. Home-Projekt einrichten
3. Im Home-Projekt ein Paket hinzufügen (zB. check_logfiles)
4. Im Paket folgende Dateien hochladen:

  • *.diff.gz


  • *.orig.tar.gz


  • *.dsc


5. Anschließend Debian als Zielplattform aktivieren
6. Der Build startet automatisch, Fehler können im Build-Log in Echtzeit mitverfolgt werden
7. Wenn der Build erfolgreich war, werden die Pakete nach kurzer Zeit über den Link "Goto Repository" in der "Home-Project"-Ansicht verfügbar
8. Einbinden des Pfads in die sources.list

/etc/apt/sources.list:


deb http://ftp.at.debian.org/debian/ lenny main non-free contrib
deb-src http://ftp.at.debian.org/debian/ lenny main non-free contrib

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

deb http://download.opensuse.org/repositories/home:/glua/Debian_5.0 ./



Weblinks Top






Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden

Sprachenübersicht/Betriebssysteme/Linux/Debian/Debian Paketbau