Talk:Update contribs

From SME Server
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

--Mmccarn (talk) 13:23, 7 April 2017 (CEST) Content removed from page:

script 1

#!/bin/bash

echo "List of available repos beside SME:";
#list the disabled repos
for repo in $(yum repolist disabled |awk  '$1 !~ /id|Modules|repolist:/ {print $1}'); do

     echo $repo;

done
echo "";

# repo selection
index=0;
repos="";
proceed="proceed";

until [ "$repos" == "$proceed" ]; do

       repos[$index]=$repos;
       ((index=index+1));
       read -p 'Enter 1x repo name for selection or "proceed" to start the updating: ' repos;

done

# remove the repo "proceed"
repos=("${repos[@]:1}");


for repo in "${repos[@]}"; do
       echo "";
       echo "======================================";
       echo -e "\tUPDATE from repo: "$repo;
       echo "======================================";

       # generate the list of rpm installed from the repo
       for rpm in $(/sbin/e-smith/audittools/newrpms |awk -v repo_awk=@$repo 'repo_awk==$3 {print $1}'); do

               rpms=$rpm' '$rpms

       done

	# updating
       yum --enablerepo=$repo update $rpms;

done

exit 0

Using this script is very easy:

  • you get the list of all available repositories
  • enter 1 by 1 the name of the repo you want to update from
  • enter 'proceed' after the last repo
  • for each repo, yum show the list of rpms that could be updated and ask (Y/N) before starting

eg.:

List of available repos beside SME:
centosplus
contrib
epel
extras
fasttrack
fws
remi
smecontribs
smedev
smetest
smeupdates-testing
sogo3

Enter 1x repo name for selection or "proceed" to start the updating: epel
Enter 1x repo name for selection or "proceed" to start the updating: fws
Enter 1x repo name for selection or "proceed" to start the updating: proceed

script 2

This script is much shorter, runs faster and doesn't require to enter the name of the several repos:

#!/bin/bash

for repo in $(/sbin/e-smith/audittools/newrpms |grep \@ |awk ' {print $3}' |sort -u |sed s/@//); do

       # generate the list of rpm installed from the repo
       for rpm in $(/sbin/e-smith/audittools/newrpms |awk -v repo_awk=@$repo 'repo_awk==$3 {print $1}'); do
               rpms=$rpm' '$rpms
       done

       echo -e "\n\n===";
       echo -e "Repo: "$repo;
       echo -e "\nIncludePkgs: "$rpms;
       echo "===";
       # updating
       yum --enablerepo=$repo --setopt="$repo.includepkgs='$rpms'" update

done

exit 0

The script

  • runs 'newrpms' to get all repos that have been used to install non-standard packages
  • creates a list of rpms for each such repo
  • uses "--setopts" to specify "includepkgs" for each repo during update
  • asks for Y/N and runs the update