Jaki jest najlepszy sposób na ponowne włączenie PPA / repo po aktualizacji?

40

Kiedy aktualizuję z wersji 11.10 do 12.04, jaki jest najlepszy sposób na ponowne włączenie moich PPA i dodanych repozytoriów?

philipballew
źródło

Odpowiedzi:

28

Musisz dodać je wszystkie z powrotem / włączyć ponownie indywidualnie, odznaczając linie w plikach w /etc/apt/sources.list.d/katalogu.

Chociaż czas aktualizacji jest dobrym czasem na ponowne oszacowanie, jeśli potrzebujesz PPA w pierwszej kolejności, jeśli używałeś go tylko do uzyskania nowszej wersji pakietu.

Jorge Castro
źródło
8

Napisałem skrypt bash, który usuwa wiodący znak skrótu ze wszystkich plików, sources.list.dktóre zostały wyłączone podczas aktualizacji.

Poniższy kod służy do aktualizacji raringźródeł do saucy.

Jeśli chcesz zachować sufiks # disabled on upgrade to ..., użyj

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

jeśli chcesz usunąć sufiks # disabled on upgrade to ..., stosowanie

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
źródło
4

Oto skrypt w języku Python, który używa interfejsu API APT w języku Python, aby znajdować i włączać takie źródła, jednocześnie ustawiając wydanie na bieżącą wersję:

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

Jeśli uruchomisz go bez sudo, nie będzie w stanie zapisać zmian, ale pokaże, które źródła będą włączone. Uruchom z, sudoaby zapisać zmiany.

muru
źródło
Czy to zastępuje na przykład „# deb cran.rstudio.com/bin/linux/ubuntu artful /” przez „# deb cran.rstudio.com/bin/linux/ubuntu bionic”? Co by się stało, gdybyś tego nie zrobił (tak jak wcześniej)?
Jeffrey Benjamin Brown
@JeffreyBenjaminBrown tak, a jeśli go nie zastąpisz, może się zdarzyć, że zależności nie będą spełnione.
muru
Odkryłem, że słowo „pomysłowy” (kryptonim 17.10) zostało zastąpione przez „bionic” w niektórych liniach, które zostały skomentowane jako „wyłączone przy aktualizacji ...”, podczas gdy inne nie. Właśnie odkomentowałem wszystkie wiersze z tym „wyłączonym” komentarzem i apt przystąpił do pracy (chociaż z jakiegoś powodu musiałem ponownie zainstalować gcc). I używam wielu repozytoriów innych firm - 13 plików w sources.list.d, a trzy obcych w sources.list. Czy to może być coś, czym teraz zajmuje się Ubuntu?
Jeffrey Benjamin Brown
@JeffreyBenjaminBrown Możliwe, że ostatnio nie aktualizowałem (zwykle nowe instalacje), więc nie wiem.
muru
1
Wygląda na to, że uszkodziłem moje pliki źródłowe apt dla 19.10
Dreamcat4
1

Stworzyłem kilka skryptów, które zarówno włączają (ponownie włączają), jak i wyłączają PPA, szczególnie po aktualizacji. Tutaj są:

Skrypt ponownego włączania 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"

Skrypt wyłączania 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"

sudoJest wliczone tak można przechowywać ten skrypt w swoim domowym katalogu bin

Severo Raz
źródło