3,478 bytes added
, 16:20, 11 March 2017
{{usefulnote}}
==Update contribs==
===Backgrund===
Due to dependancies, the installation of contribs requires very often the installation of rpms coming from other repositories.
Updating the installed contribs needs sometimes to update the dependancies or sometimes only the dependancies get updated.
In order to avoid serious problems of compability, it is very important that all the rpms get updated only from the repository they are installed from, instead of only taking the most recent release existing in all the repositories that are available.
Yum doesn't do this job in one command but small scripts must be used for this purpose.
===Scripts===
2 scripts are available at this time:
====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
For more details, see the topic of the forum: https://forums.contribs.org/index.php/topic,52795.0.html
[[Category: Howto]]