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.