Was ist der beste Weg, um PPAs / Repos nach einem Upgrade wieder zu aktivieren?

40

Wie kann ich meine PPAs und hinzugefügten Repositorys nach dem Upgrade von 11.10 auf 12.04 am besten wieder aktivieren?

philipballew
quelle

Antworten:

28

Sie müssen sie alle einzeln hinzufügen / wieder aktivieren, indem Sie die Zeilen in den Dateien im /etc/apt/sources.list.d/Verzeichnis auskommentieren .

Die Aktualisierungszeit ist jedoch ein guter Zeitpunkt, um eine Neubewertung vorzunehmen, wenn Sie die PPA zuerst benötigen, wenn Sie nur eine verwenden, um eine neuere Version eines Pakets zu erhalten.

Jorge Castro
quelle
8

Ich habe ein Bash-Skript geschrieben, das das führende Hash-Zeichen aus allen Dateien entfernt sources.list.d, die während des Upgrades deaktiviert wurden.

Der folgende Code dient zum Aktualisieren von raringQuellen auf saucy.

Wenn Sie das Suffix beibehalten möchten # disabled on upgrade to ..., verwenden Sie

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

Wenn Sie das Suffix löschen möchten # disabled on upgrade to ..., verwenden Sie

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
quelle
4

Hier ist ein Python-Skript, das die Python APT-API verwendet, um solche Quellen zu finden und zu aktivieren, während das Release auf das aktuelle Release gesetzt wird:

#! /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()

Wenn Sie es ohne ausführen sudo, können die Änderungen nicht gespeichert werden, es wird jedoch angezeigt, welche Quellen aktiviert sind. Führen Sie mit aus sudo, um die Änderungen zu speichern.

muru
quelle
Ersetzt dies beispielsweise "# deb cran.rstudio.com/bin/linux/ubuntu artful /" durch "# deb cran.rstudio.com/bin/linux/ubuntu bionic"? Was würde passieren, wenn Sie das nicht tun würden (wie die Antwort vor Ihrer tut)?
Jeffrey Benjamin Brown
@JeffreyBenjaminBrown es tut, und wenn Sie es nicht ersetzen, kann es passieren, dass Abhängigkeiten nicht erfüllt werden können.
Muru
Ich stellte fest, dass das Wort "artful" (der Codename 17.10) in einigen Zeilen, die mit "disabled on upgrade ..." kommentiert wurden, durch "bionic" ersetzt wurde, während andere dies nicht taten. Ich habe einfach alle Zeilen mit diesem "deaktivierten" Kommentar auskommentiert und apt hat funktioniert (obwohl ich gcc aus irgendeinem Grund neu installieren musste). Und ich verwende viele Repos von Drittanbietern - 13 Dateien sources.list.dund drei fremde sources.list. Könnte dies etwas sein, das Ubuntu jetzt automatisch erledigt?
Jeffrey Benjamin Brown
@ JeffreyBenjaminBrown Möglicherweise habe ich in letzter Zeit kein Upgrade durchgeführt (normalerweise bei Neuinstallationen), also keine Ahnung.
muru
1
Dies scheint meine Apt-Quelldateien für 19.10
Dreamcat4
1

Ich habe einige Skripte erstellt, um PPAs zu aktivieren (erneut zu aktivieren) und zu deaktivieren, insbesondere nach einem Upgrade. Hier sind sie:

PPA-Skript erneut aktivieren

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

PPA-Deaktivierungsskript

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

Das sudoist enthalten, damit Sie dieses Skript in Ihrem Home-Bin-Verzeichnis speichern können

Severo Raz
quelle