Saturday, March 8, 2014

Disable autorefresh

Disabling auto refresh of your repositories has some benefits. If you are on a limited internet connection or you just do not want to refresh every time you invoke zypper or yast sw_single then this post might be of interest for you.


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!