====== Linux Paketmanager ====== ===== Links ===== * http://wiki.kubuntu-de.org/Konfiguration/Programme_installieren/Paketmanagement * http://de.wikipedia.org/wiki/Debian_Package_Manager ===== 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 ===== APT (Debian/Ubuntu) ===== **siehe: [[apt]]** * Debian: [[https://wiki.debian.org/DebianReleases]] * Ubuntu: [[https://ubuntu.com/about/release-cycle]] ==== nützliches ==== 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 #!/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 ==== 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/'' * weitere Infos: [[https://askubuntu.com/a/1307181]] ### 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 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 * 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 * Debian # dpkg-reconfigure krb5-config === Abhängigkeiten zu einem Paket ermitteln === Fedora * Debian # apt-cache depends -i mc === veraltete Pakete aus dem Paket-Cache entfernen === * Debian # aptitude update # aptitude autoclean