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.

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

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


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

Ini juga menemukan debbaris yang dikomentari, dimulai dengan # deb, dan baris dari file seperti foo-ppa.list.distUpgrade- apakah itu dimaksudkan?
Volker Siegel
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.