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


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:

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:

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!

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

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

apt (zuletzt geändert am 2008-11-14 13:21:44 durch 195)