Benutzer-Werkzeuge

Webseiten-Werkzeuge


apt

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
apt [2025-09-17 18:51:31] – angelegt davidapt [2026-04-21 20:05:14] (aktuell) david
Zeile 1: Zeile 1:
 +====== Apt ======
 +
 +siehe: [[linux_paketmanager#apt_debian_ubuntu|APT (Debian/Ubuntu)]]
 +
 +
 +===== APT Einstellungen =====
 +
 +Im folgenden werden **backports** die gleiche Priorität wie den jeweiligen dazugehörigen Repositories zugewiesen (Priorität ''500'', ist standardmäßig ''100''), 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.
 +
 +  * automatisch aus **stable** installieren (Priorität ''500'')
 +  * niemals automatisch aus **testing** installieren (Priorität ''-1'')
 +  * niemals automatisch aus **unstable** installieren (Priorität ''-1'')
 +
 +<code bash /etc/apt/preferences.d/debian.pref>
 +# stable
 +Package: *
 +Pin: release n=trixie, o=Debian
 +Pin-Priority: 500
 +
 +Package: *
 +Pin: release n=trixie-security, o=Debian
 +Pin-Priority: 500
 +
 +Package: *
 +Pin: release n=trixie-updates, o=Debian
 +Pin-Priority: 500
 +
 +# stable-backports
 +Package: *
 +Pin: release n=trixie-backports, o=Debian Backports
 +Pin-Priority: 500
 +
 +# stable-backports: kernel
 +Package: linux-headers-* linux-image-*
 +Pin: release n=trixie-backports, o=Debian Backports
 +Pin-Priority: 100
 +
 +# testing
 +Package: *
 +Pin: release n=forky, o=Debian
 +Pin-Priority: -1
 +
 +Package: *
 +Pin: release n=forky-security, o=Debian
 +Pin-Priority: -1
 +
 +Package: *
 +Pin: release n=forky-updates, o=Debian
 +Pin-Priority: -1
 +
 +# testing-backports
 +Package: *
 +Pin: release n=forky-backports, o=Debian Backports
 +Pin-Priority: -1
 +
 +# unstable
 +Package: *
 +Pin: release n=sid, o=Debian
 +Pin-Priority: -1
 +</code>
 +
 +
 +===== APT Quellen =====
 +
 +  * siehe
 +    * [[https://wiki.debian.org/SourcesList]]
 +    * [[https://wiki.ubuntuusers.de/Paketquellen_im_Format_deb822/]]
 +    * [[https://wiki.ubuntuusers.de/sources.list/]]
 +
 +  * seit debian 13 ist das deb822 format standard (siehe ''man deb822''), die standard datei für apt quellen ist nun ''/etc/apt/sources.list.d/debian.sources''
 +    * die alte datei ''/etc/apt/sources.list'' sollte gelöscht werden um konflikte zu vermeiden
 +  * seit debian 12 gibt es die neue komponente ''non-free-firmware'', sie wurde von ''non-free'' abgespalten und enthält nicht freie firmware pakete
 +    * dadurch wird folgende konfiguration erleichtert: ''Components: main non-free-firmware'' (möglichst wenig non-free pakete, aber gleichzeitig kritische firmware pakete)
 +
 +<code bash /etc/apt/sources.list.d/debian.sources>
 +# stable
 +Enabled: yes
 +Types: deb
 +URIs: https://deb.debian.org/debian
 +Suites: trixie trixie-updates trixie-backports
 +Components: main contrib non-free non-free-firmware
 +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
 +
 +Enabled: yes
 +Types: deb
 +URIs: https://deb.debian.org/debian-security
 +Suites: trixie-security
 +Components: main contrib non-free non-free-firmware
 +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
 +
 +# testing
 +Enabled: no
 +Types: deb
 +URIs: https://deb.debian.org/debian
 +Suites: forky forky-updates forky-backports
 +Components: main contrib non-free non-free-firmware
 +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
 +
 +Enabled: no
 +Types: deb
 +URIs: https://deb.debian.org/debian-security
 +Suites: forky-security
 +Components: main contrib non-free non-free-firmware
 +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
 +
 +# unstable
 +Enabled: no
 +Types: deb
 +URIs: https://deb.debian.org/debian
 +Suites: sid
 +Components: main contrib non-free non-free-firmware
 +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
 +</code>
 +
 +falls der debian archiv keyring nicht aktuell oder kaputt ist:
 +
 +<code bash>
 +# debian archive keyring installieren
 +apt upgrade debian-archive-keyring
 +
 +# alternative: debian archive 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
 +</code>
 +
 +
 +===== Upgrade =====
 +
 +tags für suche: apt-get, apt, aptitude, update, upgrade, dist-upgrade, full-upgrade, autoremove
 +
 +==== Skript ====
 +
 +Dieses Skript in den PATH legen (z.B. ''/usr/local/sbin/upgrade.sh'' oder ''/root/.local/bin/upgrade.sh'') und dann als root mit ''upgrade.sh'' aufrufen
 +
 +<code bash upgrade.sh>
 +#!/bin/bash
 +
 +#------------------------------------------------------------------------------#
 +#
 +# totsicheres Update
 +# es sollte alle gängigen Probleme, durch mehrmahligen Aufruf, beheben
 +#
 +#------------------------------------------------------------------------------#
 +
 +time (
 +#apt -y purge plymouth
 +locale-gen ;
 +rm -fr /var/lib/apt/lists/partial/* ;
 +apt-get -y autoclean ;
 +apt-get -y autoremove ;
 +apt -y autoclean ;
 +apt -y autoremove ;
 +dpkg --configure -a ;
 +apt-get -y dist-upgrade ;
 +apt-get -y autoclean ;
 +apt-get -y autoremove ;
 +apt -y autoclean ;
 +apt -y autoremove ;
 +
 +apt install linux-headers-generic linux-image-generic ;
 +apt autoremove
 +apt -y update && apt -y full-upgrade
 +
 +#apt -y install ubuntu-drivers-common alsa-utils
 +#ubuntu-drivers install
 +) && echo OK
 +
 +dpkg --configure -a
 +#ubuntu-drivers devices
 +#fwupdmgr get-upgrades
 +
 +apt -y purge $(dpkg -l | sed "s/^ic[ ]*//;s/ .*//" | grep -E ^linux-)
 +apt -y purge $(dpkg -l | sed "s/^rc[ ]*//;s/ .*//" | grep -E ^linux-)
 +dpkg -l | awk '/linux-/{print $1,$2}'
 +lsb_release -a
 +uname -a
 +cat /var/run/reboot-required
 +</code>
 +
 +
 +==== Alternatives Skript ====
 +
 +Dieses Skript in den PATH legen (z.B. ''~/.local/bin/up.sh'') und dann mit ''up.sh'' aufrufen
 +  * aktuellste version: [[https://gitlab.com/m4st3rfl1tz3r/dotfiles/dotfiles/-/blob/main/.local/bin/up.sh]]
 +  * __supported__: apt (debian), brew (linux/macos), dnf (fedora), flatpak (linux) und pipx (linux/macos)
 +  * __not supported__: doas (sudo alternative)
 +  * ohne sudo aufrufen, weil sudo am anfang des skripts aufgerufen wird (wenn user in der richtigen gruppe ist und nicht root ist)
 +  * bevorzugt als sudoer aufrufen (nicht als root) wegen flatpak usw., funktioniert aber auch als root oder nicht sudoer, code blöcke werden je nachdem dann übersprungen
 +  * sudo credential cache wird während der skript ausführung frisch gehalten, d.h. man muss nur 1x am anfang das passwort eingeben, egal wie lange das update braucht
 +
 +<code bash up.sh>
 +#!/usr/bin/env bash
 +
 +set -o nounset
 +set -o pipefail
 +
 +has_sudo=false
 +is_root=false
 +sudo=""
 +
 +if test "${EUID}" -eq 0
 +then
 + is_root=true
 +fi
 +
 +if test "${is_root}" = false && command -v sudo > /dev/null 2>&1 && id -nG "${USER}" | grep -Eqw 'admin|sudo|wheel'
 +then
 + has_sudo=true
 + sudo -v
 +
 + while true
 + do
 + sleep 60
 + sudo -nv
 + kill -0 "$$" || exit
 + done > /dev/null 2>&1 &
 +fi
 +
 +if test "${has_sudo}" = true
 +then
 + sudo="sudo -H"
 +fi
 +
 +# apt
 +if command -v apt > /dev/null 2>&1 && { test "${has_sudo}" = true || test "${is_root}" = true; }
 +then
 + kernel=(linux-headers-generic linux-image-generic)
 + if apt-cache show raspberrypi-bootloader > /dev/null 2>&1
 + then
 + kernel=(raspberrypi-bootloader raspberrypi-kernel raspberrypi-kernel-headers)
 + fi
 +
 + time {
 + ${sudo} locale-gen &&
 + ${sudo} dpkg --configure -a &&
 + ${sudo} apt-get update &&
 + ${sudo} apt-get autoclean &&
 + ${sudo} apt-get autoremove &&
 + ${sudo} apt-get install "${kernel[@]}" &&
 + ${sudo} apt-get dist-upgrade &&
 + ${sudo} apt-get autoremove &&
 + ${sudo} dpkg --configure -a
 + }
 + exit_code="${?}"
 +
 + reboot_required=""
 + if test -e /run/reboot-required || test -e /run/reboot-required.pkgs
 + then
 + reboot_required=" -> REBOOT REQUIRED"
 + fi
 +
 + if test "${exit_code}" -eq 0
 + then
 + printf "\nAPT SUCCEEDED%s\n\n" "${reboot_required}"
 + else
 + printf "\nAPT FAILED%s\n\n" "${reboot_required}"
 + fi
 +fi
 +
 +# brew
 +if command -v brew > /dev/null 2>&1 && test "${is_root}" = false
 +then
 + brew update && brew upgrade && brew upgrade --cask --greedy
 + printf "\n"
 +fi
 +
 +# dnf
 +if command -v dnf > /dev/null 2>&1 && { test "${has_sudo}" = true || test "${is_root}" = true; }
 +then
 + time {
 + ${sudo} dnf --refresh upgrade &&
 + ${sudo} dnf autoremove
 + }
 + exit_code="${?}"
 +
 + reboot_required=""
 + if ! ${sudo} dnf needs-restarting -r > /dev/null 2>&1
 + then
 + reboot_required=" -> REBOOT REQUIRED"
 + fi
 +
 + if test "${exit_code}" -eq 0
 + then
 + printf "\nDNF SUCCEEDED%s\n\n" "${reboot_required}"
 + else
 + printf "\nDNF FAILED%s\n\n" "${reboot_required}"
 + fi
 +fi
 +
 +# flatpak
 +if command -v flatpak > /dev/null 2>&1
 +then
 + flatpak update
 + printf "\n"
 +fi
 +
 +if test "${has_sudo}" = true && ${sudo} bash -c 'command -v flatpak > /dev/null 2>&1'
 +then
 + ${sudo} flatpak update
 + printf "\n"
 +fi
 +
 +# pipx
 +if command -v pipx > /dev/null 2>&1
 +then
 + pipx upgrade-all
 + printf "\n"
 +fi
 +
 +if test "${has_sudo}" = true && ${sudo} bash -c 'command -v pipx > /dev/null 2>&1'
 +then
 + ${sudo} pipx upgrade-all
 + printf "\n"
 +fi
 +</code>
 +