Die Entwickler von Debian integrieren kontinuierlich freie Software
nach unstable
, propagieren unproblematische Pakete nach
testing
und veröffentlichen ungefähr alle 2 Jahre eine neue
stable
-Version. Diese gibt das Release-Team erst nach einer
ausgiebigen Testphase frei. Anschließend werden dort nur noch Fehler
behoben und Sicherheitslücken geschlossen.
Das Advanced Packaging Tool lädt Programmpakete aus Depots im Internet herunter, löst Abhängigkeiten auf, installiert Programme und hält das System stets aktuell. Das Depot für Rückportierungen enthält aktuelle, aber weniger gut getestete Programm-Versionen.
/etc/apt/sources.list# Type Repository Suite Component deb http://deb.debian.org/debian stable main deb http://deb.debian.org/debian-security stable-security main deb http://deb.debian.org/debian stable-updates main deb http://deb.debian.org/debian stable-backports main
Um Pakete nur einmal aus dem Internet zu holen, kann man auf einem lokalen Server den Apt-Cacher betreiben, der als Proxy für alle Rechner im Netzwerk Pakete speichert.
/etc/apt/apt.conf.d/02proxyAcquire::http { Proxy "http://Host:3142"; };
Paketliste (/var/lib/apt/lists
) aktualisieren
apt update
System aktualisieren
apt upgrade
Installierte Pakete auflisten
apt list --installed
Paketliste durchsuchen
apt search Keyword
Paket aus einem externen Depot installieren
apt install -t bullseye-backports Package
Paket entfernen
apt remove Package
Konfiguration und Daten von deinstallierten Paketen restlos aufräumen.
apt purge $(dpkg -l | grep '^rc' | awk '{print $2}')
Pakete mit bestimmter Priorität finden
aptitude search '~pPriority'
Essentielle Pakete auflisten
aptitude search '?essential'
Rund um die Paketverwaltung stehen diverse Programme zur Verfügung.
dpkg | [File] | Einzelne Paketdatei (*.deb ) verarbeiten | |
dpkg-deb | File | [Dir] | Paketdatei (*.deb ) erzeugen |
apt | Command | [Package] | Oberbau für apt-get und apt-cache |
apt-get | Pakete aus dem Internet installieren | ||
apt-cache | Lokale Paketlisten durchsuchen | ||
apt-key | Command | PGP-Schlüssel verwalten | |
tasksel | [Task] | Paketsammlungen auswählen | |
apticron | Aktualisierungen per Elektropost ankündigen | ||
aptitude | Curses Oberfläche für apt | ||
synaptic | Graphische Oberfläche für apt |
-i, --install | Paket installieren |
--unpack | Nur entpacken |
--configure | Nur konfigurieren |
-r, --remove | Paket entfernen |
-P, --purge | Konfiguration und Daten löschen |
-V, --verify | Integrität prüfen |
-C, --autio | Konsistenz prüfen |
--get-selections | Paketauswahl ausgeben |
--set-selections | Paketauswahl setzen |
--clear-selections | Paketauswahl löschen |
--print-architecture | Architekturen auflisten |
--add-architecture | Architekture hinzufügen |
-b, --build | Paket bauen |
-c, --contents | Dateien auflisten |
-e, --control | DEBIAN Verzeichnis extrahieren |
-x, --extract | Dateien extrahieren |
-f, --field | Kontrolldatei ausgeben |
--ctrl-tarfile | Metadaten-Archiv ausgeben |
--fsys-tarfile | Dateisystem-Archiv ausgeben |
-I, --info | Informationen ausgeben |
update | Paketliste aktualisieren |
upgrade | Installierte Pakete aktualisieren |
install | Paket installieren |
remove | Paket entfernen |
purge | Konfiguration und Daten löschen |
autoremove | Automatisch installierte Pakete entfernen |
search | Schlüsselwort suchen |
show | Kontrolldatei ausgeben |
list | Pakete auflisten |
edit-sources | sources.list im $EDITOR öffnen |
add [File] | Schlüssel hinzufügen |
del KeyId | Schlüssel entfernen |
export KeyId | Schlüssel ausgeben |
exportall | Alle Schlüssel ausgeben |
update | Schlüssel aus Datei aktualisieren |
net-update | Schlüssel aus dem Internet herunterladen |
list | Schlüssel auflisten |
finger | Fingerabdrücke auflisten |
adv | Optionen an PGP durchreichen |
-t, --test | Testmodus |
--new-install | Dialog mit Desktop, Drucker und Standard anzeigen |
--list-tasks | Sammlungen auflisten |
--task-packages | Pakete der Sammlung auflisten |
--task-desc | Beschreibung ausgeben |
standard | apt-listchanges apt-utils bash-completion cron |
task-laptop | avahi-autoipd bluetooth powertop iw wireless-tools wpasupplicant |
desktop | xorg xserver-xorg-video-all xserver-xorg-input-all desktop-base |
task-gnome-desktop | gnome gimp synaptic firefox libreoffice network-manager-gnome … (über 1000 Pakete) |
kde-desktop | task-desktop kde-standard sddm |
cinnamon-desktop | task-desktop cinnamon-desktop-environment |
mate-desktop | task-desktop mate-desktop-environment lightdm |
lxde-desktop | task-desktop lxde lightdm |
lxqt-desktop | task-desktop lxqt sddm sddm-theme-debian-elarun |
web-server | apache2 |
print-server | cups cups-client cups-bsd |
ssh-server | openssh-server |
Die Datei DEBIAN/control
beschreibt die Metadaten des Pakets
Feld | Inhalt | Beispiel | Beschreibung |
---|---|---|---|
Package | Package | hello | Name des Pakets |
Version | Version | 1.0 | Versionsnummer |
Maintainer | EmailAddress | Frank <phrank@….de> | Kontaktdaten |
Description | Text | Hello World | Kurzbeschreibung |
Section | Section | utils | Kategorie |
Priority | Priority | optional | Priorität |
Installed-Size | Size | 42 | Speicherplatz in Kilobyte |
Essential | no | yes | Kennzeichen für Pakete |
Build-Essential | no | yes | |
Architecture | Architecture | all | Hardwaretyp |
Origin | Name | debian | Ursprungs-Distribution |
Bugs | Url | debbugs://… | Fehlerdatenbank |
Homepage | Url | http://illusioni.de | Webseite des Entwicklers |
Tag | Name::Value[, …] | role::program | Etiketten, siehe debtags |
Package-Type | Type | deb | Normal oder Installer |
Multi-Arch | no | ||
Source | Package | Name des Quellpakets | |
Pre-Depends | Package[, …] | Abhängigkeit in preinst | |
Depends | Package[, …] | Abhängigkeiten | |
Recommends | Package[, …] | Empfehlungen | |
Suggests | Package[, …] | Vorschläge | |
Breaks | Package[, …] | Beschädigung | |
Conflicts | Package[, …] | servus | Gemeinsame Dateien |
Replaces | Package[, …] | servus | Ersatz für anderes Paket |
Enhances | Package[, …] | Umgekehrter Vorschlag | |
Provides | Package[, …] | greeting | Instanz für virtuelles Paket |
Built-Using | Package[, …] | Zusätzliche Quellpakete |
deb | Binärpaket |
deb-src | Quellpaket |
http://deb.debian.org/debian | CDN für Spiegelserver |
http://security.debian.org | Sicherheitsaktualisierungen |
https://download.virtualbox.org/virtualbox/debian | Oracle VirtualBox |
stable | Aktuelle Version von Debian |
testing | Nächste Version von Debian |
unstable | Aktueller Entwicklungsstand ohne jede Garantie |
sid | Still In Development |
experimental | Experimente einzelner Entwickler oder Arbeitsgruppen |
main | Freie Software gemäß DFSG |
contrib | Ebenfalls freie Software, die aber von nicht-freier Software abhängt |
non-free | Kostenlose Software, die nicht unter einer freien Lizenz steht; hauptsächlich Firmware |
admin | Systemverwaltung |
net | Netzwerk |
Elektropost | |
text | Textverarbeitung |
utils | Hilfsprogramme |
web | World Wide Web |
x11 | X Window System |
… |
required | Minimalsystem |
important | Netzwerkbetrieb |
standard | Systemwerkzeuge |
optional | Anwendungsprogramme |
extra | Ergänzungen |
all | Plattformunabhängig |
amd64 | Aktuelle Intel- und AMD-Prozessoren |
i386 | Alte PCs und Netbooks |
armel | NAS mit Kirkwood Chipsatz (Little Endian) |
armv6k | Raspberry Pi |
armhf | ARM-Prozessoren mit FPU |
arm64 | Mobiltelefone |
mips[[64]el] | Kleine Router, z.B. Fritz!Box |
ppc64el | IBM p-Series, RS/6000 |
s390x | IBM z-Series, System/390 Großrechner |
Default | Alle Pakete mit Priorität required und important |
minbase | Nur Pakete mit Priorität required |
buildd | …mit build-essential |
fakechroot | …ohne root -Rechte |
no | |
same | |
foreign | |
allowed |
deb | Normales Paket |
udeb | Modul des Installers |
Das folgende Minimalbeispiel legt eine Verzeichnisstruktur mit einer Kontrolldatei an und erzeugt daraus ein installierbares Paket.
dest=hello_0.1_all mkdir -p $dest/{DEBIAN,usr/bin} cat << . > $dest/usr/bin/hello echo "Hello, World!" . cat << . > $dest/DEBIAN/control Package: hello Version: 0.1 Priority: Optional Maintainer: Frank Hoffmann <phrank@illusioni.de> Section: main Architecture: all Description: Say "Hello" to the world. In a nice way. . dpkg-deb --build --root-owner-group $dest
Beim Installieren und Entfernen von Paketen führt dpkg
Skripte aus. Diese werden in /var/lib/dpkg/info/
abgelegt.
DEBIAN/preinst
DEBIAN/postinst
DEBIAN/prerm
DEBIAN/postrm
Mit reprepro(1)
können wir ein privates Depot betrieben.
Dazu generieren und exportieren wir auf dem Arbeitsrechner
ein Schlüsselpaar und kopieren dieses auf den Server.
gpg --gen-key gpg --armor --export User --output gpg.key gpg --armor --export-secret-key User --output sec.key scp *.key nas:
Den privaten Schlüssel importieren wir in den Schlüsselbund und stellen den öffentlichen Schlüssel per Webserver zur Verfügung.
apt install reprepro export REPREPRO_BASE_DIR=/var/www/html/debian mkdir -p $REPREPRO_BASE_DIR/conf mv gpg.key $REPREPRO_BASE_DIR gpg --import sec.key
In die Konfigurationsdatei legen wir fest, für welche Architektur und Distribution wir Pakete anbieten.
/var/www/html/debian/conf/distributionsOrigin: Fnord Motorenwerke Description: Debian Repository for Fnord Motorenwerke Label: fnord Codename: bullseye Suite: stable Components: main Architectures: amd64 SignWith: phrank
Weitere Einstellungen
/var/www/html/debian/conf/optionsverbose basedir /var/www/html/debian ask-passphrase
Nun können wir selbst erstelle Pakete dem Depot hinzufügen.
reprepro includedeb bullseye hello_0.1_all.deb … reprepro remove bullseye hello
/var/www/html/debian/dists/Suite/Component/Architecture/Packages.gz
Depot auf dem Client hinzufügen:
curl http://nas/debian/gpg.key | apt-key add echo "deb http://nas/debian bullseye main" >> /etc/apt/sources.list apt update apt install hello