条件付きでaptリポジトリを追加するシェルスクリプト


8

aptリポジトリを追加するシェルスクリプトを書きたいのですが。
私はそれを使用してそれを行うことができることを知っていますsudo add-apt-repository -y <repo>

私の質問は、リポジトリがまだ追加されていない場合にのみ実行できますか?

if repo was not added yet:
  sudo add-apt-repository -y <repo>
  sudo apt-get update

ありがとう


add-apt-repository追加するのは1回だけです。興味深い部分はapt-get update条件付きで行うことです。
Beni Cherniavsky-Paskin

実際にリポジトリを2回追加してみましたか?私が今やったadd-apt-repositoryことはテーマに対して2回ですが、それは結果的に1つのファイルになりました。/etc/apt/sources/sources.list.d多分それはすでにチェックをしていますか?
Sergiy Kolodyazhnyy 2016年

私が試してからしばらく経ちましたが、IIRCはリポジトリのリストファイルの行を複製します
Itay

回答:


5

Itayの関数を変更して、複数のパラメーターを処理できるようにしました。

add_ppa() {
  for i in "$@"; do
    grep -h "^deb.*$i" /etc/apt/sources.list.d/* > /dev/null 2>&1
    if [ $? -ne 0 ]
    then
      echo "Adding ppa:$i"
      sudo add-apt-repository -y ppa:$i
    else
      echo "ppa:$i already exists"
    fi
  done
}

このように呼ばれるには:

add_ppa webupd8team/atom xorg-edgers/ppa ubuntu-wine/ppa

4
別の回答を改善したい場合は、編集を提案し、新しい回答を作成しないでください。
David Foerster

5

結局、ppaリポジトリを扱う関数を書いてしまいました。

add_ppa() {
  grep -h "^deb.*$1" /etc/apt/sources.list.d/* > /dev/null 2>&1
  if [ $? -ne 0 ]
  then
    echo "Adding ppa:$1"
    sudo add-apt-repository -y ppa:$1
    return 0
  fi

  echo "ppa:$1 already exists"
  return 1
}

もっと上品な方法があるのか​​な。


1

これで、リポジトリを追加する前に削除できます。

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