[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ weiter ]


debian-user-german FAQ
Kapitel 8 - Debian Paketmanagement


8.1 Wie installiert man ein Debian-Paket?

Die einfache Antwort lautet: apt-get install paketname

Wenn das Paket nur lokal und nicht auf den Debian-Servern vorliegt, kannst Du folgenden Befehl verwenden: dpkg -i /pfad/zum/paket


8.2 Zu welchem Paket gehört die Datei foobar?

Das lässt sich ziemlich einfach mit dpkg -S foobar beantworten. Das Paket muss dazu installiert sein!

Suchst Du eine Datei, die noch nicht installiert ist, kannst Du Dir die Datei debian/dists/$DIST/Contents-$ARCH.gz von einem Debian-FTP-Server holen und darin suchen:

        zgrep etc/init.d/networking Contents-$ARCH.gz
        etc/init.d/networking                         base/netbase

$DISTS steht für den Codenamen der Debian-Version (potato, woody oder sid bzw. stable, testing oder unstable). $ARCH steht für die Architektur (i386, sparc, alpha etc.).

Gelegentlich lässt sich mit den oben angegebenen Methoden das zugehörige Paket nicht finden. In diesem Fall kann das Formular unter der Adresse http://www.debian.org/distrib/packages verwendet werden. ("Search the Contents of the Latest Release").

Eine weitere (bessere) Methode ist apt-file:

        apt-get install apt-file
        apt-file update
        apt-file search DATEINAME

8.3 Ich möchte einige Debian-Pakete, die auf meiner Festplatte liegen, in die sources.list einbinden, wie geht das?

Zunächst legst Du die Pakete am besten alle in ein (oder wenige) Verzeichniss auf Deiner Platte. Dann brauchst Du für jedes Verzeichnis eine Datei Packages.gz, diese enthält Informationen darüber, welche Pakete sich in diesem Verzeichnis befinden. Erstellt wird sie mit:

        cd /der/pfad/zu/den/debs
        dpkg-scanpackages ./ /dev/null |gzip > Packages.gz

Natürlich muß diese Datei jedesmal neu erzeugt werden, wenn Du neue Pakete in dem Verzeichnis ablegst. In die /etc/apt/sources.list musst Du noch den Pfad zu den Paketen eintragen: deb file:/der/pfad/zu/den/debs ./

und anschliessend apt-get update aufrufen. Jetzt können die Paket mit dem Befehl apt-get install paketname installiert werden.


8.4 Ich habe die Konfigurationsdatei von foobar gelöscht, wie bekomme ich sie wieder?

Du hast folgende Möglichkeiten

Konfigurationsdatei aus paket.deb raussuchen:

        $ cd /tmp
        $ ar -x /var/cache/apt/archives/paket.deb
        $ tar zxvf data.tar.gz
        $ cd etc/
        [Datei suchen und heraus kopieren]
     
        oder:
     
        * `mc` starten
        * mit dem Cursor die deb-Datei markieren, <Enter> drücken
        * mit <F5> lassen sich Dateien aus dem Paket herauskopieren

Die 'kill-em-all' Methode. Komplettes Paket samt Konfigurationsdateien entfernen und neuinstallieren:

        $ dpkg --purge paketname    # entfernt alles samt conffiles
        $ apt-get install paketname

Alle Konfigurationsdateien mit dem default überschreiben:

        
        $ apt-get -d install paketname
        $ dpkg -i --force-confnew /var/cache/apt/archives/paket.deb

dpkg --fsys-tarfile:

        dpkg --fsys-tarfile paket.deb | tar x /etc/paket.conf -C /

8.5 Beim Versuch eine neue Version von foobar für stable zu installieren bekomme ich die Fehlermeldung, dass meine libc6 nicht aktuell sei, warum?

Du hast offenbar ein Paket für testing oder unstable erwischt, das unter anderem gegen eine neuere libc gelinkt ist. Du hast folgende Lösungsmöglichkeiten:

1. Wenn Deine deb-src-Einträge in der /etc/apt/sources.list auf testing/unstable verweisen, genügt: fakeroot apt-get -b source foo

2. Du nimmst den Quelltext des Paketes für testing/unstable und kompilierst es selbst:

        $ mkdir /tmp/build-foobar
        $ cd /tmp/build-foobar
        $ dpkg-source -x foo_0.8-15.dsc
        $ cd foo-0.8
        $ dpkg-buildpackage -uc -us -rfakeroot -b

Das fertige Pakete liegt dann in /tmp und du kannst es als root installieren. Im letzten Fall musst du evtl. die zum Kompilieren benötigten Pakete nachinstallieren. Diese sind in der Datei foo-0.8/debian/control in der Zeile 'Build-Depends:' aufgelistet.

2. Jemand anders hat sich schon die Arbeit gemacht. In der Liste Various UNOFFICIAL sources for APT sind einige Quellen aufgelistet.

Vorsicht! Diese Pakete sind kein offizieller Bestandteil von Debian und deshalb auch nicht so gut ausgetestet. Wenn Du einen Fehler findest, gehört der Bugreport daher auch nicht ins offizielle Bug Tracking System. Beachte den Abschnitt Important warning und lies die README-Dateien!


