From 9d71cf72d3700ce05675213d263d1b1e39d092ac Mon Sep 17 00:00:00 2001 From: Michele Cereda Date: Sun, 30 Jun 2024 21:33:21 +0200 Subject: [PATCH] chore(zypper): improve commands --- knowledge base/zypper.md | 54 +++++++++++++++++++++++++++++++--------- snippets/zypper.sh | 7 +++--- 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/knowledge base/zypper.md b/knowledge base/zypper.md index d4865ad..de0afe8 100644 --- a/knowledge base/zypper.md +++ b/knowledge base/zypper.md @@ -32,6 +32,10 @@ Default files: | `/var/log/zypper.log` | Zypper's log file | | `/var/log/zypp/history` | Installation history log file | +Mark packages as **automatically** installed by adding them to `/var/lib/zypp/AutoInstalled`.
+Mark packages as **manually** installed by removing them from that file or forcefully reinstalling them +(`zypper in -f 'tmux'`). + Command examples: ```sh @@ -42,7 +46,7 @@ zypper help 'command' # Update caches. zypper refresh -zypper ref 'updates' 'mozilla' +zypper ref --force 'updates' 'mozilla' # Clean caches. zypper clean --metadata @@ -56,6 +60,11 @@ zypper cleanlocks # Search for resolvables. zypper search 'nmap' zypper se -r 'repository' 'mariadb' +zypper se --type 'pattern' 'kde_plasma' + +# List all patterns. +zypper se -t 'pattern' +zypper se -n 'patterns-*' # Show all available versions of resolvables. zypper se -s 'kernel-default' @@ -67,11 +76,11 @@ zypper se --provides '/usr/sbin/useradd' # Display detailed information about resolvables. zypper info 'workrave' -zypper if -t 'patch' 'libzypp' +zypper if --type 'patch' 'libzypp' zypper if -t 'pattern' 'lamp_server' # Install resolvables. -zypper install 'parallel' +zypper install -n 'parallel' zypper in --no-confirm 'https://prerelease.keybase.io/keybase_amd64.rpm' zypper in --no-recommends 'yast*ftp*' 'virtualbox-ose=2.0.6' '/root/ansible.rpm' @@ -82,6 +91,7 @@ zypper in -r 'packman' --download 'in-advance' 'libavdevice60' zypper in -r 'https://repo.vivaldi.com/archive/vivaldi-suse.repo' 'vivaldi' # Reinstall resolvables. +# This marks them as *manually* installed. zypper in -f 'amdgpu-dkms' # Install resolvables from source. @@ -90,12 +100,13 @@ zypper source-install -d 'dbus-1' zypper si 'dolphin-plugins' # Check the dependencies of *installed* resolvables are satisfied. -zypper verify 'git-lfs' -zypper ve 'virtualbox' +zypper verify +zypper ve 'virtualbox' 'git-lfs' # Uninstall resolvables. zypper remove --clean-deps 'code' -zypper rm -u 'zfs' +zypper rm -u 'libreoffice' 'patterns-kde-kde_games' +zypper rm -ut 'pattern' 'games' zypper in '!Firefox' '-htop' # List available updates. @@ -128,15 +139,29 @@ zypper dup --details --from 'factory' --from 'packman' --download 'as-needed' -- zypper packages --unneeded zypper pa --unneeded -# List installed packages. +# List installed resolvables. zypper search --installed-only -zypper se -i +zypper se -it 'pattern' + +# List installed packages zypper packages --installed-only zypper pa -i # List *manually* installed packages. +zypper packages --userinstalled zypper pa -i | grep 'i+' | awk -F '|' '{print $3}' | sort -u +# List *automatically* installed packages. +zypper packages --autoinstalled + +# Mark resolvables as *manually* installed. +zypper in -f 'zstd' +zypper in -f -t 'pattern' 'kde_plasma' +sed '/zstd/d' '/var/lib/zypp/AutoInstalled' + +# Mark resolvables as *automatically* installed. +echo 'zstd' | tee -a '/var/lib/zypp/AutoInstalled' + # --- # List repositories. @@ -175,10 +200,11 @@ zypper --userdata 'comment-here' … zypper purge-kernels --dry-run # Clean up unneded packages. -# Always check what is being done. -zypper packages --unneeded \ -| awk -F'|' 'NR>4{gsub(" ", "", $0);print $3"="$4}' | sort -u \ -| sudo xargs zypper rm -u +# *Always* check what is being done. +# FIXME: flaky +zypper -q pa --unneeded \ +| grep -E '^i\s+' | awk -F'|' '{gsub(" ", "", $0); print $3"="$4}' | sort -u \ +| xargs zypper rm -uD # Upgrade distribution's releases. # Suggested to do this after: @@ -303,6 +329,8 @@ Procedure: - [System upgrade] - [Zypper cheat sheet] - [KDE repositories] +- [Zypper manual] +- [45 Zypper commands to manage 'Suse' Linux package management] +[45 zypper commands to manage 'suse' linux package management]: https://www.tecmint.com/zypper-commands-to-manage-suse-linux-package-management/ [how can i list all files which have been installed by an zypp/zypper package?]: https://unix.stackexchange.com/questions/162092/how-can-i-list-all-files-which-have-been-installed-by-an-zypp-zypper-package#239944 diff --git a/snippets/zypper.sh b/snippets/zypper.sh index ec5ab16..0b60f78 100644 --- a/snippets/zypper.sh +++ b/snippets/zypper.sh @@ -72,9 +72,10 @@ zypper purge-kernels --dry-run # Clean up unneded packages # Always check what is being done -zypper packages --unneeded \ -| awk -F'|' 'NR>4{gsub(" ", "", $0);print $3"="$4}' | sort -u \ -| sudo xargs -p zypper rm -u +# FIXME: flaky +zypper -q pa --unneeded \ +| grep -E '^i\s+' | awk -F'|' '{gsub(" ", "", $0); print $3"="$4}' | sort -u \ +| xargs sudo zypper rm -uD # Upgrade distribution's releases sudo systemctl stop 'display-manager.service'