¿Cuál es la mejor manera de volver a habilitar PPA / repos después de una actualización?

Respuestas:

28

Debe agregarlos todos / volverlos a habilitar individualmente descomentando las líneas en los archivos en el /etc/apt/sources.list.d/directorio.

Aunque el tiempo de actualización es un buen momento para reevaluar si necesita el PPA en primer lugar si solo estaba usando uno para obtener una versión más nueva de un paquete.

Jorge Castro
fuente
8

Escribí un script bash que elimina el carácter hash principal de todos los archivos sources.list.dque se deshabilitaron durante la actualización.

El siguiente código es para actualizar las raringfuentes a saucy.

Si desea conservar el sufijo # 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

si desea eliminar el sufijo # 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
fuente
4

Aquí hay una secuencia de comandos de Python que utiliza la API APT de Python para buscar y habilitar dichas fuentes, mientras configura la versión para la versión actual:

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

Si lo ejecuta sin sudo, no podrá guardar los cambios, pero mostrará qué fuentes se habilitarían. Ejecute con sudopara guardar los cambios.

muru
fuente
¿Reemplaza, por ejemplo, '# deb cran.rstudio.com/bin/linux/ubuntu artful /' con '# deb cran.rstudio.com/bin/linux/ubuntu bionic'? ¿Qué pasaría si no hicieras eso (como lo hace la respuesta antes que tú)?
Jeffrey Benjamin Brown
@JeffreyBenjaminBrown lo hace, y si no lo reemplaza, puede suceder que las dependencias no puedan ser satisfechas.
muru
Descubrí que la palabra "ingenioso" (el nombre en clave 17.10) había sido reemplazado por "biónico" en algunas de las líneas que se comentaron "deshabilitado en la actualización ...", mientras que otras no. Acabo de comentar todas las líneas con ese comentario "deshabilitado" y apt procedió a trabajar (aunque tuve que reinstalar gcc por alguna razón). Y uso muchos repositorios de terceros: 13 archivos sources.list.dy tres extraterrestres sources.list. ¿Podría ser esto algo de lo que Ubuntu se ocupa automáticamente ahora?
Jeffrey Benjamin Brown
@JeffreyBenjaminBrown Posiblemente, no he actualizado en los últimos tiempos (nuevas instalaciones, por lo general), así que no sé.
muru
1
Esto parece haber roto mis archivos de fuentes apt para 19.10
Dreamcat4
1

He creado un par de scripts para habilitar (volver a habilitar) y deshabilitar PPA, especialmente después de una actualización. Aquí están:

Script de reactivación de 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 desactivación de 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"

Se sudoincluye para que pueda almacenar este script en su directorio de inicio

Severo Raz
fuente