Quel est le meilleur moyen de réactiver les PPA / Repo après une mise à niveau?

40

Quand j'effectue une mise à niveau de 11.10 à 12.04, quel est le meilleur moyen de réactiver mes PPA et les référentiels ajoutés?

philipballew
la source

Réponses:

28

Vous devez tous les ajouter / réactiver individuellement en supprimant la mise en commentaire des lignes dans les fichiers du /etc/apt/sources.list.d/répertoire.

Bien que le temps de mise à niveau soit un bon moment pour réévaluer si vous avez besoin du PPA si vous en utilisiez juste un pour obtenir une version plus récente d'un package.

Jorge Castro
la source
8

J'ai écrit un script bash qui supprime le caractère de hachage de tous les fichiers sources.list.dqui ont été désactivés lors de la mise à niveau.

Le code suivant concerne la mise à niveau des raringsources vers saucy.

Si vous voulez conserver le suffixe # disabled on upgrade to ..., utilisez

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 voulez supprimer le suffixe # disabled on upgrade to ..., utilisez

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
Klaus se
la source
4

Voici un script python qui utilise l'API Python APT pour rechercher et activer de telles sources, tout en définissant la version dans 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 pourra pas enregistrer les modifications, mais il indiquera quelles sources seraient activées. Exécuter avec sudopour enregistrer les modifications.

muru
la source
Est-ce que cela remplace, par exemple, '# deb cran.rstudio.com/bin/linux/ubuntu astucieux /' avec '# deb cran.rstudio.com/bin/linux/ubuntu bionic'? Que se passerait-il si vous ne le faisiez pas (comme la réponse vous attend)?
Jeffrey Benjamin Brown
@JeffreyBenjaminBrown c'est le cas, et si vous ne le remplacez pas, il se peut que les dépendances ne puissent pas être satisfaites.
Muru
J'ai trouvé que le mot "astucieux" (nom de code 17.10) avait été remplacé par "bionique" dans certaines des lignes commentées "désactivé lors de la mise à niveau ...", alors que d'autres ne l'étaient pas. Je viens de commenter toutes les lignes avec ce commentaire "disabled" et apt a continué à fonctionner (même si j'ai dû réinstaller gcc pour une raison quelconque). Et j'utilise beaucoup de mises en pension tierces - 13 fichiers sources.list.det trois fichiers extraterrestres sources.list. Est-ce que c'est quelque chose que Ubuntu prend en charge automatiquement maintenant?
Jeffrey Benjamin Brown
@JeffreyBenjaminBrown Peut-être, je n'ai pas mis à niveau ces derniers temps (nouvelles installations, généralement), alors ne sais pas.
Muru
1
Cela semble avoir cassé mes fichiers sources apt pour 19h10
Dreamcat4
1

J'ai créé quelques scripts pour activer (réactiver) et désactiver les PPA, spécialement après une mise à niveau. Les voici:

Script de réactivation PPA

#! /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"

Script de désactivation de PPA

#! /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"

Le sudoest inclus pour que vous puissiez enregistrer ce script dans votre répertoire bin à domicile

Severo Raz
la source