<<TableOfContents>> <<Navigation(children)>> '''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 [[http://www.sacredchao.net/software/feta/|feta]] (jetzt direkt [[http://packages.debian.org/cgi-bin/search_packages.pl?searchon=names&version=all&exact=1&keywords=feta|hier]] bei Debian). Ist kein Käse, sondern ganz nett. Ebenfalls erwähnenswert ist [[http://www.togaware.com/wajig/|wajig]] (jetzt direkt [[http://packages.debian.org/cgi-bin/search_packages.pl?searchon=names&version=all&exact=1&keywords=wajig|hier]] bei Debian). Funktionieren aber beide derzeit nicht für RPM-basierte Systeme. = Links = * Linksammlung zum Thema: LugKR:AptPaketverwaltung * [[http://www.debian.org/doc/manuals/apt-howto/index.de.html|Debian-apt-HOWTO]] (deutsch) * Mehrere Debian-Versionen (testing, unstable, stable) gleichzeitig zum Installieren verwenden: LugKR:UnstablePaketeNutzen * [[http://channel.debian.de/faq/ch-dpkgundco.html|#debian.de - Frequently Asked Questions - Paketsystem, Paketmanagement, Installation]] * [[http://www.apt-get.org/|apt-get.org - inoffizielle apt-get Sourcen]] ---- = 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. ##[[IncludePages(/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? [[http://www.linuxquestions.org/questions/showthread.php?s=&forumid=2&threadid=171107|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 [[http://www.linuxtag.org/cgi-bin/yabb/YaBB.pl?board=anwendungen;action=display;num=1083244618;start=3|ä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 [[http://www.linuxforum.com/forums/index.php?s=20e9e894d53b19e4e763acf45561c845&showtopic=74767&st=0&#entry321794|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 {{{ #!/bin/sh 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. {{{ #!/bin/sh # 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. [[http://lists.debian.org/debian-devel-0306/msg01375.html|Bernd Eckenfels]] bemerkte ein paar Übergangs- und Dummy-Pakete auf seinem System, fand aber keinen gängigen Weg, diese zu identifizieren. [[http://lists.debian.org/debian-devel-0306/msg01415.html|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. * {{{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: {{{ #!/bin/sh gpg --keyserver wwwkeys.eu.pgp.net --recv-keys $1 gpg --armor --export $1 | apt-key add - }}} oder für user {{{ #!/bin/sh 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 }}}