11.10から12.04にアップグレードする場合、PPAと追加されたリポジトリを再度有効にする最良の方法は何ですか?
/etc/apt/sources.list.d/
ディレクトリ内のファイルの行のコメントを解除することにより、それらすべてを個別に追加/再有効化する必要があります。
アップグレード時間は、PPAを使用してパッケージの新しいバージョンを取得している場合に、そもそもPPAが必要かどうかを再評価するのに適した時間です。
アップグレード中に無効になったsources.list.d
内のすべてのファイルから先頭のハッシュ文字を削除するbashスクリプトを作成しました。
次のコードは、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
リリースを現在のリリースに設定しながら、python Python APIを使用してこのようなソースを見つけて有効にする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
で実行して、変更を保存します。
特にアップグレード後に、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
が含まれているため、このスクリプトをホームbinディレクトリに保存できます。