Talk:Update contribs

From SME Server
Jump to: navigation, search

--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