Kiedy aktualizuję z wersji 11.10 do 12.04, jaki jest najlepszy sposób na ponowne włączenie moich PPA i dodanych repozytoriów?
Kiedy aktualizuję z wersji 11.10 do 12.04, jaki jest najlepszy sposób na ponowne włączenie moich PPA i dodanych repozytoriów?
Odpowiedzi:
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.
Napisałem skrypt bash, który usuwa wiodący znak skrótu ze wszystkich plików, sources.list.d
któ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
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, sudo
aby zapisać zmiany.
sources.list.d
, a trzy obcych w sources.list
. Czy to może być coś, czym teraz zajmuje się Ubuntu?
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"
sudo
Jest wliczone tak można przechowywać ten skrypt w swoim domowym katalogu bin