Qual é a melhor maneira de reativar PPAs / repos após uma atualização?

40

Quando atualizo de 11.10 para 12.04, qual é a melhor maneira de reativar meus PPAs e repositórios adicionados?

philipballew
fonte

Respostas:

28

Você precisa adicioná-los todos de volta / reativá-los individualmente, descomentando as linhas nos arquivos no /etc/apt/sources.list.d/diretório

Embora o tempo de atualização seja um bom momento para reavaliar se você precisa do PPA em primeiro lugar, se estivesse usando apenas um para obter uma versão mais recente de um pacote.

Jorge Castro
fonte
8

Eu escrevi um script bash que remove o caractere hash principal de todos os arquivos sources.list.ddesabilitados durante a atualização.

O código a seguir é para atualizar raringfontes para saucy.

Se você deseja manter o sufixo # disabled on upgrade to ..., use

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 você deseja excluir o sufixo # disabled on upgrade to ..., use

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

Aqui está um script python que usa a API do Python APT para encontrar e ativar essas fontes, enquanto define o release para o release atual:

#! /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 você executá-lo sem sudo, ele não poderá salvar as alterações, mas mostrará quais fontes seriam ativadas. Execute com sudopara salvar as alterações.

muru
fonte
Isso substitui, por exemplo, '# deb cran.rstudio.com/bin/linux/ubuntu artful /' por '# deb cran.rstudio.com/bin/linux/ubuntu bionic'? O que aconteceria se você não fizesse isso (como a resposta antes da sua)?
Jeffrey Benjamin Brown
@JeffreyBenjaminBrown, e se você não substituí-lo, pode acontecer que as dependências não sejam satisfeitas.
muru 01/07/19
Eu descobri que a palavra "artful" (o nome de código 17.10) havia sido substituída por "biion" em algumas das linhas comentadas como "desativadas na atualização ...", enquanto outras não. Eu apenas descomentei todas as linhas com esse comentário "desativado" e o apt começou a funcionar (embora eu tenha que reinstalar o gcc por algum motivo). E eu uso muitos repositórios de terceiros - 13 arquivos sources.list.de três alienígenas sources.list. Isso pode ser algo que o Ubuntu cuida automaticamente agora?
Jeffrey Benjamin Brown
@JeffreyBenjaminBrown Possivelmente, não atualizei recentemente (instalações novas, geralmente), então não sei.
muru
11
Isso parece ter quebrado meus arquivos de fontes apt para 19.10
Dreamcat4
1

Criei alguns scripts para ativar (reativar) e desativar PPAs, especialmente após uma atualização. Aqui estão eles:

Script de reativação do 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 desativação do 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"

O sudoestá incluído para que você possa armazenar esse script no seu diretório bin casa

Severo Raz
fonte