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

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

40
задан 18 May 2017 в 12:05

5 ответов

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

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

0
ответ дан 18 May 2017 в 12:05

Я создал несколько сценариев для включения (повторного включения) и отключения 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"

The [ 112] включен, так что вы можете сохранить этот скрипт в вашем домашнем каталоге bin

0
ответ дан 18 May 2017 в 12:05

Я написал сценарий 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
.
0
ответ дан 18 May 2017 в 12:05

Вот скрипт 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, чтобы сохранить изменения.

0
ответ дан 18 May 2017 в 12:05

Для проверки и автоматического обновления файла source.list я создал скрипт, используя curl и кодовое имя следующим образом.

#!/bin/bash

CODENAME="$(lsb_release -cs)"

for file in /etc/apt/sources.list.d/*.list; 
   do
      APT_URL="$(cat $file | grep -Eo '(http|https)://[a-zA-Z0-9./?=_-]*' | sort | uniq)"
      CURRENT_CODES="$(cat $file | rev | awk '{NF=2}1' | rev | awk '{print $1;}')"
      LENGTH=${#APT_URL}
      [[ ${APT_URL:LENGTH-1:1} != */ ]] && APT_URL="$APT_URL/"; :
      NEW_APT_URL="${APT_URL}dists/${CODENAME}"
      echo -n "$NEW_APT_URL"
      STATUS=$(curl --head --location --write-out %{http_code} --silent --output /dev/null ${NEW_APT_URL})
      if [[ $STATUS == 200 ]]; then
         echo -en "\e[93m OK\033[0m"
         for code in $CURRENT_CODES;
            do
               [[ $code != $CODENAME ]] && sudo sed -i "s/$code/$CODENAME/g" $file
         done;
         sudo sed -i 's/^# \(.*\) # disabled on upgrade to.*/\1/g' $file
         echo -e "\e[92m DONE\033[0m"
      else
         echo -e "\e[91m NOT FOUND\033[0m"
      fi
done;
0
ответ дан 6 November 2020 в 17:02

Другие вопросы по тегам:

Похожие вопросы: