アップグレード後にPPA /リポジトリを再度有効にする最良の方法は何ですか?


回答:


28

/etc/apt/sources.list.d/ディレクトリ内のファイルの行のコメントを外すことにより、それらすべてを個別に追加/再有効化する必要があります。

アップグレード時間は、PPAを使用してパッケージの新しいバージョンを取得する場合に最初にPPAが必要かどうかを再評価するのに適した時間です。


8

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

4

以下は、Python APT APIを使用してそのようなソースを見つけて有効にし、同時にリリースを現在のリリースに設定する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で実行すると、変更を保存できませんが、どのソースが有効になるかが表示されます。with 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、3つのエイリアンのリポジトリ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あなたの家のbinディレクトリにこのスクリプトを保存することができるように含まれています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.