Debian Paketmanagement
apt-cache
apt-cache wird benutzt um Pakete zu suchen.
Beispiele
root@zero:~# apt-cache search wlan linux-wlan-ng - Hilfsprogramme für Wireless Prism2 Karten linux-wlan-ng-doc - documentation for wlan-ng ifplugd - configuration daemon for ethernet devices linux-wlan-ng-firmware - firmware files used by the linux-wlan-ng driver linux-wlan-ng-source - linux-wlan-ng driver ap-utils - Access-Point-SNMP-Werkzeuge für Linux kismet - Wireless 802.11b-Beobachtungs-Programm kwlan - KDE-Oberfläche für wpasupplicant rt73-common - RT73(RT2571W) Wireless Lan Linux Driver - common files rt73-source - RT73(RT2571W) Wireless Lan Linux Driver - kernel module sources
oder
root@zero:~# apt-cache search apache | grep mysql libapache2-mod-auth-mysql - Apache 2 module for MySQL authentication libapache2-mod-log-sql-mysql - Use SQL to store/write your apache queries logs - MySQL interface proftpd-mod-mysql - versatile, virtual-hosting FTP daemon - MySQL module pure-ftpd-mysql - Pure-FTPd FTP server with MySQL user authentication
Infos über ein Paket anzeigen
root@zero:~# apt-cache show man-db Package: man-db Priority: standard Section: doc Installed-Size: 2680 Maintainer: Colin Watson <cjwatson@debian.org> Architecture: i386 Version: 2.5.5-1build1 Replaces: man, manpages-de (<< 0.5-4), nlsutils Provides: man, man-browser Depends: groff-base (>= 1.18.1.1-15), bsdmainutils, debconf (>= 1.2.0) | debconf-2.0, dpkg (>= 1.9.0), libc6 (>= 2.8), libgdbm3, zlib1g (>= 1:1.1.4) Suggests: groff, less, www-browser Conflicts: man, suidmanager (<< 0.50) Filename: pool/main/m/man-db/man-db_2.5.5-1build1_i386.deb Size: 973440 MD5sum: 0b72088eaccb960b5f11baac2f43869c SHA1: f5a6556c92afa574bf81538bfac56d40a7dac1ad SHA256: 1f9fdfe23af6be42c6b8dc982468b3552f5a9c35f54e6c1515c9ef8fe04c26e0 Description-de: Programm zum Lesen von Manpages Dieses Paket enthält das Programm man, das die primäre Methode zum Lesen der Online-Hilfedateien (Manpages) darstellt. Weitere Tools sind die Programme whatis und apropos (zum Durchsuchen der Manpage-Datenbank), das Programm manpath zum Bestimmen des Manpage-Suchpfades, sowie die Pflegeprogramme mandb, catman und zsoelim. man-db benutzt die »groff«-Suite, um Manpages zu formatieren und anzuzeigen. Homepage: http://man-db.nongnu.org/ Bugs: https://bugs.launchpad.net/ubuntu/+filebug Origin: Ubuntu Task: standard, mobile-live, mobile-mid
Abhängigkeiten eines Paket anzeigen
root@zero:~# apt-cache depends ssh ssh Hängt ab: openssh-client Hängt ab: openssh-server
Statistiken anzeigen
root@zero:~# apt-cache stats Gesamtzahl an Paketnamen: 34851 (1394k) davon gewöhnliche Pakete: 26580 davon rein virtuelle Pakete: 366 davon einzelne virtuelle Pakete: 2239 davon gemischte virtuelle Pakete: 263 davon fehlend: 5403 Gesamtzahl an unterschiedlichen Versionen: 27442 (1537k) Gesamtzahl an unterschiedlichen Beschreibungen: 39403 (946k) Gesamtzahl an Abhängigkeiten: 175909 (4925k) Gesamtzahl an Version/Datei-Beziehungen: 28936 (463k) Gesamtzahl an Beschreibung/Datei-Beziehungen: 39403 (630k) Gesamtzahl an Bereitstellungen: 4744 (94,9k) Gesamtzahl an Mustern: 121 (1588) Gesamtmenge an Abhängigkeits/Versionsspeicher: 820k Gesamtmenge an Slack: 82,5k Gesamtmenge an Speicher: 8498k
Umgekehrte Abhängigkeiten eines Paket anzeigen
root@zero:~# apt-cache rdepends openssh-server openssh-server Reverse Depends: mythbuntu-desktop ssh-krb5 slack |sdm scponly rssh gitosis gforge-shell-postgresql fai-server apt-dater-host ajaxterm ubuntu-virt-server ssh rsync ltsp-server-standalone |ltsp-server
Dateien
- /etc/apt/sources.list : Orte, von wo die Pakete geholt werden
- /etc/apt/apt.conf : APT-Konfigurationsdatei
- /etc/apt/apt.conf.d/ : Weitere Konfigurationsanpassungen
- /var/cache/apt/archives/ : Speicherort für heruntergeladene Pakete
- /var/cache/apt/archives/partial/ : Speicherort für momentan übertragene Pakete
- /var/lib/apt/lists/ : Speicherort für Statusinformationen der Pakete
APT-FILE
apt-file dient zur Such in den Repositories
- Installation
root@zero:~# apt-get install apt-file
- Update
root@zero:~# apt-file update
- In welchem Paket ist die Datei xxx
root@zero:~# apt-file search nids.h libnids-dev: /usr/include/nids.h
dpkg-reconfigure
Manche Pakete erfordern eine Konfiguration. Die Grundkonfiguration wird automatisch bei der ersten Installation erzeugt. Später dient der Befehl dpkg-reconfigure zur Bearbeitung.Die Liste der zur Zeit installierten und mit dpkg-reconfigure konfigurierbaren Pakete erhält man im Terminal [1] mit:
root@zero:~# ls /var/lib/dpkg/info/*.templates|xargs -n 1 basename|sed -e "s/.templates$//"
Ein Paket neu konfigurieren
Die gestellten Fragen werden nach ihrer Priorität gefiltert. Normalerweise werden nur wenige Fragen gestellt. Mit den folgenden Parametern kann man das einstellen:
- -plow (alle Fragen werden gestellt)
- -pmedium
- -phigh
- -pcritical (fast alles wird auf die Vorgabewerte gesetzt, nur überlebenswichtige Fragen werden gestellt)
Der folgende Befehl konfiguriert zum Beispiel das Paket man-db neu, wobei alle möglichen Fragen gestellt werden:
root@zero:~# dpkg-reconfigure -plow man-db
TAR
alien
alien konvertiert verschiedene Paketformate in jeweils andere um. Das Programm kann mit folgenden Formaten umgehen:
- RedHat (rpm)
- Debian (deb)
- Stampede (slp)
- Slackware (tgz)
- Solaris (pkg)
Kommandos
Die Aufrufform ist sehr einfach. alien erkennt das Format einer angegebenen Paketdatei automatisch und konvertiert es dann in das angegebene Format. Das gewünschte Ausgabeformat wird durch die folgenden Parameter angegeben:
- --to-deb : Aus dem angegebenen Paket wird ein Debian-Paket erstellt
- --to-rpm : Aus dem angegebenen Paket wird ein RedHat-Paket erstellt
- --to-tgz : Aus dem angegebenen Paket wird ein Slackware-Paket erstellt
- --to-slp : Aus dem angegebenen Paket wird ein Stampede-Paket erstellt
alien [--to-deb] [--to-rpm] [--to-tgz] [--to-slp] [Optionen] Datei(en)
Optionen
- -i : Installiere generierte Pakete und entfernte Paketdatei nach der Installation
- -g : Generiert ein temporäres Verzeichnis
- --patch=patch : Fügt einen Patch ein (nur Debian Pakete)
- --test : Testet die generierten Pakete (nur Debian Pakete)
- -k : alien erhöht standardmäßig die kleinere Versionsnummer (minor) um Eins nach einer Konvertierung; mit der Option wird
dies nicht durchgeführt
- --scripts : Versucht Skripte zu konvertieren, die beim Installieren oder Entfernen des Pakets ausgeführt werden
- -v : ausführliche Ausgabe
- --veryverbose : sehr ausführliche Ausgabe
- -V : zeigt die Version von alien an
Beispiele
Umwandlung eines Debian Pakets in ein RPM Paket
root@zero:~# alien --to-rpm mailutils_1%3a1.2+dfsg1-4_i386.deb Warning: Skipping conversion of scripts in package mailutils: postinst preinst prerm Warning: Use the --scripts parameter to include the scripts. mailutils-1.2+dfsg1-5.i386.rpm generated
Wie oben, aber mit Skripte des Pakets
root@zero:~# alien --scripts --to-rpm mailutils_1%3a1.2+dfsg1-4_i386.deb mailutils-1.2+dfsg1-5.i386.rpm generated
Umwandlung eines Debian Pakets in ein RPM Paket unter Beibehaltung der kleineren Versionsnummer
root@zero:~# alien --scripts -k --to-rpm mailutils_1%3a1.2+dfsg1-4_i386.deb mailutils-1.2+dfsg1-4.i386.rpm generated
sources.list wheezy
deb http://httpredir.debian.org/debian wheezy main deb-src http://httpredir.debian.org/debian wheezy main deb http://httpredir.debian.org/debian wheezy-updates main deb-src http://httpredir.debian.org/debian wheezy-updates main deb http://security.debian.org/ wheezy/updates main deb-src http://security.debian.org/ wheezy/updates main
Locakles Repository
Benötigte Pakete
apt-get install apt-mirror
Konfiguration
vi /etc/apt/mirror.list
- Repositorys eintragen die man Spiegeln will
- Mirror erstellen
apt-mirror
- Mirror nutzbar machen
ln -s /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu /var/www/ubuntu
Debian Paket erstellen
How to
- Paketordner erstellen:
mkdir paketordner mkdir paketordner/usr mkdir paketordner/DEBIAN
- Control-file erstellen und anpassen:
vi paketordner/DEBIAN/control
- Beispielinhalt von control file
Package: namedesprogrammes Version: 0.7 Section: admin Priority: optional Architecture: all Essential: no Depends: Installed-Size: 400 Maintainer: Name des Paketerstellers <name@adresse.com> Description: Dies ist die Beschreibung des Paketes"
- Programm im usr Ordner platzieren. Beispiel:
/usr/share/namedesprogrammes/programm.sh
- Ausführskript usr/bin/namedesprogrammes platzieren:
#!/bin/bash cd /usr/share/namedesprogrammes ./programm.sh
- Ausführbar machen
chmod a+rx /usr/bin/namedesprogrammes
- Eintrag im Anwendungsmenü:
- unter
/usr/share/applications
- Textdatei erstellen
namedesprogrammes.desktop
- und (angepassten) Text einfügen
[Desktop Entry] Encoding=UTF-8 Name=namedesprogrammes Comment=Dies ist ein Kommentar welcher beim Ueberfahren mit der Maus angezeigt wird Exec=namedesprogrammes Terminal=false Type=Application Categories=GNOME;GTK;System;
- Programm ein Symbol zuweisen
- Ordner anlegen
usr/share/pixmaps
- Symboldatei platzieren
namedesprogrammes.png
- In namedesprogrammes.desktop-Datei Zeile einfügen
Icon=namedesprogrammes.png
- Paket erstellen
dpkg -b paketordner namedesprogrammes-0.7-all.deb
Entpacken
apt-get install binutils # enthält "ar" zum entpacken von *.deb Dateien
#!/bin/bash
phrase=xinux
extract_deb() {
deb="$1"
package="${deb/_*/}"
mkdir -pv "${package}/DEBIAN"
cd "${package}"
ar x "../${deb}"
tar xvf "control.tar.gz" -C "DEBIAN/"
tar xvf "data.tar.gz"
rm "control.tar.gz"
rm "data.tar.gz"
sed -i "s/^Version: \(.*\)ubuntu/Version: \1$phrase/" "DEBIAN/control"
version=$(grep -o "^Version:.*$phrase.*" 'DEBIAN/control')
[ -z "$version" ] && (
sed -i "s/^Version: \(.*\)$/Version: \1${phrase}1/" 'DEBIAN/control'
)
cd - >/dev/null
}
build_deb() {
package="$1"
version=$(grep -e ^Version "$package/DEBIAN/control" | sed -e 's/.*: //' -e 's/:/%3a/g' )
arch=$(grep -e ^Arch "$package/DEBIAN/control" | sed 's/.*: //')
dpkg -b "$package" "${package}_${version}_${arch}.deb"
}
case $1 in
xf)
dir=$(dirname "$2")
cd "$dir"
extract_deb $(basename "$2")
;;
cf)
dir=$(dirname "$2")
cd "$dir"
build_deb $(basename "$2")
;;
x)
dir="$2"
[ -z "$dir" ] && dir='.'
cd "$dir"
for deb in $(ls *.deb | grep -v "$phrase")
do
extract_deb "$deb"
done
;;
c)
dir="$2"
[ -z "$dir" ] && dir='.'
cd "$dir"
find -maxdepth 1 -type d | \
sed '/^\.$/ d' | \
sed 's#^\./##' | \
while read package
do
build_deb "$package"
done
;;
*)
echo -e "Usage: $0 command file
\txf\textract file
\tx\textract dir
\tcf\tbuild package from package-dir
\tc\tbuild packages from dir"
;;
esac
debmirror
nur trusty ...
- debmirror -a amd64 -d trusty -s main,universe --nosource -h archive.ubuntu.com --progress /mnt/md0/data/www/ubuntu/mirror/trusty >> /var/log/debmirror
pre und post scripte
- /var/lib/dpkg/info/