8.6 Bei dem Versuch aus den Sourcen selber ein Debian-Paket zu erstellen, bekomme ich diese Fehlermeldung: dh_testdir, make: dh_testdir..., warum?

Die komplette Fehlermeldung lautet:

             dh_testdir
             make: dh_testdir: Kommando nicht gefunden.
             make: {*}{*}{*} {[}clean{]} Fehler 127

Dir fehlt das Paket 'debhelper', es enthält die nötigen Tools um das packen von Debian Binär-Paketen zu automatisieren. Du kannst es mit apt-get install debhelper installieren.

Damit die Erstellung von Binär-Paketen aus Quellcodepaketen funktioniert müssen außerdem eine Reihe weiterer Pakete installiert sein. Am einfachsten ist es, dazu das Paket 'build-essential' zu installieren, das Abhängigkeiten zu den benötigten Paketen enthält.

Neuere Quellcodepakete geben in den Paketinformationen außerdem so genannte 'Build-Dependencies' an, das sind Pakete, die neben 'build-essentials' ebenfalls installiert werden müssen. Neuere Versionen von 'apt-get' installieren die benötigten Pakete automatisch mit, wenn apt-get zur Installation eines Quellcodepakets folgendermaßen aufgerufen wird: apt-get build-dep Paketname

Wobei 'Paketname' natürlich durch den Namen des zu installierenden Quellcodepakets zu ersetzen ist.


8.7 Ich möchte foo-bar installieren, weiß aber nicht welche Pakete ich benötige. Wie kann ich das herausfinden?

Es gibt sogenannte task-Pakete die alle zu einem 'Thema' benötigten Pakete automatisch auswählen und installieren. Zum Beispiel gibt es task-Pakete für X, Gnome, KDE, eine C Programmierumgebung, ein chinesisches System usw. Mit dem Programm 'tasksel' kannst Du Dir eine Liste der verfügbaren task-Pakete anzeigen lassen und sie zur Installation auswählen.

Ansonsten hilft eine manuelle Suche mit apt-cache search foo | grep bar oder mit den Suchfunktionen von dselect oder stormpkg (grafischer Paket-Manager ab Woody).

Gelegentlich ist lediglich der Name einer zu installierenden Datei bekannt und das zugehörige Paket lässt sich, mit den oben angegebenen Methoden, nicht finden. In diesem Fall kann das Formular unter der Adresse http://www.debian.org/distrib/packages verwendet werden. ("Search the Contents of the Latest Release").


8.8 Ich möchte mir selber ein Debian-Paket basteln, wie geht das?

Diese Frage lässt sich natürlich nicht so pauschal beantworten. Du wirst ein paar Dokumente und Manpages lesen müssen. Gute Startpunkte sind:





8.9 Wie sind die Versionsnummern von Debian-Paketen aufgebaut?

Die Versionsnummern entsprechen dem Format:

     [epoch:]upstream_version[-debian_revision]

'epoch' ist eine einstellige Zahl die es erlaubt Fehler in Versionsnummern von älteren Paketen auszubessern und das Nummerierungsformat zu ändern. 'upstream_version' ist die Versionsnummer des eigentlichen Programmes aus dem das Debian-Paket erzeugt wurde. 'debian_revision' ist die Versionsnummer des Debian-Pakets.

Beispiel an fetchmail 5.3.3-1.2: 5.3.3 ist die Versionsnummer von fetchmail die der fetchmail-Autor vergeben hat. -1.2 ist die Versionsnummer des fetchmail-Debian-Pakets, die der Maintainer des fetchmail-Pakets für Debian vergeben hat.

Siehe auch Chapter 4 'Version numbering' der Debian Policy


8.10 Wie entfernt man Pakete, die von Apt zur Auflösung von Abhängigkeiten mitinstalliert wurden und jetzt nicht mehr benötigt werden?

Seit Debian 3.0 (woody) gibt es dafür die Programme debfoster und deborphan. Lies bitte die Manuals. (Irgendwann soll diese Funktion wohl auch in apt integriert werden.)


8.11 Wie finde ich Dateileichen, die zu keinem Paket gehören?

Wirf einen Blick auf die Programme cruft und tiger, beide können dir dabei hilfreich zur Seite stehen. Sei aber sehr vorsichtig und prüfe dreimal, ehe du wirklich etwas löscht, beide Programme liefern falsche Treffer.


8.12 Kann man aus einem installierten Paket wieder ein .deb erzeugen?

Ja, das geht tatsächlich. Du brauchst dazu das Paket dpkg-repack, mit apt-get install dpkg-repack kannst Du es installieren. Lies bitte das Manual.


8.13 Kann ich die Paketauswahl eines Rechners sichern und 1:1 auf einen anderen übernehmen?

Ja, mit dpkg --get-selections "*" > packetlist wird die Paketliste in der Datei packetlist gespeichert. "*" ist nötig, damit auch die Informationen über deinstallierte Pakete mit ausgegeben werden.) Diese Liste kannst Du dann mit dem Befehl dpkg --set-selections < packetlist auf ein anderes System übertragen. Anschliessend musst Du noch dselect install ausführen.


