Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux_paketmanager

Dies ist eine alte Version des Dokuments!


Linux Paketmanager

RPM-Hölle

http://linuxwiki.de/yum

Ist eine Paketinstallation oder -deinstallation schief gegangen, kann es passieren, das man dann mit der Installation eines Paketes nicht mehr weiter kommt, da RPM dann beim installieren meint, es sei schon installiert und beim deinstallieren meint, es sei ja gar nicht installiert…

Das nennt man dann RPM-Hölle.

Dieses Problem ist sehr unangenehm, kann aber recht einfach gelöst werden.

Bei RedHat/Fedora geht das so:

# killall -9 rpm
# rm -f /var/lib/rpm/__db.*
# rpm --rebuilddb

Debian/Ubuntu

Deprecated: apt-key

  • add-apt-repository ist lediglich ein wrapper um apt-key, also keine sichere Alternative!
  • Allen Keys in /etc/apt/trusted.gpg.d/ wird bedingungslos vertraut (cross signing), deshalb ist es nicht sicherer als /etc/apt/trusted.gpg, was von apt-key verwendet wird
  • Keys sollten deshalb an einem "nicht besonderen" Ort abgelegt werden, der laut man sources.list empfohlene Ort befindet sich für…
    • selbst verwaltete Keys unter: /etc/apt/keyrings/
    • von Paketen verwaltete Keys unter: /usr/share/keyrings/
### bis Debian 11 / Ubuntu 22.04
curl -Ls https://packages.element.io/debian/element-io-archive-keyring.asc | apt-key add -

### ab Debian 12 / Ubuntu 22.10
curl -Lso /etc/apt/keyrings/element-desktop.asc https://packages.element.io/debian/element-io-archive-keyring.asc

APT Einstellungen

Im folgenden werden backports die gleiche Priorität wie den jeweiligen dazugehörigen Repositories zugewiesen, um relativ sicher neuere Paketversionen zur Verfügung zu haben. Allerdings ist dies nicht immer erwünscht, da backports nicht im gleichen Maße getestet werden wie die regulären Repositories.

stable

Automatisch aus stable installieren (Priorität 500)

/etc/apt/preferences.d/stable
Package: *
Pin: release n=bookworm
Pin-Priority: 500
 
Package: *
Pin: release n=bookworm-security
Pin-Priority: 500
 
Package: *
Pin: release n=bookworm-updates
Pin-Priority: 500
 
Package: *
Pin: release n=bookworm-backports
Pin-Priority: 500

testing

Niemals automatisch aus testing installieren (Priorität -1)

/etc/apt/preferences.d/testing
Package: *
Pin: release n=trixie
Pin-Priority: -1
 
Package: *
Pin: release n=trixie-security
Pin-Priority: -1
 
Package: *
Pin: release n=trixie-updates
Pin-Priority: -1
 
Package: *
Pin: release n=trixie-backports
Pin-Priority: -1

unstable

Niemals automatisch aus unstable installieren (Priorität -1)

/etc/apt/preferences.d/unstable
Package: *
Pin: release n=sid
Pin-Priority: -1

APT Quellen

# Debian Archiv Keyring installieren
apt install debian-archive-keyring
# Alternativ: Debian Archiv Keyring neuinstallieren und dabei originale Keys wiederherstellen (z.B. falls ausversehen gelöscht/verändert)
apt reinstall -o Dpkg::Options::="--force-confmiss,confnew" debian-archive-keyring

Seit Debian 12 gibt es die neue Komponente non-free-firmware. Sie wurde von non-free abgespalten und enthält nicht freie Firmware-Pakete.

Komplette Datei sources.list leeren oder alle Zeilen auskommentieren

/etc/apt/sources.list
 

stable

