ISO image file
https://download.opensuse.org/tumbleweed/iso/
Tumbleweed does not use the $releasever variable in repos and does not utilize DRPM (Delta RPM) packages. System updates are done through zypper dup.
SuSE = Software und System Entwicklung (Software and Systems Development)
Packages from Open Build Service (OBS) installed using OBS Package Installer (OPI).
$ zypper in opi
Example:
$ opi msteams
Keep the added repo but lower its priority and disable autorefresh.
$ zypper mr -Fp 105 teams
Quick and simple method to install via opi.
$ opi codecs
The longer manual way to add a repo and install packages.
$ zypper ar -p 90 https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/ packman
$ zypper refresh
$ zypper dup --allow-vendor-change
$ zypper install ffmpeg gstreamer-plugins-{good,bad,ugly,libav} libavcodec-full vlc-codecs
Geekos DAW multimedia:proaudio repo.
$ zypper ar -p 105 https://download.opensuse.org/repositories/multimedia:/proaudio/openSUSE_Tumbleweed/ geekosdaw
$ zypper ar -p 105 https://download.opensuse.org/repositories/utilities/openSUSE_Factory/utilities.repo
X11:Wayland.
$ zypper ar -p 105 https://download.opensuse.org/repositories/X11:Wayland/openSUSE_Tumbleweed/X11:Wayland.repo
Eliminate repo flip-flop for installed packages. [video]
1. Always allow dup vendor change.
/etc/zypp/zypp.conf
solver.dupAllowVendorChange = true
2. Set proper repo priorities:
default: 99
enhancements: 90 (< 99, lower number = higher priority)
packages not present in product repos: 105 (> 99, lower priority)
Example:
$ zypper mr -p 90 packman
$ zypper mr -p 105 utilities
$ zypper lr -EP
packman | Packman | 90
download.opensuse.org-non-oss | Main Repository (NON-OSS) | 99
download.opensuse.org-oss | Main Repository (OSS) | 99
download.opensuse.org-tumbleweed | Main Update Repository | 99
utilities | all the small tools for the shell (openSUSE_Factory) | 105
Switch from a geo-detected mirror to a specific mirror. [list]
1. Main repos (for oss, non-oss, update)
/etc/zypp/repos.d/download.opensuse.org-oss.repo
#baseurl=http://download.opensuse.org/tumbleweed/repo/oss/
#baseurl=http://mirrors.kernel.org/opensuse/tumbleweed/repo/oss/
baseurl=http://provo-mirror.opensuse.org/tumbleweed/repo/oss/
#baseurl=http://mirror.us.leaseweb.net/opensuse/tumbleweed/repo/oss/
#baseurl=http://codingflyboy.mm.fcix.net/opensuse/tumbleweed/repo/oss/
#baseurl=http://ftp.ussg.iu.edu/linux/opensuse/opensuse/tumbleweed/repo/oss/
#baseurl=http://mirror.clarkson.edu/opensuse/opensuse/tumbleweed/repo/oss/
#baseurl=http://mirror.fcix.net/opensuse/tumbleweed/repo/oss/
#baseurl=http://mirror.umd.edu/opensuse/tumbleweed/repo/oss/
#baseurl=http://mirrors.acm.wpi.edu/opensuse/tumbleweed/repo/oss/
#baseurl=http://opensuse-mirror-gce-ap.susecloud.net/tumbleweed/repo/oss/
#baseurl=http://opensusemirror.vod.comcast.com/tumbleweed/repo/oss/
2. Mirrors with Build Service (for multimedia:/proaudio/openSUSE_Tumbleweed/ and utilities/openSUSE_Factory/ etc.)
/etc/zypp/repos.d/multimedia-proaudio.repo
#baseurl=http://download.opensuse.org/repositories/multimedia:/proaudio/openSUSE_Tumbleweed/
baseurl=http://provo-mirror.opensuse.org/repositories/multimedia:/proaudio/openSUSE_Tumbleweed/
#baseurl=http://ftp.gwdg.de/pub/opensuse/repositories/multimedia:/proaudio/openSUSE_Tumbleweed/
#baseurl=http://mirror.aardsoft.fi/opensuse/repositories/multimedia:/proaudio/openSUSE_Tumbleweed/
#baseurl=http://ftp.lysator.liu.se/pub/opensuse/repositories/multimedia:/proaudio/openSUSE_Tumbleweed/
#baseurl=http://mirror.tspu.ru/opensuse/repositories/multimedia:/proaudio/openSUSE_Tumbleweed/
#baseurl=http://mirror.linux-ia64.org/opensuse/repositories/multimedia:/proaudio/openSUSE_Tumbleweed/
Set low repo connection timeout to prevent long hangs. (default = 60)
/etc/zypp/zypp.conf
download.connect_timeout = 10
By default install only required packages. (Do not install recommended packages.)
/etc/zypp/zypp.conf
solver.onlyRequires = true
Clean dependencies when removing packages.
/etc/zypp/zypp.conf
solver.cleandepsOnRemove = true
Keep 3 most recent kernel versions + currently running.
/etc/zypp/zypp.conf
multiversion.kernels = latest,latest-1,latest-2,running
Disable autorefresh for all repos to make searching and other operations faster. Manually refresh when needed via zypper ref
$ zypper mr -Fa
Disable the service that purges old kernels on boot. Handle manually via zypper purge-kernels
$ systemctl disable purge-kernels.service
Disable PackageKit to prevent conflicts with zypper.
$ systemctl disable packagekit-background.timer
Configure sudo to ask for the user's instead of root's password.
$ visudo
Defaults env_keep += "LANG DISPLAY XAUTHORITY"
#Defaults targetpw # ask for the password of the target user i.e. root
#ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!
%wheel ALL=(ALL:ALL) ALL
$ gpasswd -a myusername wheel
$ echo "alias sudo='sudo '" >> ~/.bashrc
/etc/polkit-1/rules.d/40-wheel.rules
// pkexec like sudo rather than su
polkit.addAdminRule(function(action, subject) {
return ["unix-group:wheel"];
});
$ chmod +r /etc/polkit-1/rules.d/40-wheel.rules
Disable hardware speaker beep.
$ echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf
Disable Ctrl+Alt+Delete reboot in console.
$ systemctl mask ctrl-alt-del.target
Enable Ctrl+Alt+Backspace to terminate X.
/etc/X11/xorg.conf.d/10-zap.conf
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
Adjust Touchpad scrolling sensitivity and momentum.
$ zypper in xf86-input-synaptics
$ synclient -l
/etc/X11/xorg.conf.d/70-synaptics.conf
Section "InputClass"
Identifier "touchpad"
Driver "synaptics"
MatchIsTouchpad "on"
Option "VertScrollDelta" "300"
Option "HorizScrollDelta" "300"
Option "CoastingSpeed" "0"
EndSection
Switch selections using the alternatives system.
$ update-alternatives --get-selections
$ update-alternatives --list default-displaymanager
$ update-alternatives --config default-displaymanager
$ zypper ref
$ zypper lu
$ zypper dup
$ rpmconf -at
$ rpmconf -af vimdiff
$ zypper pa --unneeded
$ zypper rm unneededpackagename unneededpackagename unneededpackagename ...
$ zypper purge-kernels
$ zypper verify
Log file reader.
$ zypper-log
RPM query.
$ rpm -ql packagename #--query --list (list all files in package)
$ rpm -qlp packagename.rpm #--package (list all files in .rpm file)
$ rpm -qc packagename #--configfiles (list only configuration files in package)
$ rpm -qf /path/to/file #--file (show which package owns file)
$ rpm -qa --last #--all (query all packages and sort by install time with latest on top)
Handle .rpmnew, .rpmsave, .rpmorig system configuration files.
$ rpmconf -at #--all --test (find all affected config files and only report without taking action)
$ rpmconf -a #(prompt to keep, delete, or merge)
$ rpmconf -af vimdiff #--frontend (merge using vimdiff)
$ rpmconf -c #--clean (delete orphaned .rpmnew and .rpmsave files)
Install DNF.
$ zypper install dnf
Either install the package that adds standard repos or manually symlink/copy the existing repo files.
$ zypper install rpm-repos-openSUSE-Tumbleweed
$ ls /etc/yum.repos.d
$ cd /etc/yum.repos.d
$ ln -s /etc/zypp/repos.d/myfavrepo1
$ ln -s /etc/zypp/repos.d/myfavrepo2
...
Edit DNF configuration.
/etc/dnf/dnf.conf
allow_vendor_change=True
protect_running_kernel=False
install_weak_deps=False
defaultyes=True
fastestmirror=True
max_parallel_downloads=6
install_weak_deps is like zypper's solver.onlyRequires
Refresh repos.
$ dnf makecache
Perform system upgrade à la zypper dup.
$ dnf --allowerasing distro-sync
dsync is a shorter alias for distro-sync
Optionally enable timed expiring of metadata cache to trigger automatic repo refresh.
$ systemctl enable --now dnf-makecache.timer
$ zypper se /regexp/ #search
$ zypper search namestring*anotherstring*
$ zypper --no-refresh search namestring #(disable autorefresh before command = faster)
$ zypper search -s namestring #--details (show versions and repos and more)
$ zypper search -d descriptionstring #--search-descriptions
$ zypper search -x exactmatchstring #--match-exact
$ zypper search -i installedpackagestring
$ zypper search -u notinstalledpackagestring
$ zypper search -du notinstalleddescriptionstring
$ zypper search --provides namestring #(or /path/to/file)
$ zypper search -f /path/to/file #--file-list (metadata /etc/, /bin/, /sbin/)
$ zypper search -t pattern groupstring
$ zypper search -t package namestring #(package type only, no srcpackage)
$ zypper search -r reponame namestring
$ zypper in packagename #install
$ zypper install --no-recommends packagename
$ zypper install --recommends packagename
$ zypper install --oldpackage 'packagename<currentversion'
$ zypper install -f packagename #--force (reinstall)
$ zypper install -t pattern groupname #--type (default type = package, pattern=group)
$ zypper in pattern:groupname
$ zypper in reponame:packagename
$ zypper install-new-recommends #inr
$ zypper inr --recommends #(install even when recommends are disabled)
$ zypper rm packagename #remove
$ zypper remove -u packagename #--clean-deps (also remove dependencies that will become unneeded)
$ zypper remove -t pattern groupname
$ zypper rm $(zypper -s 11 pa --unneeded | awk 'NR>4 {print $5}') #(remove unneeded packages)
$ zypper locks #ll (list locked packages)
$ zypper addlock packagename #al (prevent removing or installing specific packages)
$ zypper al -r reponame packagename #(restrict lock to a repo)
$ zypper removelock packagename #rl
$ zypper refresh #ref
$ zypper refresh --force #-f
$ zypper ref --repo repoID1 repoID2 #-r (refresh specific repo)
$ zypper repos #lr (list repositories)
$ zypper repos --uri #-u
$ zypper repos --priority #-p
$ zypper lr -EP #--show-enabled-only --sort-by-priority
$ zypper modifyrepo --no-refresh 1 2 3 #mr -F (disable autorefresh for repos 1, 2, 3)
$ zypper modifyrepo --priority 105 repoID #mr -p (set repo priority)
$ zypper mr -p 0 repoID #(reset repo priority to default)
$ zypper mr -d repoID #--disable (disable repo)
$ zypper mr -e repoID #--enable (enable a previously disabled repo)
$ zypper mr -kt #--keep-packages --remote (keep packages from all remote repos)
$ zypper renamerepo oldname newname #nr (change repo alias; use old name or repoID number)
$ zypper list-patches #lp (list bugfixes on Leap)
$ zypper list-updates #lu (list newer package versions)
$ zypper lu -a #--all (show non-installable newer package versions from lower priority repos)
$ zypper -q lu | awk -F'|' 'NR>2 {gsub(/ /,""); print $3}' ORS=' '
$ zypper patch #(get bugfixes on Leap)
$ zypper update #up (get all package updates on Leap)
$ zypper up packagename #(update specific package on Tumbleweed and Leap)
$ zypper dist-upgrade #dup (get updates on Tumbleweed / upgrade to next version on Leap)
$ zypper dup --details #(show versions and repos)
$ zypper dup --no-recommends #(skip installing recommended packages)
$ zypper dup --allow-vendor-change #(favor repo priorities over package versions)
$ zypper ps -s #--short (list processes still using deleted files)
$ zypper verify #ve (verify dependencies)
$ zypper purge-kernels
$ zypper clean #cc (clean downloaded packages cache)
$ zypper clean -a #(clean repo metadata and package cache)
$ zypper pa #packages
$ zypper packages -r reponame #--repo (list all packages in repo)
$ zypper packages -i #--installed-only
$ zypper packages -i -r reponame
$ zypper packages -u #--not-installed-only
$ zypper packages --recommended --not-installed-only
$ zypper packages --unneeded
$ zypper packages --orphaned
$ zypper pt #patterns
$ zypper patterns --installed-only #-i
$ zypper patterns --not-installed-only #-u
$ zypper if packagename #info
$ zypper info packagename | awk '/Version/ {print $3}'
$ zypper info -t package "*" | less
$ zypper info -t pattern "*" | less
$ zypper -n command argument #--non-interactive (no user prompts)
First, update all packages in the current release version. Refresh repos if autorefresh has been disabled.
$ zypper refresh
$ zypper update
Upgrade to the new release version. Refresh repos first if needed.
$ zypper --releasever 15.4 refresh
$ zypper --releasever 15.4 dist-upgrade
If prompted to insert the old installation CD/DVD medium, disable its corresponding repo and retry upgrading.
$ zypper lr -Eu
$ zypper mr --disable oldCDrepoID
Update all current packages first.
$ zypper refresh
$ zypper update
Remove all current repos (or back up rather than delete).
$ rm /etc/zypp/repos.d/*.repo
Add new repos.
$ zypper addrepo -c http://download.opensuse.org/tumbleweed/repo/oss repo-oss
$ zypper addrepo -c http://download.opensuse.org/tumbleweed/repo/non-oss repo-non-oss
$ zypper addrepo -c http://download.opensuse.org/update/tumbleweed/ repo-update
(The update repo is usually empty and is only used as a last resort when the next snapshot of Tumbleweed is late and a big security hole has to be fixed fast.)Upgrade — execute within screen in case of any display/console issues.
$ screen -DR upgrade
$ zypper clean --all
$ zypper refresh
$ zypper dist-upgrade --allow-vendor-change
If errors occur...
Retrieving: package-1.0-1.x86_64.rpm ............................................................[error]
File './x86_64/package-1.0-1.x86_64.rpm' not found on medium 'http://download.opensuse.org/repositories/path:/app/openSUSE_Tumbleweed/'
...force-refresh all repos and re-run upgrade.
$ zypper refresh --force
$ zypper dist-upgrade