Compilieren von Debian Paketen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
cmpxchg
Beiträge: 2
Registriert: 06.10.2006 09:27:53

Compilieren von Debian Paketen

Beitrag von cmpxchg » 06.10.2006 09:36:56

Hallo,

ich verwende Debian Stable und will mit oft aktuellere Pakete nachinstallieren. Dies mache ich indem ich in der sources.list folgende Zeilen habe

Code: Alles auswählen

deb ftp:// ... stable main ... u.s.w.
deb-src ftp:// ... unstable main ... u.s.w
Dies mache ich, damit mir apt auf keinen Fall ständig irgendwelche Pakete upgraden will und damit mein System stabil weiter funktioniert. Damit ich an eine neuere version von einem Programm komme kompiliere ich es mir einfach selber mit

Code: Alles auswählen

apt-get source mp3blaster     // ist nur ein beispielprogramm
dann wechsele ich in das Source-verzeichnis und mache

Code: Alles auswählen

dpkg-buildpackage -us -uc
das deb das dadurch erzeugt wird, installiere ich mit

Code: Alles auswählen

dpkg -i 
und alles funktioniert winderbar.

Zu meiner Frage:
Oftmals scheitert dpkg-buildpackage, weil es noch abhängigkeiten z.b. Autoconf oder debhelper u.s.w. gibt. Jetzt will ich die auch neukompilieren mit dem obigen prozess, da gibts wieder abhängigkeiten u.s.w.

Gibts denn eine möglichkeit den buildprozess zu automatisieren?
Ich stelle mit sinngemäß sowas for

Code: Alles auswählen

apt-get sourceinstall mp3blaster
So, daß die abhängigkeiten automatisch aufgelöst werden und die sources automatisch kompiliert werden.

Danke für eure Hilfe

Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.
Siehe auch die Verhaltensregeln des Forums [1].

[1] http://wiki.debianforum.de/debianforum. ... tensregeln

Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

Beitrag von hupfdule » 06.10.2006 10:36:47

Du solltest dir bewusst sein, dass du auf diese Art genau das Problem bekommst, was du eigentlich vermeiden wolltest. Nämlich, dass haufenweise neuere Pakete aus unstable installiert werden, die nur die Abhängigkeiten erfüllen müssen.

Zwei Möglichkeiten hast du, das zu vermeiden.
  • * Verwende Backports von backports.org
    * Ändere die Versionen der Abhängigkeiten in debian/control auf eine in sarge vorhandene Version
Die zweite Methode hat natürlich den gravierenden Nachteil, dass eventuell tatsächlich die neuere Version benötigt wird und dein Paket mit der älteren schlicht nicht funktioniert. Daher sind backports die duetlich einfachere Variante.

Allerdings musst du nicht zwangsläufig alles selbst kompilieren. Wenn du apt-pinning verwendest (gibt es hier im Forum reichlich Threads zu), kannst du angeben, dass Pakete standardmäßig aus sarge geholt werden und nur, wenn du es explizit verlangst aus unstable. Damit hast du weiterhin die Kontrolle darüber, was von dort installiert wird.[/list]

cmpxchg
Beiträge: 2
Registriert: 06.10.2006 09:27:53

Beitrag von cmpxchg » 06.10.2006 12:59:26

Ich habe sehr gute Erfahrungen mit der Methode gemacht. Meist benötigen Binärpakete von unstable eine neuere Version der glibc oder der X11-Libs. Verwende ich habe die sources, kann ich solche binärpakete gegen ältere Libraries linken und dann funktioniert es einwandfrei.

z.B. das paket grip hatte bei stable einen bug. Dann habe ich mir die sources von unstable runtergeladen und grip mit der obigen Methode kompiliert. Der vorteil ist, dass das enstehende deb nahtlos in das stable-Debian system installiert werden konnte.

hätte ich das binärpaket von grip verwendet, hätte ich nahezu das gesamte Debiansystem upgraden müssen. Von der glibc üder X11 und weitere kritische bibliotheken.
Daher finde ich das apt-pinning komisch, ich denke das macht genau das und hilft meinem Problem daher nicht weiter.

Ich schaue mir mal die backports.org an.
Vielen Dank für den Tip

Antworten