Inhaltsverzeichnis
- Links
- Konfiguration von apt über /etc/apt/sources.list
- Mini-Howto
- Default-Distribution
- Pinning
- Deinstallieren inkl. Abhängigkeiten
- Probleme bei apt-get update
- Probleme bei apt-get upgrade
- Automatisches Upgrade (Achtung!)
- Halbautomatisches Upgrade
- Pakete berücksichtigen, die "irgendwo auf der Festplatte rumliegen"
- Nützliche Tools
- Beispiel für /etc/apt/apt.conf
- fehlender (nicht mehr aktueller) GnuPG-Schlüssel
/Fedora /MiniHowTo /PinPriorität /RPM /RPM/rpmlist.py /RedHat /SuSE |
apt ist das "Advanced Package Tool" von Debian, bestehend aus den Einzeltools apt-get und apt-cache.
apt ist ein sehr mächtiges und komfortables Tool, mit dem man (eine gute Internetverbindung vorausgesetzt) seine Installation leicht aktuell halten kann. Selbst Komplettupdates der installierten Pakete klappen damit sehr gut (hängt natürlich auch von der Distribution ab).
apt stammt aus dem Debian-Bereich und hat dort auch die meiste Verbreitung, mittlerweile gibt es apt aber auch für andere Distributionen (nämlich solche, die auf RPM anstatt dpkg setzen), mehr dazu steht auf /RPM.
Wem die Bedienung von apt per Kommandozeile nicht bunt genug ist, dem sei aptitude oder das Frontend Synaptic empfohlen.
Ein neues Frontend für apt und dpkg ist feta (jetzt direkt hier bei Debian). Ist kein Käse, sondern ganz nett. Ebenfalls erwähnenswert ist wajig (jetzt direkt hier bei Debian). Funktionieren aber beide derzeit nicht für RPM-basierte Systeme.
Links
Linksammlung zum Thema: AptPaketverwaltung
Debian-apt-HOWTO (deutsch)
Mehrere Debian-Versionen (testing, unstable, stable) gleichzeitig zum Installieren verwenden: UnstablePaketeNutzen
#debian.de - Frequently Asked Questions - Paketsystem, Paketmanagement, Installation
Konfiguration von apt über /etc/apt/sources.list
Hier werden die Quellen (Sources) konfiguriert, wo apt Pakete beziehen kann. Man erstellt diese Datei entweder mit apt-setup oder mit Hilfe von Debian/sources.list
Mini-Howto
Siehe /MiniHowTo.
Default-Distribution
In /etc/apt/apt.conf kann man (theoretisch) auch die Default-Distribution festlegen (z.B. wenn man in sources.list sowohl stable, testing als auch unstable konfiguriert hat): APT::Default-Release "stable"; Tja, nur tut diese Methode derzeit nicht! (Hinweis: Die häufig verwendete bf2.4 Installation stammt z.Z. noch aus dem 'unstable' Zweig.)
Daher folgende Methode verwenden:
In /etc/apt/preferences folgendes definieren:
Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release o=Debian Pin-Priority: -10
Wenn man dann Pakete aus "unstable" instalieren will, verwendet man die bei Pinning beschriebene Methode.
Pinning
Wenn man, so wie oben gezeigt, in der Quelliste mehrere Versionen, also z.B. testing und unstable, stehen hat, kann man auch gezielt entscheiden, aus welcher Version man ein Paket installieren will. Beispiel:
apt-get -t unstable install mozilla - installiert den Mozilla aus der unstable (sid)-Version sowie die nötigen Pakete aus sid, von denen mozilla abhängig ist.
apt-get install mozilla/unstable - installiert nur den Mozilla aus der unstable (sid)-Version
Ein apt-get -t erhöht die /PinPriorität der Distribution auf 990.
Mehr dazu siehe Debian/AptPinning
Für weitere Boshaftigkeiten mit apt sei auf die apt_preferences(5) ManPage hingewiesen.
Deinstallieren inkl. Abhängigkeiten
apt-get remove <Paketname>
Um auch nicht mehr benötigte "Abhängigkeiten" zu deinstalliert gibt es debfoster
debfoster -r <paket> # listet alle Pakete auf, die wg. <paket> mitinstalliert wurden.
Ansonsten: man debfoster
Probleme bei apt-get update
Hit http://localhost sid/non-US/main Release Reading Package Lists... Error! E: Dynamic MMap ran out of room E: Error occured while processing libpgtcl (NewVersion1) E: Problem with MergeList /var/lib/apt/lists/localhost:9999_debian-security_dists_woody_updates_main_binary-i386_Packages E: The package lists or status file could not be parsed or opened.
Lösung /etc/apt/apt.conf (der Default ist manchmal zu niedrig):
APT::Cache-Limit 20971520;
Probleme bei apt-get upgrade
Pakete werden zurückgehalten
# apt-get upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages have been kept back apt-howto file galeon gcc gnomemeeting gs-esp imagemagick kismet konqueror libcupsys2 libdbd-mysql-perl libgd1 libgtkxmhtml1 libgwrapguile1 liborbit2 libpng2 ohphone openbox perl perl-base postfix postfix-ldap postfix-pcre sysvinit ...
Mögliche Ursachen für das Zurückhalten der Pakete:
- das Repository ist gerade in einem inkonsistenten Zustand, Lösung: später nochmal probieren (vorher apt-get update!)
- Eine Lösung, auch diese Pakete zu upgraden ist einfach, eins oder mehrere davon per apt-get install paketname zu installieren - dann wird es oft upgraded, oft findet man aber auch nur die Ursache des Problems (fehlendes Paket im Repository oder Fehler in Paketen)
- die neueren Versionen erfordern zusätzliche Pakete, Lösung: apt-get dist-upgrade
dpkg: Fehler beim Bearbeiten von ...
# apt-get upgrade (bei unstable) liefert folgendes:
... Entpacke Ersatz für kdelibs-data ... Ersetze die Dateien im alten Paket koffice-data ... dpkg: Fehler beim Bearbeiten von /var/cache/apt/archives/kdelibs-data_4%3a3.2.2-2_all.deb (--unpack): versuche »/usr/share/mimelnk/application/vnd.sun.xml.calc.desktop« zu überschreiben, welches auch in Paket openoffice-de-en ist dpkg-deb: Unterprozess paste getötet mit Signal (Datenübergabe unterbrochen (broken pipe)) Wähle vormals abgewähltes Paket k3blibs. Entpacke k3blibs (aus .../k3blibs_0.11.9-1_i386.deb) ... Fehler traten auf beim Bearbeiten von: /var/cache/apt/archives/kdelibs-data_4%3a3.2.2-2_all.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
Nochmaliges Aufrufen von # apt-get upgrade:
Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig Sie möchten wahrscheinlich ,,apt-get -f install" aufrufen, um dies zu korrigieren. Die folgenden Pakete haben nichterfüllte Abhängigkeiten: kdelibs4: Hängt ab: kdelibs-data (>= 4:3.2.1) aber 4:3.1.5-1 ist installiert E: Nichterfüllte Abhängigkeiten. Versuchen Sie, -f zu benutzen.
# apt-get -f install:
Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig Abhängigkeit werden korrigiert... Fertig Die folgenden zusätzlichen Pakete werden installiert: kdelibs-data Die folgenden Pakete werden aktualisiert: kdelibs-data 1 aktualisiert, 0 neu installiert, 0 zu entfernen und 34 nicht aktualisiert. 6 nicht vollständig installiert oder entfernt. Es müssen noch 0B von 6380kB Archiven geholt werden. Nach dem Auspacken werden 3420kB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren? [J/n] (Lese Datenbank ... 109924 Dateien und Verzeichnisse sind derzeit installiert.) Vorbereiten zum Ersetzen von kdelibs-data 4:3.1.5-1 (durch .../kdelibs-data_4%3a3.2.2-2_all.deb) ... Entpacke Ersatz für kdelibs-data ... Ersetze die Dateien im alten Paket koffice-data ... dpkg: Fehler beim Bearbeiten von /var/cache/apt/archives/kdelibs-data_4%3a3.2.2-2_all.deb (--unpack): versuche »/usr/share/mimelnk/application/vnd.sun.xml.calc.desktop« zu überschreiben, welches auch in Paket openoffice-de-en ist dpkg-deb: Unterprozess paste getötet mit Signal (Datenübergabe unterbrochen (broken pipe)) Fehler traten auf beim Bearbeiten von: /var/cache/apt/archives/kdelibs-data_4%3a3.2.2-2_all.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
OffeneFrage: Was nun?
Hier scheint es um ein ähnliches Problem zu gehen, nur sich das dort offenbar mit # apt-get -f install lösen ließ - anders als bei mir.
Andere haben ähnliche Probleme - sind daran aber offenbar auch nicht ganz unschuldig.
Auch trotz
# dpkg-divert --add /usr/share/mimelnk/application/vnd.sun.xml.calc.desktop
liefert
# dpkg -i kdelibs-data_4%3a3.2.2-2_all.deb
die Fehlermeldung
versuche »/usr/share/mimelnk/application/vnd.sun.xml.calc.desktop« zu überschreiben, welches auch in Paket openoffice-de-en ist
[mrf] Habe das gleiche Problenm gehabt und hier eine Lösung gefunden:
# dpkg -i --force-overwrite /var/cache/apt/archives/kdelibs-data_4%3a3.2.2-2_all.deb
Die bessere Lösung ist
dpkg-divert --local --rename --add /usr/share/mimelnk/application/vnd.sun.xml.calc.desktop # oder dpkg-divert --package kdelibs-data --rename --add /usr/share/mimelnk/application/vnd.sun.xml.calc.desktop
Wichtig ist das --rename.
Ich hatte dieses Problem auch. Ich wollte auf knoppix3.4 C't Edition KDevelop3 installieren und musste hierzu einige updates vornehmen. Bei der Installation von kdelibs-data_3.2.2-2_all.deb über dpkg bekam ich diese Fehlermeldung.
versuche »/usr/share/mimelnk/application/vnd.sun.xml.calc.desktop« zu überschreiben, welches auch in Paket openoffice-de-en ist
Der Link vnd.sun.xml.calc.desktop konnte nicht ersetzt werden. Mein KDE war hinterher unbrauchbar, da ich keine MIME types mehr einstellen konnte und die *.desktop links nicht mehr funktionierten.
Dieses Problem habe ich durch die oben beschriebenen Wege nicht lösen können. Erst die Installation des hicolor-icon-themes hat das Problem gelöst (Warum auch immer, an sich hat das ja nichts miteinander zu tun).
# apt-get install hicolor-icon-theme
Hinterher ging die Installation von kdelibs-data_3.2.2-2_all.deb problemlos und KDE war wieder einsetzbar. Vielleicht hilft auch das Experimentieren mit diesen Lösungswegen in einer bestimmten Reihenfolge. Achtung: Die Standard-icons werden ersetzt, wer die alten behalten will sollte vielleicht ein Backup machen.
Automatisches Upgrade (Achtung!)
dpkg-reconfigure debconf
und dann auf non-interactive stellen.
Dann folgendes in /etc/cron.daily/apt_upgr
apt-get update apt-get -y upgrade
Ohne Gewähr, aber ansonsten brauchbar!
Anmerkung: Dieses Vorgehen ist höchstens bei der stable Version (zur Zeit etch) zu empfehlen wegen hohem Übertragungsvolumen und möglichem Einschleichen von Sicherheitslücken, da man nicht interaktiv entscheiden kann welche Packages ein upgrade bekommen und wie die genauen Einstellungen aussehen.
Seit etch gibt es auch das Paket 'unattended-upgrades'. Wie man sein Verhalten steuert, ist in der Datei /etc/cron.daily/apt dokumentiert.
Halbautomatisches Upgrade
Wem das automatische upgrade zu gefährlich ist, der kann dieses Script von cron ausführen lassen. Zum einen erhält man eine Mail, wenn neue Pakete erschienen sind, zum anderen muss man nicht warten, bis sie heruntergeladen wurden.
Und vor allem: man behält die Kontrolle, was tatsächlich installiert wird.
# A script to download available Debian updates and list packages that # will be updated. Designed to be quiet enough to be run from cron. # # Copyright (c) 2002 Marius Gedminas # Licensed under the GNU GPL. apt-get update -qq &>/dev/null sleep 10 apt-get update -qq apt-get dist-upgrade -d -u -y -q | fgrep -v "Reading Package Lists... Building Dependency Tree... 0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Download complete and in download only mode
Pakete berücksichtigen, die "irgendwo auf der Festplatte rumliegen"
Lokale Paketsammlungen kann apt nur benutzen, wenn sie eine Indexdatei (Packages bzw. Packages.gz) besitzen. Diese kann man sich auch leicht selbst basteln. Angenommen, die Pakete liegen unter /root/debian, dann erzeugt folgendes Kommando (im Verzeichnis /root) eine Datei Packages.gz:
dpkg-scanpackages debian/ /dev/null | gzip -9 > debian/Packages.gz
Der Eintrag in der sources.list sieht dann wie folgt aus:
deb file:/root debian/
Nützliche Tools
deborphan - hilft bei der Identifizierung von verwaisten Paketen.
- Hierzu ein Zitat aus dem Linux-Weekly-Newsletter:
Übergangspakete identifizieren. Bernd Eckenfels bemerkte ein paar Übergangs- und Dummy-Pakete auf seinem System, fand aber keinen gängigen Weg, diese zu identifizieren. Aaron Ucko verwies auf deborphan --guess-dummy --guess-only, um die Dummy-pakete zu finden.
zum probieren: apt-get remove --purge -s $(deborphan) : alle verwaisten Pakete, die deborphan ausspuckt, werden an apt-get zum vollständigen (--purge) entfernen übergeben, das -s bewirkt nur eine Simulation, bei Bedarf also wegnehmen. Anschließend mit apt-get -f install die Konsistenz alle installierten Pakete mal prüfen.
- Hierzu ein Zitat aus dem Linux-Weekly-Newsletter:
orphaner - Frontend zu deborphan
debfoster
Beispiel für /etc/apt/apt.conf
{{{# Beispiel APT::Cache-Limit 10000000; APT::Get::Purge; #APT::Force-LoopBreak "1"; Acquire::http::Proxy "http://192.168.1.1:3128/"; }}}
fehlender (nicht mehr aktueller) GnuPG-Schlüssel
.deb Pakete sind per GnuPG signiert
Problem:
GPG error: ftp://ftp.nerim.net unstable Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 07DC563D1F41B907
Lösung:
su gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 07DC563D1F41B907 gpg --armor --export 1F41B907 | apt-key add - apt-get update
alternativ:
apt-key advanced --keyserver wwwkeys.eu.pgp.net --recv-keys 07DC563D1F41B907
alternativ kann man sich ein kleines script für root anlegen:
gpg --keyserver wwwkeys.eu.pgp.net --recv-keys $1 gpg --armor --export $1 | apt-key add -
oder für user
gpg --keyserver wwwkeys.eu.pgp.net --recv-keys $1 gpg --armor --export $1 > /tmp/key$1.asc echo -e "\nBitte root Passwort eingeben" su -c "apt-key add /tmp/key$1.asc" rm /tmp/key$1.asc