Qual è il modo migliore per riattivare PPA / repository dopo un aggiornamento?


Risposte:


28

È necessario aggiungerli tutti nuovamente / riattivarli singolarmente decommentando le righe nei file nella /etc/apt/sources.list.d/directory.

Sebbene il tempo di aggiornamento sia un buon momento per rivalutare se hai bisogno del PPA in primo luogo se ne stavi usando uno solo per ottenere una versione più recente di un pacchetto.


8

Ho scritto uno script bash che rimuove il carattere hash principale da tutti i file sources.list.dche sono stati disabilitati durante l'aggiornamento.

Il codice seguente è per l'aggiornamento delle raringfonti a saucy.

Se si desidera mantenere il suffisso # disabled on upgrade to ..., utilizzare

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

se si desidera eliminare il suffisso # disabled on upgrade to ..., utilizzare

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

4

Ecco uno script Python che utilizza l'API APT Python per trovare e abilitare tali origini, impostando la versione alla versione corrente:

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

Se lo esegui senza sudo, non sarà in grado di salvare le modifiche, ma mostrerà quali fonti sarebbero abilitate. Esegui con sudoper salvare le modifiche.


Questo sostituisce, ad esempio, "# deb cran.rstudio.com/bin/linux/ubuntu artful /" con "# deb cran.rstudio.com/bin/linux/ubuntu bionic"? Cosa accadrebbe se non lo facessi (come fa la risposta prima del tuo)?
Jeffrey Benjamin Brown,

@JeffreyBenjaminBrown lo fa, e se non lo sostituisci, potrebbe succedere che le dipendenze non possano essere soddisfatte.
muru,

Ho scoperto che la parola "abile" (il nome in codice 17.10) è stata sostituita con "bionico" in alcune delle righe che sono state commentate "disabilitate durante l'aggiornamento ...", mentre altre no. Ho appena decompresso tutte le righe con quel commento "disabilitato" e apt ha continuato a funzionare (anche se per qualche motivo ho dovuto reinstallare gcc). E io uso un sacco di repository di terze parti - 13 file in sources.list.de tre alien in sources.list. Potrebbe essere qualcosa di cui Ubuntu si occupa automaticamente adesso?
Jeffrey Benjamin Brown,

@JeffreyBenjaminBrown Forse, non ho eseguito l'aggiornamento negli ultimi tempi (nuove installazioni, di solito), quindi non lo so.
muru,

1
Questo sembra aver rotto i miei file di sorgenti apt per 19.10
Dreamcat4

1

Ho creato un paio di script per abilitare (riattivare) e disabilitare i PPA, specialmente dopo un aggiornamento. Eccoli:

Script di riattivazione 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 di disabilitazione 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"

Il sudoè incluso in modo da poter memorizzare questo script nella vostra home directory bin

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.