Shell-Skript zum bedingten Hinzufügen eines passenden Repositorys

8

Ich möchte ein Shell-Skript schreiben, das ein passendes Repository hinzufügt.
Ich weiß, dass ich es mit schaffen kann sudo add-apt-repository -y <repo>.

Meine Frage ist, kann ich es nur tun, wenn das Repository noch nicht hinzugefügt wurde, so etwas wie:

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

Vielen Dank

Itay
quelle
add-apt-repositorywird es nur einmal hinzufügen; Der interessante Teil ist das apt-get updateBedingte.
Beni Cherniavsky-Paskin
Haben Sie sogar zweimal versucht, ein Repository hinzuzufügen? Was ich gerade getan habe, ist add-apt-repositoryzweimal für ein Thema, aber das führte nur zu einer Datei in. /etc/apt/sources/sources.list.dVielleicht führt es bereits die Überprüfungen durch?
Sergiy Kolodyazhnyy
Es ist schon eine Weile her, seit ich es versucht habe, aber IIRC dupliziert die Zeile in der Listendatei des Repositorys
Itay

Antworten:

5

Ich habe die Funktion von Itay so geändert, dass sie mehrere Parameter verarbeitet:

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
}

So zu nennen:

add_ppa webupd8team/atom xorg-edgers/ppa ubuntu-wine/ppa
Ugo Hed
quelle
4
Wenn Sie eine andere Antwort verbessern möchten, schlagen Sie eine Änderung vor und erstellen Sie keine neue Antwort.
David Foerster
5

Am Ende habe ich eine Funktion geschrieben, die sich mit ppa-Repositories befasst.

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
}

Ich frage mich, ob es einen eleganteren Weg gibt.

Itay
quelle
1

Jetzt ist es möglich, das Repository vor dem Hinzufügen zu entfernen:

sudo add-apt-repository -r $REPO
sudo add-apt-repository $REPO
Mike Shiyan
quelle