Debian:Packages
Aus KissDoc
Thema: Debian
Inhaltsverzeichnis |
Allgemein
Die Verwaltung von Software wird von den verschiedenen Distributionen verschieden gehandhabt. Die einen nehmen yast, die anderen nehmen rpm und die besten setzen auf dpkg.
Unter Debian kann apt für die Verwaltung von Softwarepackages verwendet werden. Dabei ist apt kein eigenständiges Binary sondern eine
C-Bibliothek, die von vielen anderen Programmen wie apt-get, aptitude oder synaptik angezapft wird. Wir nutzen bei uns vor allem die Programme apt-get, apt-cache und apt-file. Diese sind rein consolenorientiert, schnell, übersichltich - eben einfach nur schön.
Konfiguration
apt
Zur Konfiguration nutzt apt die Datei /etc/apt/apt.conf, bzw. alle Dateien, die sich in /etc/apt/apt.conf.d. Hier können spezielle Einstellungen zur Arbeitsweise von apt eingestellt werden, was im Normalfall aber nicht notwendig ist. Nachfolgend sind einige Einstellungen aufgeführt, die eventuell mal notwendig sind.
APT::Cache-Limit "12500000";setzt bzw. erhöht das Cache-Limit. Die Einstellung ist dann wichtig, wenn mehr als eine Quelle in dersources.listverwendet wird.
Nützlich Hinweise dazu findet man auch im Linux-Magazin.
Hinweis: Zum Anzeigen der aktiven apt-Konfiguration kann man den Befehl apt-config dump benutzen.
Hinweis: Alle Konfigurationseinträge können auch beim Aufruf der apt-basierenden Programme mit der Option -o gesetzt werden.
apt-file
Zur Konfiguration nutzt apt-file die Datei /etc/apt/apt-file.conf und für die zu durchsuchenden Packages
die Datei /etc/apt/apt.conf. Einstellen braucht man hier eigentlich gar nix, außer man will als Downloadprogramm für die
/var/cache/apt/xyz_contents_xyz.gz (Aufruf mit apt-file update) ein anderes Programm als curl nutzen, z.B. wget.
SecureApt
Software-Quellen
Quellen einstellen
Datei /etc/apt/source.list
Quellen aktualiesieren
Der Aufruf apt-get update aktualisiert die verfügbaren Packages und stützt sich auf
die Datei /etc/apt/sourceslist.
Wenn man mehr als eine Quelle hat, kann es sein, dass der Paket-Puffer erweiter werden muss.
Dazu wird in der Datei /etc/apt/apt.conf der Eintrag APT::Cache-Limit 100000000; gesetzt bzw. erhöht.
Package Informationen
apt-cache search <packagename>Package suchenapt-cache show <packagename>Beschreibung zum Packageapt-cache policy <packagename>spezielle Quelle abfragenapt-cache pkgnameslistet alle Package-Namen auf (nur den Namen)apt-cache depends <packagename>zeigt die Abhängigkeiten zu dem Package anapt-cache rdepends <packagename>zeigt die Rückwärts-Abhängigkeiten zu dem Package andpkg -L <packagename>zeigt alle Dateien zu diesem (installierten) Packages andpkg -S <filename>sucht in den lokal installierten Packages nach diesem Dateinamenapt-file search <filename>sucht in den verfügbaren Packages (aussource.list) nach diesem Dateinamenapt-show-version -uzeigt Version/Upgrade-Informationen zu Packages andpkg --info <filename>zeigt alle Paketinformationen an
Backports
Backports sind nichtoffizielle Softwareverzeichnisse, welche thematisch einzelne Softwarepakete (und deren Abhängigkeiten) pflegen. Die Nutzung solcher Backport - Archive ist recht einfach. Ab Debian etch ist dafür noch ein PGP Key nötig (hkp - Port nicht vergessen):
gpg --keyserver subkeys.pgp.net --recv-keys 16BA136C gpg --armor --export 16BA136C | apt-key add -
Software-Installieren
apt-get install <packagename>installiert ein Packageapt-get dist-upgradeaktualisiert alle bereits installierten Packages auf den neuesten Standapt-get dist-upgradeist prinzipiell dasselbe wieapt-get update, soll wohl aber besser funktionieren. Es aktualisiert vor allem zuerst die OS-wichtigen Software.dpkg -i <file.deb>installiert ein Package von der angegebenen Datei. Diese Vorgehen ist bei selbst erstellen Debian-Packages (*.deb) notwendig.
Das Programm aptitude funktioniert wie apt-get, merkt sich aber bei der Installation
von Paketen, welche Pakete noch zusätzlich mit installiert werden. Bei einer Deinstallation
mit aptitude werden dann die extra-Pakete mit deinstalliert. Da aber aptitude mit einer Menü-Führung arbeitet, wurde es von uns Consolenfreaks abgewählt :-)
Software-Deinstallieren
apt-get remove <packagename> --purge <packagename>deinstalliert ein Package und löscht auch alle Konfigurationsdateien des Packages. Ohne--purgebleiben eventuell Datei-Leichen zurück.
Software-Leichen
Das Package deborphan findet »verwaiste« Pakete auf dem System. Es bestimmt, welche Pakete
keine Abhängigkeiten für andere Pakete enthalten, und zeigt eine Liste dieser
Pakete an. Es ist besonders nützlich für das Auffinden von Bibliotheken, kann aber
für Pakete in allen Sektionen benutzt werden.
Wenn ein Package bereits gelöscht ist, aber sich noch Fragmenete vom Package im Dateisystem befinden (z.B. Config-Dateien), werden diese mit dpkg -l immer noch mit rc ... angezeigt. Hier hilft dann folgendes:
dpkg --purge <packagename>
automatische Updates
Ein Automatistmus, was die Software-Updates angeht, ist bei vielen Leuten umstritten. Aber trotzdem sollte eine gewisse Automatisierung (z.B. per Cron) her. Entweder gleich eine Upgrade - oder man lässt sich z.B. per mail über neue Updates Benachrichtigen. Im Debian-Forum gibt's dazu einen guten Artikel.
Problembehandlung
Apt gilt zwar als die beste Package-Verwaltung, aber Probleme gibts überall.
apt-get mooist vor jeder Problembehandlung unbedingt auszuführen.apt-cache depends packagenamezeigt die Abhängigkeiten von anderen Packages bzw. Konflikte an.apt-get install -fversucht das Problem bei fehlendenden oder falsch installierten Packages zu beheben.apt-get dist-upgrade -o APT::Force-LoopBreak=1Die Option ist zu setzen, wenn apt temporär wichtige Packages entfernen will.dpkg --force-all --purge packagenameentfernt nur das Package, auch wenn andere Packages davon abhängig sind. Damit handelt man sich allerdings ein Abhängigkeitsproblem ein (also mit Vorsicht verwenden), aber manchmal ist es genau das, was man braucht. Achtung: Nach Absenden des Befehls gehts sofort los, ohne Rückfrage !!!
Eigene Packages
Gut verpakt ist halb gewonnen ist das Motto einer hübschen Beschreibung von Heiko. Die offiziellen Dokumentationen wie z.Bsp. die Anleitung für zukünftige Debian-Maintainer (als HTML und Text) oder Debian Pakete im Detail sind natürlich auch nicht zu verachten. Die eigentlich wichtigen Dokumente sind jedoch in den DDP Entwickler-Handbücher zu finden, allen voran die Debian Policy
Als Beispiel soll hier mal Doxygen herhalten. Die Software besteht im Kern aus nur vier Dateien, den beiden binaries doxygen und doxytag und den dazugehörigen Manpages.
Wir versuchen den offiziellen Debian-Weg zu gehen.
- enpacken der tar datei
tar xzf doxygen-1.5.6.src.tar.gz
- wechseln in das Verzeichniss und aufrufen von dh_make
cd doxygen-1.5.6 dh_make -e nicos@neptun -f ../doxygen-1.5.6.src.tar.gz
Type of package: single binary, multiple binary, library, kernel module or cdbs? [s/m/l/k/b] s Maintainer name : unknown Email-Address : nicos@neptun Date : Wed, 16 Jul 2008 13:08:13 +0200 Package Name : doxygen Version : 1.5.6 License : blank Type of Package : Single Hit <enter> to confirm: Done. Please edit the files in the debian/ subdirectory now. doxygen uses a configure script, so you probably don't have to edit the Makefiles.
dh_make muss aus dem source verzeichniss aufgerufen werden um korrekt zu funktionieren, anschliessen wird es fuer ein Single Package ausgewaehlt.
- Jetzt werden ein paar Dateien editiert, angefangen bei der debian/rules
Hier wird der build prozess konfiguriert.
vim debian/rules
die configure Zeile wird angepasst, da doxygen den install path schon beim configure haben will. config.status: configure
./configure --prefix $(CURDIR)/debian/doxygen/usr
ausserdem wird die make install zeile angepasst, aus gleichem Grunde wie oben
install: build
$(MAKE) install
- anpassen der debian/control
ACHTUNG: bei der Langbeschreibung der Description muss vor jeder Zeile ein Leerzeichen stehen
- anpassen der changelog
hier wird die versions nummer festgelegt
debchange -e
die versionsnummer um 1 erhoehen geht mit
debchange -i
- aufrufen von dpkg-buildpackage
dpkg-buildpackage -rfakeroot
oder
debuild
im verzeichniss debian befindet sich jetzt ein unterverzeichniss doxygen, in dem sich ein testlauf des install prozesses liegt
die deb pakete werden in /usr/local/src/pool/<Sektion>
das script mkdeb.sh erstellt die noetigen Packeges.gz fuer unsrer Repository, zu finden ist das file in den bin-tools im cvs.
Paket modifizieren
Am Beispiel von hello soll der Weg zur Modifizierung eines Packages gezeigt werden. Zunächst erst mal die Quellen:
mkdir -p ~/src/hello cd ~/src/hello apt-get source hello
Danach haben wir ein Verzeichnis (hello-2.1.1), welches die an Debian angepaßten Quellen und ein spezielles debian Verzeichnis enthält. Auch existieren die Dateien hello_2.1.1.orig.tar.gz (enthält den unmodifizierten Originalcode), hello_2.1.1-5.diff.gz (die Änderungen vom Origialcode zur Debianvariante) und die Beschreibung hello_2.1.1-5.dsc.
Jetzt könnte man erst mal das Package erzeugen:
cd hello-2.1.1 dpkg-buildpackage -us -uc -rfakeroot
Nun sollte das Package bereits erzeugt werden und Änderungen können jetzt vorgenommen werden.
Zum entpacken des Deb-Files kann nun auch dpkg-deb verwendet werden:
dpkg-deb -x DEBFILE DESTINATION dpkg-deb -e DEBFILE DESTINATION
Quellen
- Debian-Forum
- debian-keyring
- http://www.linux-magazin.de/heft_abo/ausgaben/2002/11/versionen_spagat
- http://www.debian.org/devel/wnpp/ WNPP Liste (Pakete anmelden)
- http://debiananwenderhandbuch.de/apt-get.html
- http://www.derstappen-it.de/dokumentationen/debian-gnu-linux/apt-pinning/
W: GPG error: http://deb.opera.com etch Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 033431536A423791
gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 033431536A423791
gpg: requesting key 6A423791 from hkp server wwwkeys.eu.pgp.net
gpg: key 6A423791: public key "Opera Software Archive Automatic Signing Key <hostmaster @opera.com>" imported
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 6 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1 valid: 6 signed: 0 trust: 6-, 0q, 0n, 0m, 0f, 0u
gpg: Total number processed: 1
gpg: imported: 1
gpg --armor --export 033431536A423791 | apt-key add -
als root
1. apt-get install debian-keys 2. apt-get install gnupg 3. gpg --import /usr/share/keyrings/debian-keyring.gpg 4. apt-key add /usr/share/keyrings/debian-role-keys.gpg 5. apt-get update
http://www.debian.org/doc/manuals/apt-howto/ http://www.debian.org/doc/manuals/repository-howto/repository-howto.de.html

