Lorsque je passe de 11.10 à 12.04, quelle est la meilleure façon de réactiver mes PPA et les dépôts ajoutés ?
Réponses
Trop de publicités?Vous devez tous les rétablir/réactiver individuellement en décommentant les lignes des fichiers dans le fichier /etc/apt/sources.list.d/
répertoire.
Bien que la mise à jour soit un bon moment pour réévaluer si vous avez besoin du PPA en premier lieu, si vous l'utilisiez juste pour obtenir une version plus récente d'un paquetage.
J'ai écrit un script bash script qui supprime le caractère dièse de tête de tous les fichiers dans sources.list.d
qui ont été désactivées lors de la mise à niveau.
Le code suivant est destiné à la mise à niveau raring
sources à saucy
.
Si vous souhaitez conserver le suffixe # disabled on upgrade to ...
, utiliser
for f in /etc/apt/sources.list.d/*.list; do sudo sed -i 's/raring/saucy/g' $f; sudo sed -i 's/^# \(.*disabled on upgrade to.*\)/\1/g' $f;done
si vous souhaitez supprimer le suffixe # disabled on upgrade to ...
, utiliser
for f in /etc/apt/sources.list.d/*.list; do sudo sed -i 's/raring/saucy/g' $f; sudo sed -i 's/^# \(.*\) # disabled on upgrade to.*/\1/g' $f;done
Voici un script Python script qui utilise l'API Python APT pour trouver et activer de telles sources, tout en fixant la version à la version actuelle :
#! /usr/bin/python3
import aptsources.sourceslist as sl
import lsb_release
codename = lsb_release.get_distro_information()['CODENAME']
sources = sl.SourcesList()
for source in sources.list:
if source.comment.lower().find("disabled on upgrade") >= 0:
source.dist = codename
source.set_enabled(True)
print(source)
sources.save()
Si vous l'exécutez sans sudo
Il ne sera pas possible d'enregistrer les modifications, mais il indiquera les sources qui seront activées. Exécuter avec sudo
pour enregistrer les modifications.
J'ai créé quelques scripts pour activer (réactiver) et désactiver les PPAs, notamment après une mise à jour. Les voici :
PPA re-enable script
#! /bin/bash
# PPA re-enable script
# Use: ppa-reenable source.list
# to reenable a PPA without its source line
# Use: ppa-reenable src source.list
# to reenable a PPA with its source line
mod=1
file="$1"
if [ $1 == "src" ]; then mod=""; file="$2"; fi;
sudo sed -i "${mod}s/^# \(.*\) \(disabled on upgrade.*\)\?/\1/" "$file"
Désactivation du PPA script
#! /bin/bash
# PPA disable script
# Use: ppa-disable source.list
# to disable the PPA completely
# Use: ppa-disable src source.list
# to disable the source of the PPA only
file="${1}"
mod=""
# If its only needed to disable the source
if [ $1 = "src" ]; then mod="2"; file="${2}"; fi;
# If source line is disabled, don't comment it out
second="`sed -n 2p \"$file\"`"
second="${second:0:1}"
if ( [ $second == "#" ] && [ $mod != "2" ] ); then
mod="1"
fi
sudo sed -i "${mod}s/^/# /" "$file"
En sudo
est inclus afin que vous puissiez stocker ce script dans votre répertoire bin personnel.
Pour vérifier et mettre à jour automatiquement le fichier source.list, j'ai créé un script à l'aide de curl
y codename
comme suit.
#!/bin/bash
CODENAME="$(lsb_release -cs)"
for file in /etc/apt/sources.list.d/*.list;
do
APT_URL="$(cat $file | grep -Eo '(http|https)://[a-zA-Z0-9./?=_-]*' | sort | uniq)"
CURRENT_CODES="$(cat $file | rev | awk '{NF=2}1' | rev | awk '{print $1;}')"
LENGTH=${#APT_URL}
[[ ${APT_URL:LENGTH-1:1} != */ ]] && APT_URL="$APT_URL/"; :
NEW_APT_URL="${APT_URL}dists/${CODENAME}"
echo -n "$NEW_APT_URL"
STATUS=$(curl --head --location --write-out %{http_code} --silent --output /dev/null ${NEW_APT_URL})
if [[ $STATUS == 200 ]]; then
echo -en "\e[93m OK\033[0m"
for code in $CURRENT_CODES;
do
[[ $code != $CODENAME ]] && sudo sed -i "s/$code/$CODENAME/g" $file
done;
sudo sed -i 's/^# \(.*\) # disabled on upgrade to.*/\1/g' $file
echo -e "\e[92m DONE\033[0m"
else
echo -e "\e[91m NOT FOUND\033[0m"
fi
done;