====== 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'') # 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 ===== 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) # 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 falls der debian archiv keyring nicht aktuell oder kaputt ist: # 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 ===== 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 #!/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 ==== 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 #!/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