Um die Netzlast in den Debian-Archiven zu reduzieren, sollten Sie einen lokalen
HTTP-Proxy mit squid
für das Herunterladen von Paketen mittels APT
einrichten. Wenn nötig muss die http_proxy-Umgebungsvariable oder
der http-Wert in /etc/apt/apt.conf
gesetzt werden.
Dies erhöht die Leistung im Netzwerk enorm, insbesondere dann, wenn viele
Debian-Rechner in einem LAN vorhanden sind.
Obwohl die Pinning-Eigenschaft von apt_preferences(5)
sehr
leistungsfähig ist, löst sie nicht alle Abhängigkeitsprobleme, da die
Voraussetzungen für Abhängigkeiten an neueren Versionen anderer fundamentaler
Programmpakete zerren.
Die Verwendung der in chroot
,
Abschnitt 8.6.34 beschriebenen Methode ist geeignet, um gleichzeitig die
Stabilität beider Systeme zu sichern und auf die neuesten Versionen von
Software zuzugreifen.
Dieses Kapitel bezieht sich auf ein Woody-System, jedoch sollten die
Informationen hier auch auf ein Potato-System (mit Ausnahme von
apt_preferences(5)
und Themen die Bezug auf die
/etc/apt/preferences
-Datei nehmen) zutreffen.
Wenn das Lesen der Entwicklerdokumentation zu viel für Sie ist, dann lesen Sie zuerst dieses Kapitel um dann die ganze Vielfalt von Debian (testing/unstable) zu nutzen :-)
dselect – menügesteuertes Paketverwaltungs-Werkzeug (top level) dpkg – installiert Pakete (Paketdatei orientiert) apt-get – installiert Pakete (Paketarchiv orientiert, CLI-APT) tasksel – installiert Aufgaben-Profile (Verbund von Paketen) aptitude – installiert Pakete (Pakete & Profile, ncurses APT) deity – alternatives ncurses APT synaptic, gsynaptic – GUI-APT-Alternativen
Diese Tools arbeiten nicht alle auf dem gleichen Level. dselect
arbeitet ein Level über APT (der Kommandozeilenbefehl ist apt-get
)
und dpkg
.
APT nutzt /var/lib/apt/lists/*
um verfügbare Pakete zu erfassen,
dpkg
jedoch nutzt /var/lib/dpkg/available
. Wenn Sie
Pakete direkt mit apt-get
oder mit einem ähnlichen Programm, wie
z.B. aptitude
installiert haben, dann stellen Sie sicher, dass
Sie die Datei /var/lib/dpkg/available
mittels
[U]pdate aus dem dselect
-Menü oder von der
Kommandozeile mit "dselect update" updaten, bevor Sie
dselect select, tasksel oder dpkg -l
ausführen.
Was die Paketabhängigkeiten angeht, so berücksichtigt apt-get
automatisch alle benötigten Pakete, ignoriert aber
empfohlende und vorgeschlagene Pakete.
dselect
bietet jedoch eine menübasierte Kontrolle über die Auswahl
von solchen Paketen und fragt zur Auswahl von benötigten,
empfohlenden und vorgeschlagenen Paketen.
aptitude
bietet die Möglichkeit, alle benötigten,
empfohlenden und vorgeschlagenen Pakete
automatisch zu berücksichtigen. Siehe Paketabhängigkeiten, Abschnitt 2.2.8.
apt-cache - durchsucht das Paketarchiv im lokalen Cache dpkg-reconfigure - erneutes Konfigurieren von installierten Paketen (sofern sie debconf benutzen) dpkg-source - verwaltet Quellpaketdateien dpkg-buildpackage - automatisiert den Prozess der Erstellung von Paketdateien ...
Man kann eine Menge von Paketen genannt Aufgaben-Profile oder auch Task installieren oder individuelle Pakete. Eine Aktualisierung des Systems kann auch mittels Paketverwaltungswerkzeugen wie weiter unten beschrieben erfolgen. Es wird auch auf Debian-System-Installationshinweise, Kapitel 3, Aktualisieren einer Distribution auf stable, testing oder unstable, Kapitel 5 und Rettungseditoren, Abschnitt 11.2 verwiesen.
tasksel
oder aptitude
installieren
tasksel
ist das
Debian-Aufgaben-Profil-Installationsprogramm, das auch während
der Debian-Installation unter dem Punkt "einfach"
angeboten wird.
Wenn man eine bestimmte Funktion benötigt, die verschiedene Pakete erfordert, so ist das der einfachste Weg dies zu erledigen. Stellen Sie sicher, dass Sie die Befehle wie folgt starten:
# dselect update # tasksel
aptitude
bietet auch Zugang zu Aufgaben-Profilen. Dies
erlaubt nicht nur die Auswahl von Aufgaben-Profilen, sondern
ermöglicht es auch, Pakete in diesem Profil selektiv durch ein Menü
abzuwählen.
Versuchen Sie ein System mittels verschiedener Distributionen, wie im Folgenden beschrieben, einzurichten, so ist es wahrscheinlich, dass Sie auf einige Paketabhängigkeitskonflikte stoßen. Es ist eine gute Idee, verschiedene Ausgaben nicht zu vermengen. Das folgende ist für Personen, die gerne experimentieren und dabei Risiken in Kauf nehmen.
Um selektive Upgrades durchzuführen, während man die
testing-Distribution installiert hat, muss das APT-System
(>Woody) wie in Aktualisierung
von Potato auf Woody, Abschnitt 5.1 beschrieben eingerichtet werden, damit
die apt_preferences(5)
Eigenschaften genutzt werden können.
Fügen Sie zuerst die Quellen für stable, testing und
unstable in Ihre /etc/apt/sources.list
-Datei ein.
Editieren Sie danach /etc/apt/preferences
, um Pin-Priority korrekt
einzurichten. [2]
Package: * Pin: release a=stable Pin-Priority: 500 Package: * Pin: release a=testing Pin-Priority: 600 Package: * Pin: release a=unstable Pin-Priority: 50
dselect
Wenn dselect
startet, wählt es automatisch alle Pakete aus, die in
den Kategorien "Required", "Important" und
"Standard" enthalten sind. In der Potato-Distribution waren etliche
große Pakete wie z.B. teTeX und Emacs in diesen Kategorien enthalten und
wurden am besten für die Erstinstallation manuell abgewählt (mittels `_'). In
der Woody-Distribution sind diese Pakete nun in der
"Optional"-Paketkategorie.
dselect
hat eine einigermaßen gewöhnungsbedürftige
Benutzerschnittstelle. Es gibt gleich vier doppeldeutige Befehle
(Großbuchstaben sind gemeint!):
Taste Aktion Q Beenden. Momentane Auswahl bestätigen und beenden. (Abhängigkeiten vernachlässigen) R Rückgängig! Es war nicht so gemeint. D Verdammt! Es ist uninteressant was dselect meint. Mach es! U Alles auf den vorgeschlagenen Status setzen.
Mit D und Q kann eine Auswahl die Konflikte enthält, auf eigenes Risiko gewählt
werden. Hiermit sollte vorsichtig umgegangen werden. Zur Zeit ist
dselect
das ausgereifteste menübasierte Werkzeug, das fein
gegliederte Kontrolle über Empfehlungen und
Vorschläge bietet.
Fügen Sie eine Zeile in /etc/dpkg/dselect.cfg
ein, die die Option
"expert" enthält, um die Ausgabe unnötiger Meldungen zu reduzieren.
Für langsame Rechner, ist es empfehlenswert dselect
auf einem
anderen, schnelleren Rechner zu starten um Pakete zu finden und diese mit
apt-get install zu installieren.
dselect
erlaubt keinen Zugriff auf Pakete, die nicht durch
Pin-Priority begünstigt sind.
aptitude
aptitude
ist ein menübasiertes Paketinstallationprogramm ähnlich
zu dselect
. Dies kann auch als alternativer Kommandozeilen-Befehl
an Stelle von apt-get
genutzt werden. Vergleichen Sie
aptitude(1)
.
aptitude
akzeptiert folgende Tastenkürzel, die meist
Kleinbuchstaben sind.
Tastenkürzel Aktion F10 Menü ? Hilfe zu Tastenkürzel u Aktualisiere Paketarchivinformation g Herunterladen und installieren gewählter Pakete q Beenden und Sichern der Änderungen x Beenden und Verwerfen der Änderungen Enter Informationen zu einem Paket anzeigen
aptitude
erlaubt es, alle Pakete, je nachdem, ob sie
benötigt, empfohlen oder
vorgeschlagen werden, auszuwählen. Dieses Verhalten kann
durch Auswahl von F10 -> Optionen -> Abhängigkeitsbehandlung
im Menü geändert werden.
aptitude
erlaubt den Zugriff auf alle Versionen eines Pakets.
apt-cache
- und apt-get
-KommandosBeim Einrichten von testing wie im obigen Beispiel beschrieben, kann das System durch folgende Kommandos angepasst werden:
Dies verwendet die testing-Distribution und aktualisiert alle Pakete im System, wobei die durch Abhängigkeiten benötigten Pakete von testing stammen.
Dies verwendet die testing-Distribution und aktualisiert alle Pakete im System, wobei alle Abhängigkeiten aufgelöst werden und die dadurch benötigten Pakete von testing stammen.
Dies verwendet die testing-Distribution und aktualisiert alle
Pakete im System entsprechend der Auswahl durch dselect
.
Dies installiert Paket und dessen Abhängigkeiten aus der testing-Distribution.
Dies installiert Paket aus der unstable-Distribution, während dessen Abhängigkeiten aus der testing-Distribution installiert werden.
Dies installiert Paket aus der unstable-Distribution, während dessen Abhängigkeiten auch aus der testing-Distribution mit einer Pin-Priority von 990 für unstable installiert werden.
Dies gibt den Status der Pakete foo bar ... aus.
Dies gibt die Informationen zu den Paketen foo bar ... aus.
Dies installiert die spezielle Version 2.2.4-1 des Pakets foo.
Dies installiert das Paket foo und entfernt das bar Paket.
Dies entfernt das Paket bar, die angepasste Konfiguration wird jedoch beibehalten.
Dies entfernt das Paket bar zusammen mit allen Konfigurationsdateien.
Die Option -u in den obigen Beispielen sorgt dafür, dass
apt-get
eine Liste aller Pakete ausgibt, die aktualisiert werden
können und fragt den Nutzer bevor es beginnt. Das folgende setzt die Option
-u standardmäßig:
$ cat >> /etc/apt/apt.conf << . // Immer zu aktualisierende Pakete anzeigen (-u) APT::Get::Show-Upgraded "true"; .
Die Option -s kann zum Simulieren eines Upgrades verwendet werden, ohne dass eine Aktualisierung erfolgt.
Abhängig von der von Ihnen bevorzugten Debian-Version kann die Datei
/etc/apt/preferences
in Einrichten des
APT-Systems, Abschnitt 6.2.2 entsprechend Ihren Wünchen angepasst werden:
für stable: Pin-Priority von testing auf 50 setzen für testing: Einstellungen wie oben gezeigt beibehalten für testing(unstable): Pin-Priority von unstable auf 500 setzen für unstable(testing): Pin-Priority von unstable auf 800 setzen
Eine Richtlinie für die Wahl der Pin-Priority ist das Wechseln von oben nach unten in der obigen Tabelle, so wie die Zeit von unmittelbar nach einer Veröffentlichung bis zum Einfrieren für die nächste Version vergeht.
Achtung: Das Verwenden der testing-Version von Debian hat den Nebeneffekt, dass Sicherheitsupdates nur langsam eingespielt werden.
Wenn verschiedende Versionen von Debian verwendet werden, so wie testing mit stable oder unstable mit stable, so werden höchstwahrscheinlich wichtige Pakete unabsichtlich von testing oder unstable genutzt, die fehlerhaft sein können. Sie wurden gewarnt.
Beispiele von /etc/apt/preferences
, in welchen einige wichtige
Pakete auf ausgereifte Versionen gesetzt werden, während die nicht ganz
ausgereiften für nichtessentielle Pakete verwendet werden, sind im Beispielverzeichnis
als
preferences.testing
und preferences.unstable
verfügbar. Auf der anderen Seite erzwingt preferences.stable
einen Versionssprung aller Pakete zu stable (Downgrad).
Um alle Pakete auf die stable-Distribution zurückzustufen,
editieren Sie die Datei /etc/apt/preferences
wie folgt:
Package: * Pin: release a=stable Pin-Priority: 1001
und führen Sie "apt-get upgrade" aus. Dieser Befehl stuft aufgrund der Pin-Priority > 1000 sämtliche Pakete herunter. Aber seien Sie gewarnt, es könnte kleinere Abhängigkeitsprobleme geben.
/etc/apt/preferences
In dem in Einrichten des APT-Systems, Abschnitt
6.2.2 aufgeführten Beispiel von /etc/apt/preferences
bedeutet
"Package: *" in der ersten Zeile, dass sich der Abschnitt auf alle
Pakete bezieht. Man kann auch einen Paketnamen anstatt von "*"
verwenden, um die Pin-Priority für das Paket festzulegen.
"Pin: release a=stable" in der zweiten Zeile bedeutet, dass
apt-get
die Packages.gz
-Datei aus dem Archiv nimmt,
das die Zeile "Archive: stable" in seiner Release
-Datei
enthält.
Die letzte Zeile "Pin-Priority: 500" setzt Pin-Priority auf 500.
Wenn es mehrere Pakete mit dem selben Namen gibt, so wird normalerweise das mit der höchsten Pin-Priority installiert.
Die Bedeutung der Pin-Priority ist:
Ein Zurückstufen (Downgrade) des Pakets ist erlaubt für diesen Bereich der Pin-Priority.
Ein Zurückstufen des Pakets ist nicht erlaubt. Einige wichtige Pin-Priority Werte:
apt-get(8)
gesetzt wird.
Die selben Effekte wie --target-release können durch Setzen von
/etc/apt/apt.conf
mittels
# echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf
erreicht werden. Die Kommandozeilenoption --target-release und
der Wert in /etc/apt/apt.conf
ersetzen die Einstellung in
/etc/apt/preferences
. Seien Sie vorsichtig damit, wenn Sie
gleichzeitig /etc/apt/preferences
editieren.
Mit diesem Wissen kann jeder ein Leben des ewigen "Aktualisierens" führen :-)
Wenn Sie auf Probleme bezüglich eines bestimmten Pakets stoßen, stellen Sie
sicher, dass Sie zuerst diese Seiten überprüfen, bevor Sie um Hilfe fragen oder
einen Bug-Report erstellen. (lynx
, links
und
w3m
sind hier gleichwertig):
$ lynx http://bugs.debian.org/ $ lynx http://bugs.debian.org/Paketname # wenn der Name bekannt ist $ lynx http://bugs.debian.org/Bugnummer # wenn Bugnr. bekannt ist
Suchen Sie auch bei Google
mit
Suchbegriffen wie "site:debian.org".
Wenn Sie nicht weiter kommen, lesen Sie die guten Handbücher. Setzen Sie CDPATH wie folgt:
export CDPATH=.:/usr/local:/usr/share/doc
und dann
$ cd Paketname $ pager README.Debian # falls dies existiert $ mc
Weitere Hilfequellen sind in Unterstützung für Debian, Kapitel 15 aufgelistet.
Es können Paketabhängigkeitprobleme beim Aktualisieren auf unstable/testing entsprechend Aktualisierung, Abschnitt 5.3 entstehen. Meistens liegt das daran, dass ein Paket aktualisiert wird, das neue Abhängigkeiten hat, die nicht erfüllt sind. Diese Probleme können unter Verwendung folgender Befehle gelöst werden:
# apt-get dist-upgrade
Wenn dies nicht hilft das Problem zu lösen, dann wiederholen Sie folgende Befehle solange, bis sich das Problem auflöst:
# apt-get upgrade -f # selbst bei Fehlern mit Upgrade ... ... oder # apt-get dist-upgrade -f # ... bzw. Dist-Upgrade fortfahren
Einige sehr fehlerhafte Upgrade-Skripte könnten permanente Schwierigkeiten
bereiten. In solch einer Situation ist es gewöhnlich besser, wenn man sich die
/var/lib/dpkg/info/Paketname.{post,pre}{inst,rm}
-Skripte
der betreffenden Pakete ansieht und anschließend
# dpkg --configure -a # konfiguriert alle nicht vollständig # installierten Pakete
ausführt.
Wenn eines der Skripte sich über eine fehlende Konfigurationsdatei beschwert,
dann schauen Sie in /etc/
nach der entsprechenden Datei. Wenn
eine mit der Dateiendung .new (oder so ähnlich) existiert,
entfernen Sie diese Dateiendung einfach (z.B. mit mv
).
Paketabhängigkeitsprobleme können auftreten, wenn Pakete in unstable/testing installiert werden. Diese können auf unterschiedliche Art und Weise umgangen werden.
# apt-get install -f Paket # ignoriere falsche Abhängigkeiten
Eine Alternative dazu wäre, das equivs
-Paket zu verwenden. Siehe
/usr/share/doc/equivs/README.Debian
und Das
equivs
-Paket, Abschnitt 6.5.2.
dpkg
Sollte das System einmal wirklich schwer geschädigt worden sein, beispielsweise
wenn dselect
(APT) abstürzt, kann man es auch nur mit Hilfe von
dpkg
wiederherstellen:
# cd /var/cache/apt/archives # dpkg -i libc6* libdb2* perl* # dpkg -i apt* dpkg* debconf* # dpkg -i * # solange, bis keine Fehler mehr auftreten
Sollte einmal ein Paket fehlen, können Sie es von Mirror-Seiten
herunterladen:
# mc # verwenden Sie "FTP-Verbindung" auf Debian-FTP-Server
Neue Pakete auf den HTTP/FTP-Servern befinden sich nicht mehr in dem
klassischen dist
-Verzeichnis, sondern im neuen
pool
-Verzeichnis. (Siehe Das
pool
-Verzeichnis, Abschnitt 2.1.10.)
Die Installation des Pakets erfolgt dann folgendermaßen:
# dpkg -i /var/cache/apt/archives/Paketdatei.deb
Sollte ein Problem mit einer Abhängigkeit auftreten, kann dieses wie folgt gelöst werden:
# dpkg --ignore-depends=Paket1 ... -i Paketdatei.deb # dpkg --force-depends -i Paketdatei.deb # dpkg --force-depends --purge Paket # dpkg --force-confmiss -i Paketdatei.deb # installiert fehlende # Konfigurationsdateien
Wenn /var/lib/dpkg/status
aus irgendeinem Grund fehlerhaft ist, so
verliert das Debian-System die Paketauswahldaten und nimmt Schaden. Schauen
Sie nach der alten /var/lib/dpkg/status
-Datei
/var/lib/dpkg/status-old
oder
/var/backups/dpkg.status.*
.
Eine eigene Partition für /var/backups/
zu erstellen, könnte eine
gute Idee sein, insbesondere da sich dort wichtige Systemdaten befinden.
Wenn die alte /var/lib/dpkg/status
-Datei nicht verfügbar ist, kann
man dennoch Informationen von Verzeichnissen in /usr/share/doc/
wiederherstellen.
# ls /usr/share/doc | \ grep -v [A-Z] | \ egrep -v '^(debian|texmf)$' | \ awk '{print $1 " install"}' | \ dpkg --set-selections ... neuinstallieren des Systems, abwählen je nach Bedarf: # dselect --expert
/var
Da das /var
-Verzeichnis regelmäßig aktualisierte Daten wie Mails
enthält, ist es für einen Ausfall anfällig. Das Auslagern auf eine unabhängige
Partition reduziert die Risiken. Wenn ein Unglück geschieht, muss das
/var
-Verzeichnis wiederhergestellt werden, um das Debian-System zu
retten.
Besorgen Sie sich den wichtigsten Inhalt des /var
-Verzeichnisses
von einem kleinen noch funktionsfähigem Debian-System, basierend auf der selben
oder einer älteren Debian-Version, z.B.
und
kopieren Sie dies in das Stammverzeichnis des defekten Systems. Führen Sie nun
folgendes aus:
var.tar.gz
# cd / # mv var var-alt # wenn noch sinnvolle Daten vorhanden sind # tar xvzf var.tar.gz # Woody's Minimaldatei verwenden # aptitude # oder dselect
Dies sollte zu einem funktionierenden System führen. Die Wiederherstellung der Paketauswahl kann beschleunigt werden, wenn man die in Wiederherstellung von Paketauswahldaten, Abschnitt 6.3.4 beschriebene Technik anwendet. (FIXME: Dieses Vorgehen benötigt mehr Versuche zur Bestätigung.)
Booten Sie Linux von einer der Debian-Rettungs-Disketten/CDs oder von einer
alternativen Partition in einem Multi-Boot-System. Vergleichen Sie Booten des Systems, Abschnitt 8.1.
Mounten Sie nun die nicht bootfähige Partition nach /target
und
verwenden Sie die chroot-Installationsmethode von dpkg
.
# dpkg --root /target -i Paketdatei.deb
Anschließend sollten Sie alles nötige konfigurieren und Probleme beheben.
Übrigens, wenn lilo
alles ist, was Sie davon abhält das System zu
booten, können Sie auch ganz einfach von einer Debian-Rettungsdiskette booten.
Am Boot-Prompt, vorausgesetzt Ihre root-Partition befindet sich auf
/dev/hda12
und Sie möchten im Run-Level 3 starten, geben Sie
Folgendes ein:
boot: rescue root=/dev/hda12 3
Daraufhin startet ein nahezu vollständiges System, mit dem Kernel von der Bootdiskette. (Möglicherweise werden nicht alle Hardwarekomponenten erkannt oder Module nicht geladen, dies liegt aber an dem Kernel von der Bootdiskette.)
Ein funktionsgestörtes dpkg
kann es verständlicherweise unmöglich
machen, beliebige .deb-Dateien zu installieren. Ein Vorgehen wie
das unten aufgeführte wird Ihnen dabei helfen, diese Situation wieder in den
Griff zu bekommen. (Natürlich können Sie links
durch Ihrem
favorisierten Browser ersetzen.)
$ links http://http.de.debian.org/debian/pool/main/d/dpkg/ ... herunterladen von dpkg_version_arch.deb $ su password: ***** $ ar x dpkg_version_arch.deb # mv data.tar.gz /data.tar.gz # cd / # tar xzfv data.tar.gz
Für die i386-Architektur kann auch http://packages.debian.org/dpkg als URL genutzt werden.
Das Verständnis der folgenden Befehle ist eine essentielle Voraussetzung, um zum einem eventuellen Upgrade-Problemen gewachsen zu sein und zum anderen um das Debian-Nirwana zu erreichen. :-)
Sie möchten den Namen des Pakets in Erfahrung bringen, welchem eine bestimmte Datei angehört:
... suche nach Muster in den installierten Paketdateien: $ dpkg {-S|--search} Muster ... finde das Dateinamen-Muster in den Debian-Archivdateien: $ wget http://ftp.us.debian.org/debian/dists/sarge/Contents-i386.gz $ zgrep -e pattern Contents-i386.gz
Sie können auch spezialisierte Paketkommandos verwenden:
... dlocate: inkompatibel zu slocate (sichere Version von locate): # apt-get install dlocate ... schnellere Alternative zu dpkg -L and dpkg -S: $ dlocate filename ... installiert Pakete automatisch auf Anfrage: # apt-get install auto-apt ... erzeugt eine Datenbank für auto-apt: # auto-apt update ... sucht nach einem Muster in allen Paketen, ob sie installiert ... sind oder nicht: $ auto-apt search Muster
Die Debian-Paketarchive können durchsucht und angezeigt werden. Stellen Sie
jedoch vorher sicher, dass APT die richtigen Archive in
/etc/apt/sources.list
findet. Wenn Sie sehen wollen, wie sich
Pakete in testing/unstable gegen die aktuell
installierten verhalten, so verwenden Sie apt-cache policy. Dies
ist sehr nett.
# apt-get check # aktualisiert den Cache und schaut nach # fehlerhaften Paketen $ apt-cache search Muster # sucht Pakete anhand Paketbeschreibung $ apt-cache policy Paket # Paketprioritäten/Distributions-Infos $ apt-cache show -a Paket # zeigt die Paketbeschreibung in allen # Distributionen $ apt-cache showsrc Paket # zeigt die Paketbeschreibung des # Quellpakets $ apt-cache showpkg Paket # zeigt Paketinformationen für Debugging # dpkg --audit|-C # sucht nach nicht vollständig # installierten Paketen $ dpkg {-s|--status} Paket ... # Beschreibung eines installierten # Pakets $ dpkg -l Paket ... # Status des installierten Pakets $ dpkg -L Paket ... # zeigt die Dateien an, die durch das # Paket installiert wurden
apt-cache showsrc ist in Woody noch nicht dokumentiert, funktioniert aber :)
Sie können ebenfalls anstelle der oben genannten Befehle Paketinformationen in folgenden Dateien finden (verwenden Sie beispielsweise mc zum Suchen):
/var/lib/apt/lists/* /var/lib/dpkg/available
Ein Vergleich folgender Dateien kann Aufschluss darüber geben, was genau bei der letzten Installation passiert ist.
/var/lib/dpkg/status /var/backups/dpkg.status*
Um Pakete nicht-interaktiv zu installieren, fügen Sie folgende Zeile zu
/etc/apt/apt.conf
hinzu:
Dpkg::Options {"--force-confold";}
Dies ist äquivalent zu apt-get -q -y Paket. Da dies
alle Fragen automatisch mit "Ja" beantwortet, kann dies zu Problemen
führen. Nutzen Sie diese Option deshalb mit Vorsicht. Lesen Sie
apt.conf(5)
und dpkg(1)
.
Sie können jedes einzelne Paket auch später wie in Installierte Pakete erneut konfigurieren, Abschnitt 6.4.4 beschrieben konfigurieren.
Verwenden Sie folgende Befehle, um bereits installierte Pakete erneut zu konfigurieren.
# dpkg-reconfigure --priority=medium Paket [...] # dpkg-reconfigure --all # Neukonfiguration aller Pakete # dpkg-reconfigure locales # generiere zusätzliche locales # dpkg-reconfigure --p=low xserver-xfree86 # konfiguriere den # X-Server neu
Führen Sie dies für debconf
aus, wenn Sie den Dialogmodus von
debconf
permanent ändern möchten.
Einige Programme sind mit speziellen Konfigurationsskripten ausgestattet. [3]
apt-setup - erstellt die Datei /etc/apt/sources.list install-mbr - installiert einen Master-Boot-Record-Manager tzconfig - setzt die lokale Zeitzone gpmconfig - konfiguriert den gpm-Maus-Daemon sambaconfig - konfiguriert Samba in Potato (Woody benutzt debconf) eximconfig - konfiguriert Exim (MTA) texconfig - konfiguriert teTeX apacheconfig - konfiguriert Apache (httpd) cvsconfig - konfiguriert CVS sndconfig - konfiguriert das Soundsystem ... update-alternatives - definiert Standardbefehle, z.B. vi für vim update-rc.d - System-V-init-Skript-Management update-menus - das Debian-Menüsystem ...
Entfernen eines Pakets, die Konfiguration wird nicht gelöscht:
# apt-get remove Paket ... # dpkg --remove Paket ...
Entfernen eines Pakets und dessen Konfiguration:
# apt-get remove --purge Paket ... # dpkg --purge Paket ...
Zunächst ein Beispiel: Möchte man, dass die Pakete libc6
und
libc6-dev
beim Ausführen von dselect
und
apt-get -u upgrade nicht durch neuere Versionen ersetzt werden, so
kann dies folgendermaßen erreicht werden:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
apt-get -u install Paket bleibt davon jedoch
unbeeinflusst. Um diese Pakete andererseits bei einem automatischen
Systemdowngrade mittels apt-get -u upgrade oder apt-get -u
dist-upgrade zurück zu halten, ist die Datei
/etc/apt/preferences
wie folgt zu erweitern:
Package: libc6 Pin: release a=stable Pin-Priority: 2000
An dieser Stelle kann der Eintrag "Package:" keine
Paketnamen wie z.B. "libc6*" enthalten. Wenn Sie
jedoch alle Pakete, die im Zusammenhang mit dem glibc
-Quellpaket
stehen, auf dem selben Stand halten möchten, müssen Sie diese alle explizit
auflisten.
Folgender Befehl zeigt alle Pakete an, die den Status "hold" haben:
dpkg --get-selections "*" | grep -e "hold$"
apt-show-versions
kann alle verfügbaren Paketversionen und deren
Zugehörigkeit zu den einzelnen Distributionen anzeigen.
$ apt-show-versions | fgrep /testing | wc ... Anzahl der installierten Pakete aus testing $ apt-show-versions -u ... Liste aller Pakete für die es aktuellere Versionen gibt $ apt-get install `apt-show-versions -u -b | fgrep /unstable` ... aktualisiert alle Paket aus unstable auf die aktuellste Version
APT speichert alle heruntergeladenen Paketdateien in
/var/cache/apt/archives/
. Diese können folgendermaßen gelöscht
werden:
# apt-get autoclean # löscht nur nicht benötigte Paketdateien # apt-get clean # löscht alle zwischengespeicherten Paketdateien
Erstellen einer lokalen Kopie der aktuellen Paketauswahl:
$ dpkg --get-selections "*" >meineAuswahl # oder \*
"*" veranlasst, dass auch Pakete mit einem Status von "purge" in meineAuswahl gespeichert werden.
Diese Datei kann auf einen anderen Computer kopiert werden, um dort die gleichen Pakete zu installieren:
# dselect update # dpkg --set-selections <meineAuswahl # apt-get -u dselect-upgrade # oder dselect install
Um selektive Upgrades in der stabilen Distribution zu machen, ist es möglich,
ein Quellpaket in dieser Umgebung zu kompilieren. Dies verhindert viele
Paketaktualisierungen, die durch Abhängigkeiten verursacht würden. Zuerst
müssen folgende Zeilen der /etc/apt/sources.list
-Datei hinzugefügt
werden:
deb-src http://http.us.debian.org/debian testing \ main contrib non-free deb-src http://non-us.debian.org/debian-non-US testing/non-US \ main contrib non-free deb-src http://http.us.debian.org/debian unstable \ main contrib non-free deb-src http://non-us.debian.org/debian-non-US unstable/non-US \ main contrib non-free
Aus Formatierungsgründen sind die Zeilen hier in je zwei Zeilen umgebrochen.
Natürlich muss aber jede mit "deb-src" beginnende Zeile für sich
alleine in sources.list
stehen.
Nun ist der Quellcode zu beziehen und ein lokales Paket zu erstellen:
$ apt-get update # aktualisiere die Quellpaketsuchliste $ apt-get source Paket $ dpkg-source -x Paket.dsc $ cd paket-version ... schauen Sie nach benötigten Paketen (Build-depends in der ... .dsc-Datei) und installieren Sie diese ebenso wie fakeroot $ dpkg-buildpackage -rfakeroot ... oder (keine Signatur erstellen) ... verwenden Sie später "debsign" wenn nötig $ dpkg-buildpackage -rfakeroot -us -uc ... Anschließend die Installation des Pakets $ su -c "dpkg -i Paketdatei.deb"
Gewöhnlich ist es nötig, einige Pakete mit der "-dev"-Erweiterung zu
installieren, um Paketabhängigkeiten auflösen zu können. debsign
ist im Paket devscripts
enthalten. auto-apt
kann die
Auflösung von Abhängigkeiten erleichtern. Mittels fakeroot
lässt
sich unnötige Benutzung des root-Accounts vermeiden.
In der Woody-Distribution lassen sich diese Abhängigkeitsprobleme vereinfachen.
Als ein Beispiel kompilieren wir pine
, das nur im Quellcode
vorliegt.
# apt-get build-dep pine # apt-get source -b pine
Möchte man ein lokales Paketarchiv erzeugen, welches mit APT und
dselect
kompatibel ist, so muss die Datei Packages
erstellt werden und Paketdateien müssen in einem bestimmten Verzeichnis
erstellt werden.
Ein lokales deb-Archiv (Repository) das ähnlich zum offiziellen Debian-Archiv ist, kann wie folgt erstellt werden:
# apt-get install dpkg-dev # cd /usr/local # install -d pool # die Paketdateien werden hier gespeichert # install -d dists/unstable/main/binary-i386 # ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override # editor override # anpassen von priority und section # dpkg-scanpackages pool override /usr/local/ \ > dists/unstable/main/binary-i386/Packages # cat > dists/unstable/main/Release << EOF Archive: unstable Version: 3.0 Component: main Origin: Local Label: Local Architecture: i386 EOF # echo "deb file:/usr/local unstable main" \ >> /etc/apt/sources.list
Alternativ kann auch folgende, schnellere aber unsaubere, Methode verwendet werden:
# apt-get install dpkg-dev # mkdir /usr/local/debian # mv /irgend/ein/Paket.deb /usr/local/debian # dpkg-scanpackages /usr/local/debian /dev/null | \ gzip - > /usr/local/debian/Packages.gz # echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list
Auf ein solches Archiv kann auch von entfernten Computern zugegriffen werden,
indem der Zugriff auf diese Verzeichnisse durch HTTP oder FTP ermöglicht wird.
Die Datei /etc/apt/sources.list
muss dementsprechend angepasst
werden.
Mit Hilfe des alien
-Pakets lassen sich binäre Pakete, wie sie in
vielen Distributionen wie Red Hat rpm, Stampede slp,
Slackware tgz und Solaris pkg verwendet werden, in
das Debian deb-Paketformat konvertieren. Wenn Sie ein Paket von
einer anderen Distribution verwenden möchten, können Sie es mit
alien
in Ihr bevorzugtes Paketformat konvertieren und anschließend
installieren. alien
unterstützt ebenfalls LSB-Pakete.
debsums
verifiziert installierte Paketdateien anhand deren MD5
Prüfsummen. Jedoch gibt es auch Pakete die keine MD5-Prüfsummen enthalten.
Eine mögliche temporäre Lösung für Systemadministratoren ist folgende:
# cat >>/etc/apt/apt.conf.d/90debsums DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";}; ^D
von Joerg Wendland joergland@debian.org
(nicht
getestet).
sources.list
Um es kurz zu machen, raffinierte Anstrengungen um sources.list
optimal zu erzeugen führte nicht zu einer signifikanten Verbesserungen für mich
in den USA. Ich wähle manuell einen nahe gelegenen Server mittels
apt-setup
.
apt-spy
erzeugt sources.list
automatisch, basierend
auf der Wartezeit und der Bandbreite. netselect-apt
erzeugt eine
komplexere sources.list
, nutzt aber eine einfachere Methode zur
Bestimmung des besten Spiegels (ping Zeitvergleich).
# apt-get install apt-spy # cd /etc/apt; mv sources.list sources.list.org # apt-spy -d testing -l sources.apt
dpkg-divert
-Befehl
Dateiumleitungen ist eine Methode, um dpkg
dazu
zu bringen, Dateien nicht in ihre Standardverzeichnisse zu installieren,
sondern in umgeleitete Verzeichnisse.
Umleitungen können durch Debian-Skripte dazu genutzt werden,
Dateien zu verschieben, wenn sie einen Konflikt verursachen.
Systemadministratoren können auch eine Umleitung verwenden, um die
Konfigurationsdatei eines Pakets zu überschreiben, oder wann immer einige
Dateien (welche nicht als conffiles markiert sind) von
dpkg
nicht überschrieben werden sollen, wenn eine neuere Version
eines Pakets installiert wird, das solche Dateien enthält (siehe Bewahren der lokalen Konfiguration,
Abschnitt 2.2.4).
# dpkg-divert [--add] Datei # erstellen der "Umleitung" # dpkg-divert --remove Datei # entfernen der "Umleitung"
Für gewöhnlich ist es ratsam dpkg-divert
nicht zu verwenden wenn
es nicht absolut notwendig ist.
equivs
-Paket
Wenn Sie ein Quellpaket kompilieren ist es empfehlenswert, es zu einem echten
lokalen Debianpaket (*.deb) zu machen. Benutzen Sie
equivs
als letzten Ausweg.
Package: equivs Priority: extra Section: admin Description: Circumventing Debian package dependencies This is a dummy package which can be used to create Debian packages, which only contain dependency information.
Möchte man dass der Befehl vi
vim
ausführt, benutzen
Sie update-alternatives
:
# update-alternatives --display vi ... # update-alternatives --config vi Selection Command ----------------------------------------------- 1 /usr/bin/elvis-tiny 2 /usr/bin/vim *+ 3 /usr/bin/nvi Enter to keep the default[*], or type selection number: 2
Einstellungen im Debian-Alternativsystem werden in
/etc/alternatives/
als symbolische Links gespeichert.
Um Ihre bevorzugte X-Window-Umgebung einzustellen, führen sie
update-alternatives
für /usr/bin/x-session-manager
und /usr/bin/x-window-manager
aus. Für weitere Informationen,
siehe Angepasste X-Sitzung, Abschnitt
9.4.5.1.
/bin/sh
ist ein symbolischer Link auf /bin/bash
oder
/bin/dash
. Aus Kompatibilitätsgründen zu alten
Bash-verunreinigten Skripten ist es sicherer, /bin/bash
zu
verwenden. Um die POSIX-Konformität einzuhalten sollte jedoch
/bin/dash
verwendet werden. Mit dem Upgrade auf den
2.4er-Linux-Kernel geht die Tendenz zugunsten zu /bin/dash
.
init
und Runlevel
Der Standardrunlevel in dem gebootet wird, lässt sich in
/etc/inittab
festlegen.
In Debian ist es dem Systemadministrator möglich, einzustellen, welche Dienste
in welchem Runlevel laufen sollen. Das update-rc.d
-Werkzeug kann
verwendet werden, um diese Einstellungen zu ändern, unabhängig davon, ob die
sysv-rc
- oder die file-rc
-Methode zum Kontrollieren
von Diensten verwendet wird.
Um zum Beispiel den Dienst name (mit dem Init-Skript
/etc/init.d/name
) mit der Sequenznummer 20 in den
Runlevel 2, 3 und 4 zu starten und in Runlevel 5 mit der Sequenznummer 80 zu
stoppen, ist folgendes auszuführen:
# update-rc.d name start 20 2 3 4 . stop 80 5 .
Wenn Sie das sysv-rc
Paket benutzen, gibt es einen anderen Weg,
solche Änderungen durchzuführen: Benennen Sie einfach die symbolischen Links in
den /etc/rc?.d
Verzeichnissen um.
# mv S99xdm K01xdm # xdm deaktivieren (X-Display-Manager)
Die Debian-Distribution nimmt die Systemsicherheit sehr ernst und erwartet, dass der Systemadministrator kompetent ist. Eine einfache Administration steht so oft nur an zweiter Stelle und viele Daemon-Dienste sind in der Standard-Installation mit dem höchsten Sicherheitslevel vorkonfiguriert oder mit den wenigsten Diensten (oder keinen) ausgestattet.
Führen Sie ps aux aus oder überprüfen Sie die Inhalte von
/etc/init.d/*
und /etc/inetd.conf
, wenn Sie
irgenwelche Zweifel (zu Exim, DHCP, ...) haben. Überprüfen Sie auch
/etc/hosts.deny
wie in Zugriffskontrolle mit PAM und login,
Abschnitt 9.2.1. Der pidof
-Befehl ist ebenfalls hilfreich
(siehe pidof(8)
).
X11 erlaubt standardmäßig keine (entfernten) TCP/IP-Verbindungen in neueren
Debian-Versionen. Schauen Sie in TCP/IP-Verbindungen mit X, Abschnitt 9.4.6.
X-Weiterleitung mittels SSH ist ebenfalls deaktiviert. Vergleichen Sie mit X-Fernverbindungen mit ssh
,
Abschnitt 9.4.8.
Debian-Referenz
CVS, Mon 3. Apr 2005, 22:57:58 UTCosamu@debian.org
tux-master@web.de