Який найкращий спосіб знову ввімкнути PPA / repos після оновлення?


Відповіді:


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 APT Python для пошуку та включення таких джерел, встановлюючи випуск для поточного випуску:

#! /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" у деяких рядках, коментуючи "вимкнено оновлення ...", а в інших не було. Я просто прокоментував усі рядки з цим "відключеним" коментарем і влучний приступив до роботи (хоча мені довелося перевстановити 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включено, щоб ви могли зберігати цей скрипт у своєму дому

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.