cara memeriksa apakah PPA sudah ditambahkan ke daftar sumber apt di skrip bash

11

Apakah ada yang tahu cara memeriksa apakah PPA sudah ditambahkan ke sistem saya sebelum saya menambahkannya dengan add-apt-repositoryperintah dalam a shell script.

Itu akan sangat membantu.

Terima kasih.

Josh
sumber

Jawaban:

11

Anda dapat melakukan sesuatu seperti ini:

the_ppa=...  # e.g. the_ppa="ondrej/apache2"

if ! grep -q "^deb .*$the_ppa" /etc/apt/sources.list /etc/apt/sources.list.d/*; then
    # commands to add the ppa ...
fi

Catatan:

  • grep keluar dengan sukses jika menemukan kecocokan
  • Yang !meniadakan ini, jadi perintah akan dieksekusi jika tidak ada kecocokan = ppa tidak ditambahkan
  • The -qbendera membuat grep tenang , sehingga tidak mencetak garis cocok. Itu hanya akan berisik, kita hanya perlu tahu apakah ada kecocokan atau tidak, yang kode keluarnya sempurna
  • The ^deb .*prefix adalah untuk memastikan garis cocok dimulai dengan deb, untuk mengecualikan garis yang komentar
janos
sumber
Ternyata, ini akan menemukan ppas yang telah dikomentari, tetapi saya ingin menemukan PPA yang belum dikomentari, dan @ Ten-Coins menjawabnya.
Taytay
2

Buka terminal Anda dan ketik perintah ini

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep fogger

ganti fogger dengan nama PPA.

masukkan deskripsi gambar di sini

rɑːdʒɑ
sumber
1
Senang melihat bahwa katak masih hidup, saya kira grep bukan solusi yang tepat untuk pernyataan if dalam skrip shell
Josh
Anda dapat mencari bidang dengan awk juga. cukup cepat.
rɑːdʒɑ
Saya tidak terbiasa dengan awk tetapi jika Anda memiliki solusi jangan ragu untuk mengirim jawaban Anda dan dapatkan pengulangan Anda. Ps. Saya sangat menyukai satu liner
Josh
karena saya sedang berlibur tidak dapat memposting sekarang tanpa pengujian dengan benar. untuk apa downvote itu?
rɑːdʒɑ
Saya akan menguji ini dengan pernyataan if nanti hari itu. Maaf untuk downvote. Saya tidak bisa membaca posting seperti itu larut malam. Saya pikir ini harus bekerja dan akan merespons nanti jika saya telah menguji perintah.
Josh
0

Menghapus file list.save, sumber, pastikan hanya baris deb dan hitung untuk "fogger" ppa:

ppa_added=`grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v list.save | grep -v deb-src | grep deb | grep fogger | wc -l`

echo $ppa_added
Bellera
sumber
Ini juga menemukan debbaris yang dikomentari, dimulai dengan # deb, dan baris dari file seperti foo-ppa.list.distUpgrade- apakah itu dimaksudkan?
Volker Siegel