50 votes

Quelle est la meilleure façon de réactiver les PPAs/repos après une mise à jour ?

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 ?

43voto

Joshua McKinnon Points 12379

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.

10voto

FrontierPsycho Points 282

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

6voto

muru Points 180007

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.

1voto

Tanerax Points 2708

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.

0voto

Hasan Points 1

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;

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X