技術レベルでは、いくつかの大規模で人気のあるシステム情報ツールでこれらの変更を処理しなければならなかった人として、基本的には次のようになります。
sources.list.d /の場合
# to add
if [[ ! -e /etc/apt/sources.list.d/some_repo.list ]];then
echo 'some repo line for apt' > /etc/apt/sources.list.d/some_repo.list
fi
# to delete
if [[ -e /etc/apt/sources.list.d/some_repo.list ]];then
rm -f /etc/apt/sources.list.d/some_repo.list
fi
以下と同じチェックを行っていない限り、レポ行をコメントアウトした場合、これらのテストは間違っていることに注意してください。以下と同じチェックを行う場合、1つではなく多くのファイルに対して実行されることを除いて、まったく同じ複雑さです。また、可能性のあるすべてのファイルをチェックしていない限り、重複アイテムを追加できます。重複アイテムを追加すると、そのうちの1つを削除するまでaptに文句を言わせます。
sources.listの場合
# to add. Respect commented out lines. Bonus points for uncommenting
# line instead of adding a new line
if [[ -z $( grep -E '\s*[^#]\s*some repo line for apt' /etc/apt/sources.list ) ]];then
echo 'some repo line for apt' >> /etc/apt/sources.list
fi
# to delete. Delete whether commented out or not. Bonus for not
# deleting if commented out, thus respecting the user's wishes
sed -i '/.*some repo line for apt.*/d' /etc/apt/sources.list
Google Chrome開発者は、Chromeパッケージが存在するために作成する正確なファイル名に依存して、Google Chromeソースの存在を確認しませんでした。他のすべての場合、sources.list.dに新しいファイルを作成し、希望どおりの名前を付けます。
あなたが持っているソースを見るために、もちろん、それはそれほどきれいではありません、あなたが読み、維持するのが簡単になることができないので:
cat /etc/sources.list
したがって、これは基本的に自動更新の目的で行われ、私が知る限り、ユーザーに簡単な単一コマンドを提供するために行われました。ユーザーにとっては、1つのファイルではなく多くのファイルを読み取ってリポジトリが追加されているかどうかを確認する必要があることを意味します。また、aptについては、1つのファイルではなく多くのファイルを読み取る必要があります。
現実の世界では、これをうまく行おうとすると、ファイルの名前に関係なく、すべてのファイルに対するチェックをサポートし、実行するアクションが必要かどうかをテストする必要があります。
ただし、うまくやらない場合は、チェックを無視して、アイテムがソースのどこかにあるかどうかを確認し、ファイル名をチェックするだけです。それはほとんどの自動化されたものが行うことだと思いますが、最終的にはすべてをチェックしてリストアップし、それらのファイルの1つが一致したかどうかに基づいて行動する必要があったため、唯一の本当の結果はそれをはるかに複雑にすることでした
一括編集
多数のサーバーを実行していることを考えると、/ etc / apt / sources.list.d /をループし、最初に項目がsources.listにないことを確認してから、それが存在する場合、毎晩スクリプトを作成するだけの誘惑に駆られますそのアイテムをsources.listに追加し、sources.list.dファイルを削除します。すでにsources.listにある場合は、sources.list.dファイルを削除します。
sources.listのみを使用することには、単純さと保守の容易さ以外に否定的なものはないため、特にシステム管理者による創造的なランダムアクションを考えると、そのような何かを追加することは悪い考えではないかもしれません。
上記のコメントで述べたように、inxi -rはファイルごとにアクティブなリポジトリをきれいに出力しますが、もちろんそれらを編集したり変更したりすることはありません。それが多くのディストリビューションである場合、それぞれがそれをどのように行うかを学ぶのは苦痛であり、それは確かであり、そしてランダムではなく、悲しいことに例外ではなく確かにルールです。