/etc/apt/sources.list.d/stable.list
deb [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian bookworm main contrib non-free-firmware non-free
#deb-src [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian bookworm main contrib non-free-firmware non-free
 
deb [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-security-automatic.asc] http://deb.debian.org/debian-security bookworm-security main contrib non-free-firmware non-free
#deb-src [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-security-automatic.asc] http://deb.debian.org/debian-security bookworm-security main contrib non-free-firmware non-free
 
deb [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware non-free
#deb-src [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware non-free
 
deb [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian bookworm-backports main contrib non-free-firmware non-free
#deb-src [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian bookworm-backports main contrib non-free-firmware non-free

testing

/etc/apt/sources.list.d/testing.list
deb [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian trixie main contrib non-free-firmware non-free
#deb-src [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian trixie main contrib non-free-firmware non-free
 
deb [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-security-automatic.asc] http://deb.debian.org/debian-security trixie-security main contrib non-free-firmware non-free
#deb-src [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-security-automatic.asc] http://deb.debian.org/debian-security trixie-security main contrib non-free-firmware non-free
 
deb [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian trixie-updates main contrib non-free-firmware non-free
#deb-src [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian trixie-updates main contrib non-free-firmware non-free
 
deb [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian trixie-backports main contrib non-free-firmware non-free
#deb-src [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian trixie-backports main contrib non-free-firmware non-free

unstable

/etc/apt/sources.list.d/unstable.list
deb [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian sid main contrib non-free-firmware non-free
#deb-src [signed-by=/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc] http://deb.debian.org/debian sid main contrib non-free-firmware non-free

APT

so kann man sehen, ob APT gerade läuft:

> lsof /var/lib/dpkg/lock

so bekommt man die Paker-Abhängigkeiten zu einem bestimmten Paket raus:

> apt-cache depends -i mc
mc
  Depends: libc6
  Depends: libext2fs2
  Depends: libglib2.0-0
  Depends: libgpm2
  Depends: libslang2
  Depends: libssh2-1
  Depends: mc-data

aufräumen

# dpkg --configure -a
# apt-get check
# apt-get -f install
# apt-get autoremove
/root/bin/upgrade.sh
#!/bin/bash
 
#apt update ; apt --fix-broken install ; apt full-upgrade ; apt autoremove
 
time (locale-gen ; apt update ; apt -y full-upgrade ; apt -y autoremove ; apt -y autoclean ; flatpak repair ; flatpak -y update) && echo OK || echo Fehler
dpkg --configure -a
pihole -up
 
dpkg -l | sed "s/^ii[ ]*//;s/ .*//" | grep -E ^linux-
uname -a
sync
cat /var/run/reboot-required

apt policy und pinning

Paketquellen und ihre Priorität anzeigen, außerdem werden angepinnte (pinned) Pakete aufgelistet

apt-cache policy

Verfügbare Paketquellen für das angegebene Paket anzeigen

apt-cache policy git

URL-Liste der benötigten Pakete

Dieser Befehl liefert eine URL für alle zu installierenden Pakete.

In diesem Fall, um "gnome" zu installieren:

# apt-get -q -y --print-uris install gnome | grep ^\' | awk '{print $1}' | tr -d "'" > wget.list

DEB-Hölle

Leider gibt es unter Debian und Ubuntu auch diesen leidigen Zustand, der im RPM-Paketsystem berüchtigt ist.

Aber viel schlimmer ist die Tatsache, dass es hier nicht so leicht repariert werden kann. :-(

Unter der URL http://ubuntuforums.org/showthread.php?t=474587 wird ein Script vorgestellt, mit dem man sich seine Paket-Datenbank, oder wie man es unter Debian nennen will, neu generieren kann.

Leider kann das Script die Datei /var/lib/dpkg/status nicht in vollem Umfang neu generieren, es fehlen die "Confiles"-Felder und ausserdem hat jedes Paket den Status "installed", auch die deinstallierten Pakete!

#!/bin/bash

get_control_info ()
{
      for i in /var/lib/apt/lists/*_Packages
      do
              sed '/Package: '"$1"'$/,/^$/!d' $i
      done
}

for i in /var/lib/dpkg/info/*.list
do
      package_name=`basename $i | sed 's/.list$//'`
      get_control_info $package_name >> status-new
done

sed -i -e '/^Filename: .*/d' -e '/^MD5sum:/d' -e '/^SHA1:/d' -e '/^SHA256:/d' status-new
sed -i '/^Package: /a\Status: install ok installed' status-new

Das Feld "Confiles" muss man aus der alten Datei von Hand rekonstruieren, ebenso wie der Status bei deinstallierten Paketen.

Paket ist in einem sehr schlechten inkonsistenten Zustand

das defekte Paket lässt sich nicht entfernen:

# aptitude purge -f dropbear
Die folgenden Pakete werden ENTFERNT:           
  dropbear{p} 
0 Pakete aktualisiert, 0 zusätzlich installiert, 1 werden entfernt und 0 nicht aktualisiert.
0 B an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 748 kB frei werden.
Möchten Sie fortsetzen? [Y/n/?] 
dpkg: Fehler beim Bearbeiten des Paketes dropbear (--purge):
 Paket ist in einem sehr schlechten inkonsistenten Zustand - Sie sollten
 es erneut installieren, bevor Sie es zu entfernen versuchen.
Fehler traten auf beim Bearbeiten von:
 dropbear
E: Sub-process /usr/bin/dpkg returned an error code (1)
Ein Paket konnte nicht installiert werden. Versuch, dies zu lösen:

man kann es aber auch nicht erneut installieren (wir bei PURGE empfohlen):

# aptitude install dropbear
Die folgenden teilweise installierten Pakete werden konfiguriert:
  dropbear 
Es werden keine Pakete installiert, aktualisiert oder entfernt.
0 Pakete aktualisiert, 0 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
0 B/137 kB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 0 B zusätzlich belegt sein.
dpkg: Fehler beim Bearbeiten des Paketes dropbear (--configure):
 Paket ist in einem sehr schlechten inkonsistenten Zustand - Sie sollten es
 nochmal installieren, bevor Sie die Konfiguration versuchen.
E: Sub-process /usr/bin/dpkg returned an error code (1)
Ein Paket konnte nicht installiert werden. Versuch, dies zu lösen:

die Lösung

damit er beim entfernen keine Zicken macht:

# rm /var/lib/dpkg/info/dropbear.prerm

entfernen:

# dpkg --remove --force-remove-reinstreq dropbear
dpkg: Warnung: Problem wird übergangen, weil --force angegeben ist: 
dpkg: Warnung: Paket ist in einem sehr schlechten inkonsistenten Zustand - Sie sollten
 es erneut installieren, bevor Sie es zu entfernen versuchen.
(Lese Datenbank ... 91885 Dateien und Verzeichnisse sind derzeit installiert.)
Entfernen von dropbear (2013.60-1ubuntu2.1) ...
Trigger für man-db (2.6.7.1-1ubuntu1) werden verarbeitet ...

sauber machen:

# dpkg --purge --force-remove-reinstreq dropbear
(Lese Datenbank ... 91862 Dateien und Verzeichnisse sind derzeit installiert.)
Entfernen von dropbear (2013.60-1ubuntu2.1) ...
Löschen der Konfigurationsdateien von dropbear (2013.60-1ubuntu2.1) ...

zur Probe nocheinmal mit Aptitude:

# aptitude purge -f dropbear
Es werden keine Pakete installiert, aktualisiert oder entfernt.
0 Pakete aktualisiert, 0 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
0 B an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 0 B zusätzlich belegt sein.

erneut sauber installieren:

# aptitude install dropbear
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  dropbear 
0 Pakete aktualisiert, 1 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
0 B/137 kB an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 748 kB zusätzlich belegt sein.
Vormals nicht ausgewähltes Paket dropbear wird gewählt.
(Lese Datenbank ... 91857 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../dropbear_2013.60-1ubuntu2.1_amd64.deb ...
Entpacken von dropbear (2013.60-1ubuntu2.1) ...
Trigger für man-db (2.6.7.1-1ubuntu1) werden verarbeitet ...
Trigger für ureadahead (0.100.0-16) werden verarbeitet ...
dropbear (2013.60-1ubuntu2.1) wird eingerichtet ...
Converting existing OpenSSH RSA host key to Dropbear format.
Key is a RSA key
Wrote key to '/etc/dropbear/dropbear_rsa_host_key'
Converting existing OpenSSH RSA host key to Dropbear format.
Key is a DSS key
Wrote key to '/etc/dropbear/dropbear_dss_host_key'
OpenSSH appears to be installed.  Setting /etc/default/dropbear so that
Dropbear will not start by default.  Edit this file to change this behaviour.

update-initramfs: deferring update (trigger activated)
Dropbear has been added to the initramfs. Don't forget to check
your "ip=" kernel bootparameter to match your desired initramfs
ip configuration.

Restarting Dropbear SSH server: [abort] NO_START is not set to zero in /etc/default/dropbear
Trigger für ureadahead (0.100.0-16) werden verarbeitet ...
Trigger für initramfs-tools (0.103ubuntu4.2) werden verarbeitet ...
update-initramfs: Generating /boot/initrd.img-3.19.0-49-generic
dropbear: NOTICE: Skipping dropbear installation because /etc/crypttab has no entries.

Proxy konfigurieren

Fedora (RedHat/CentOS 5.x)

vi /etc/yum.conf
      proxy=http://192.168.1.1:3128

Nicht in Anführungszeichen setzen!

Debian (Ubuntu)

vi /etc/apt/apt.conf
      Acquire::http::Proxy "http://192.168.1.1:3128";

Paketmanager bedienen

PKG_Cache aktuallisieren

  • Fedora (RedHat/CentOS 5.x)
# yum clean all
# yum makecache
  • Debian
# apt-get update
# aptitude update

Pakete aktuallisieren

  • Fedora (RedHat/CentOS 5.x)
# yum safe-upgrade
  • Debian
# apt-get safe-upgrade
# aptitude safe-upgrade

Pakete installieren

  • Fedora (RedHat/CentOS 5.x)
# yum install elinks
  • Debian
# apt-get install links
# aptitude install links

Paket suchen

  • Fedora (RedHat/CentOS 5.x)
# yum search elinks
  • Debian
aptitude search links

Paket entfernen

  • Fedora (RedHat/CentOS 5.x)
# yum remove elinks
  • Debian
# aptitude remove links

Paket mit seinen Konfigurationsdateien entfernen

  • Fedora
<gibts in dieser Form nicht>
  • Debian
# aptitude purge links
# aptitude remove links_

Entweder "purge" oder mit dem normalen "remove" aber mit einem "_" hinten an den Paketnamen angehängt.

installierte Pakete anzeigen

  • Fedora
# rpm -qa
  • Debian
# dpkg -l

installierte Dateien eines Paketes anzeigen

  • Fedora (RedHat/CentOS 5.x)
# yum provides links
# rpm -ql elinks
  • Debian
# dpkg -L links

Paket zeigen welches eine bestimmte Datei installierte

  • Fedora
# rpm -qf /usr/bin/links
  • Debian
# dpkg -S /usr/bin/links

lokale Datei installieren

  • Fedora
# rpm -Uhv paket.rpm
  • Debian
# dpkg -i paket.deb

installiertes Paket neu konfigurieren

  • Fedora
<gibts nicht in dieser Form>
  • Debian
# dpkg-reconfigure krb5-config

Abhängigkeiten zu einem Paket ermitteln

Fedora
<das geht, aber frag mich nicht wie; das brauchte ich noch nie>
  • Debian
# apt-cache depends -i mc

veraltete Pakete aus dem Paket-Cache entfernen

  • Debian
# aptitude update
# aptitude autoclean
/home/http/wiki/data/attic/linux_paketmanager.1708196919.txt · Zuletzt geändert: von david