8.14 Wie kann ich verhindern, dass dpkg -l lange Paketnamen kürzt?

Am einfachsten, indem du der Umgebungsvariable COLUMNS, temporär einen höheren Wert zuweist oder dpkg in einem genügend breiten (X-)Terminal aufrufst.

        env COLUMNS=200 dpkg -l

Wenn du öfters dpkg -l oder dpkg -S verwendest, solltest du einen Blick auf das Paket dlocate werfen, das diese Aufgaben wesentlich schneller erledigt, da es nicht die originale Paketdatenbank sondern eine täglich aktualisierte locate-Datenbank befragt. (Dadurch sind diese Informationen aber natürlich auch nicht immer auf dem allerneuesten Stand.)


8.15 Wie entfernt man ein komplettes Task-Paket?

Credits: Heiko Schlittermann heiko@schlittermann.de

Die folgende Antwort wurde mit der Erlaubnis von Jens Benecke aus der Linux User FAQ übernommen. Vielen Dank!

Problem: Du hast ein "task" Paket unter Debian installiert. Task-Pakete sind Zusammenstellungen von anderen Paketen, die im Prinzip nur Abhängigkeiten definieren und selbst keine Dateien enthalten. z.B. wird beim Paket task-tex unter anderem bibtool, psutils, tetex, tetex-bin, tetex-doc, hyperlatex usw. installiert.

Es gibt allerdings keine Möglichkeit, zu sagen "Lösche alles, was durch die Installation von task-tex mitinstalliert wurde". Bisher jedenfalls nicht :-) denn diese Zeile tut es:

     dpkg -r $(apt-cache show task-tex | sed -n '/Depends:/s/^.*://;s/,//gp')

8.16 Debian-Distribution DOWNgraden (z.B. woody -> potato)

Credits: Volker Hartwig volker@informatik.uni-rostock.de

Die folgende Antwort wurde mit der Erlaubnis von Jens Benecke aus der Linux User FAQ übernommen. Vielen Dank!

     > Problem: Du möchtest von einer instabilen Distributionsversion (z.B.
     > eine aktuelle Debian) auf den letzten stabilen Tree zurück. Dies geht
     > offiziell mit "APT" erst mit Woody, es gibt aber eine inoffiziellere
     > Variante.

hast Du eine potato-CD oder die *.debs irgendwo gemounted rumliegen? Dann könnte dpkg die Arbeit erledigen:

        dpkg -i -E -O -R --force-downgrade pfad-zu-potato-binary-i386

Ich übernehme allerdings keinerlei Gewähr :-)


8.17 Mehrere Debian-Trees (testing, unstable, stable) gleichzeitig zum Installieren verwenden

Die folgende Antwort wurde mit der Erlaubnis von Jens Benecke aus der Linux User FAQ übernommen. Vielen Dank!

Debian ist auf Stabilität bedacht und daher kommt in den "stable" Tree (momentan Woody, aka Debian 3.0) nur das, was auch sicher läuft. Im "testing" Tree ist das, was keine kritischen Fehler mehr besitzt, im "unstable" Tree das, was für die Entwickler funktioniert und von anderen getestet werden soll, und im "experimental" Tree werden z.B. neue Versionen des Paketmanagements und größere Änderungen am Gesamtsystem getestet, und Beta-Versionen von bekannten Anwendungen zur Verfügung gestellt. Man möchte manchmal eine Version eines Paketes aus "testing" oder "unstable" haben, ohne gleich das ganze System zu aktualisieren - das würde aber passieren, wenn man seine /etc/apt/sources.list auf "unstable" zeigen ließe. Alternativ kann man sich den Krempel natürlich mit apt-get -b source install $PAKETNAME selbst kompiliern lassen, aber dafür fehlen fast immer -zig Entwicklerbibliotheken, die für nix anderes benötigt werden.

Für sowas gibt es das pinning feature vom APT Paketmanager, welches sinnigerweise aber erst ab der in "testing" vorhandenen APT-Version unterstützt wird :-) Das funktioniert z.B. so: Angenommen, man installiert normalerweise aus "testing", aber will _ein_ Paket aus "unstable" haben (z.B. weil man ein bestimmtes Feature braucht). Man schreibt in seine /etc/apt/preferences

        Package: *
             Pin: release a=testing
             Pin-Priority: 900
     
             Package: *
             Pin: release o=Debian
             Pin-Priority: -10

Beim Copy & Paste die Leerzeichen am Zeilenanfang löschen!

trägt eine passende Zeile für "unstable" in seine /etc/apt/sources.list ein, und kann dann mittels apt-get -t unstable install $PAKETNAME ein Paket aus "unstable" installieren, während aber bei "normalem Betrieb" alles aus "testing" geholt wird. Abhängigkeiten werden dabei selbstverfreilich automatisch beachtet, wie immer.

Ja, so einfach ist das. Debian ist halt genial. :-)


[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ weiter ]


debian-user-german FAQ

14 Dezember 2004
Janto Trappe dugfaq at sylence dot net