Какой лучший способ повторно включить PPA / репозитории после обновления?

40

Когда я обновлюсь с 11.10 до 12.04, каков наилучший способ повторно включить мои PPA и добавленные репозитории?

philipballew
источник

Ответы:

28

Вам нужно добавить их все обратно / включить их по отдельности, раскомментировав строки в файлах в /etc/apt/sources.list.d/каталоге.

Хотя время обновления - хорошее время для переоценки, если вам нужен PPA в первую очередь, если вы просто использовали его для получения более новой версии пакета.

Хорхе Кастро
источник
8

Я написал скрипт bash, который удаляет главный хэш-символ из всех файлов, sources.list.dкоторые были отключены во время обновления.

Следующий код предназначен для обновления raringисточников до saucy.

Если вы хотите сохранить суффикс # disabled on upgrade to ..., используйте

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

если вы хотите удалить суффикс # disabled on upgrade to ..., используйте

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

Вот сценарий python, который использует API-интерфейс Python APT для поиска и включения таких источников при настройке выпуска на текущую версию:

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

Если вы запустите его без sudo, он не сможет сохранить изменения, но покажет, какие источники будут включены. Запустите с, sudoчтобы сохранить изменения.

Мур
источник
Заменяет ли это, например, «# deb cran.rstudio.com/bin/linux/ubuntu artful /» на «# deb cran.rstudio.com/bin/linux/ubuntu bionic»? Что произойдет, если вы не сделаете этого (как опережает ответ)?
Джеффри Бенджамин Браун
@JeffreyBenjaminBrown это делает, и если вы не замените его, может случиться так, что зависимости не могут быть удовлетворены.
Муру
Я обнаружил, что слово «artful» (кодовое имя 17.10) было заменено на «bionic» в некоторых строках, которые были прокомментированы как «отключенные при обновлении ...», в то время как другие не были. Я просто раскомментировал все строки с этим «отключенным» комментарием и apt приступил к работе (хотя мне пришлось переустановить gcc по некоторым причинам). И я использую много сторонних репозиториев - 13 файлов в sources.list.dи три чужих в sources.list. Может ли это быть тем, о чем Ubuntu позаботится автоматически сейчас?
Джеффри Бенджамин Браун
@JeffreyBenjaminBrown Возможно, я не обновлялся в последнее время (как правило, свежие установки), так что не знаю.
Муру
1
Это, кажется, сломало мои подходящие исходные файлы для 19.10
Dreamcat4
1

Я создал несколько сценариев для включения (повторного включения) и отключения PPA, особенно после обновления. Вот они:

Скрипт повторного включения 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"

Скрипт отключения 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Включен , так что вы можете сохранить этот скрипт в вашем домашнем каталоге бен

Северо Раз
источник