Disable auto refresh for all remote repositories.
zypper mr -R -t
Now if you want to perform an update obviously you need to refresh the repositories. Here is a function that should help you do that. OpenSUSE defaults to bash for the log-in shell so you can just add this to your /etc/bash.bashrc.local note that bashrc.local does not exist and needs to be created.
update () {
## Check if user is root, if not exit with an error.
if (( EUID !=0 )); then
echo 'Root privileges are required for refreshing system repositories.' 1>&2
return 1
fi
## Create an array from the enabled repos by parsing zypper lr.
enabled=()
while IFS="|" read -ra line; do
[[ ${line[3]} = *Yes* ]] && enabled+=("${line[0]// /}")
done < <(zypper lr)
## Refresh all enabled repos and update.
zypper ref "${enabled[@]}" && zypper up
}
After you have save it you can source bashrc.local run: source /etc/bash.bashrc.local and then you can just run: update
One question might arise if you change you're log-in shell into something more advance. Don't worry you can just create a bash script and name it update (or whatever name you like) and modify that function like this.
#!/bin/bash
## Check if user is root, if not exit with an error.
if (( EUID !=0 )); then
echo 'Root privileges are required for refreshing system repositories.' 1>&2
exit 1
fi
## Create an array from the enabled repos by parsing zypper lr.
enabled=()
while IFS="|" read -ra line; do
[[ ${line[3]} = *Yes* ]] && enabled+=("${line[0]// /}")
done < <(zypper lr)
## Refresh all enabled repos and update.
zypper ref "${enabled[@]}" && zypper up
Put it in say /usr/local/bin or any place that you are comfortable with. Make it executable
chmod +x update Then you can just run update .
Happy updating!