Debian Paketmanagement: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 3: Zeile 3:
 
*[[apt]]
 
*[[apt]]
 
*[[aptitude]]
 
*[[aptitude]]
 
+
*[[apt-cache]]
==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==
 
apt-file dient zur Such in den Repositories
 
apt-file dient zur Such in den Repositories

Version vom 16. Mai 2022, 17:55 Uhr

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/