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


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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.