shell script untuk menambahkan repositori apt secara kondisional


8

Saya ingin menulis skrip shell yang akan menambah repositori apt.
Saya tahu bahwa saya bisa melakukannya dengan menggunakan sudo add-apt-repository -y <repo>.

Pertanyaan saya adalah dapatkah saya melakukannya hanya jika repositori belum ditambahkan, seperti:

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

Terima kasih


add-apt-repositoryhanya akan menambahkannya sekali; bagian yang menarik adalah melakukan apt-get updatekondisional.
Beni Cherniavsky-Paskin

Pernahkah Anda benar-benar mencoba menambahkan repositori dua kali? Apa yang telah saya lakukan sekarang adalah add-apt-repositoryuntuk tema dua kali, tetapi itu menghasilkan hanya satu file di. /etc/apt/sources/sources.list.dMungkin sudah melakukan pemeriksaan?
Sergiy Kolodyazhnyy

Sudah lama sejak saya mencobanya tetapi IIRC itu menduplikasi baris dalam file daftar repositori
Itay

Jawaban:


5

Saya mengubah fungsi Itay sehingga menangani beberapa parameter:

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
}

Untuk dipanggil seperti ini:

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

4
Jika Anda ingin meningkatkan jawaban lain, harap sarankan edit untuk itu dan jangan membuat jawaban baru.
David Foerster

5

Saya akhirnya menulis fungsi untuk menangani repositori 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
}

Saya ingin tahu apakah ada cara yang lebih elegan.


1

Sekarang mungkin untuk menghapus repositori sebelum menambahkannya:

sudo add-apt-repository -r $REPO
sudo add-apt-repository $REPO
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.