Je cherchais à avoir june commande équivalente à
Code : Tout sélectionner
sudo pacman -Syu
Ne trouvant pas grand chose à part yaourt (mais j'aime trop pacman, rien que le nom!!) et voulant apprendre le bash, j'ai décidé d'écrire mon script pour faire ça.
L'idée est de retrouver les paquets installés explicitement ayant pour mainteneur "Unknown Packager", puis de les chercher sur AUR. Si les versions sont différentes, je propose de les mettre à jour.
Code : Tout sélectionner
#!/bin/sh
AUR_URL="https://aur.archlinux.org"
echo search aur package
# list all package explicitly installed
for package in `pacman -Qe|sed -e "s/\([^\ ]*\)\ .*/\1/"`; do
# search for package with "Unknown Packager" (because install from makepgk not correctly setup)
if [[ `pacman -Qi $package|grep "Unknown Packager"` == *"Unknown Packager" ]]; then
# get the current version installed
version_cur=`pacman -Q $package|cut -d" " -f2`
# get the AUR version and url
package_info=`curl -s "$AUR_URL/rpc.php?type=info&arg=$package"`
version_new=`echo $package_info|sed -e "s/.*\"Version\":\"\([^\"]*\)\".*/\1/"`
package_url=`echo $package_info|sed -e "s/.*\"URLPath\":\"\([^\"]*\)\".*/\1/"|sed -e "s,\\\\\\,,g"`
printf "found %s (%s)\t%s\t%s\n" $package $package_url $version_cur $version_new
# if version differ, then ask for installation
if [[ $version_cur != $version_new ]];then
read -p "Update $package from $version_cur to $version_new ?(y/n)"
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo do update $package
# get the tar.gz from AUR
curl $AUR_URL$package_url -o $package.tar.gz
# unzip
tar zxvf $package.tar.gz
# makepkg -s
cd $package
makepkg -s
sudo pacman -U $package*
# delete the tar.gz
cd ..
rm -r $package
rm $package.tar.gz
fi
fi
fi
done
Voila.