Вопрос сценарий оболочки для условного добавления репозитория apt


Я хочу написать сценарий оболочки, который добавит apt-репозиторий.
Я знаю, что могу это сделать, используя sudo add-apt-repository -y <repo>,

Мой вопрос: могу ли я сделать это, только если репозиторий не был добавлен уже, например:

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

благодаря


8
2018-05-11 06:57


происхождения


add-apt-repository добавит только один раз; интересная часть делает apt-get update условно. - Beni Cherniavsky-Paskin
Вы даже пытались добавить репозиторий дважды? То, что я сделал сейчас, это add-apt-repository для темы дважды, но это привело только к одному файлу в /etc/apt/sources/sources.list.d Может быть, он уже делает чеки? - Sergiy Kolodyazhnyy
Прошло некоторое время с тех пор, как я попробовал, но IIRC он дублирует строку в файле списка репозитория - Itay


ответы:


Я изменил функцию 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

6
2018-03-23 15:48



Если вы хотите улучшить другой ответ, предложите отредактировать его и не создавайте новый ответ. - David Foerster


В итоге я написал функцию для работы с репозиториями 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
}

Интересно, есть ли еще более элегантный способ.


5
2018-05-11 11:40





Теперь можно удалить репозиторий до его добавления:

sudo add-apt-repository -r $REPO
sudo add-apt-repository $REPO

0
2018-01-03 22:10