bir bash betiğinde apt kaynakları listesine PPA'nın önceden eklenip eklenmediğini nasıl kontrol edebilirim?


11

Birisi bir add-apt-repositorykomutla eklemeden önce sistemime zaten bir PPA eklenip eklenmediğini nasıl kontrol edeceğini biliyor mu shell script.

Çok yardımı dokunur.

Teşekkür ederim.

Yanıtlar:


11

Bunun gibi bir şey yapabilirsiniz:

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

Notlar:

  • grep bir eşleşme bulursa başarıyla çıkar
  • Bunu !reddeder, bu yüzden eşleşme yoksa komutlar yürütülür = ppa eklenmez
  • -qBayrak yapan grep sessiz o eşleşti hatları yazdırmayacağı şekilde. Sadece gürültü olurdu, sadece bir eşleşme olup olmadığını bilmeliyiz, bunun için çıkış kodu mükemmel
  • ^deb .*Önek emin eşleşti çizgi ile başlar yapmaktır deb, yorum haline çizgileri dışlamak için

Anlaşıldığı gibi, bu, yorumlanan ppasları bulacak, ancak yorum yapılmamış PPA'ları bulmak istiyorum ve @ Ten-Coins cevabı bunu yapıyor.
— Taytay

2

Terminalinizi açın ve bu komutu yazın

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

sisleyiciyi PPA adıyla değiştirin.

resim açıklamasını buraya girin


1
kurbağa hala hayatta görmek güzel, sanırım grep bir kabuk komut dosyası içindeki bir if deyimi için doğru soluthion değil
— Josh

awk ile de alan arayabilirsiniz. oldukça hızlı.
— rɑːdʒɑ

Ben awk aşina değilim ama bir çözüm varsa ansawre göndermek ve tekrar almak için tereddüt etmeyin. Ps. Bir gömlekleri çok beğeniyorum
— Josh

tatilde olduğum için şimdi dışarı test ile düzgün gönderemezsiniz. Bu aşağılık ne için?
— rɑːdʒɑ

Bunu o günün ilerleyen saatlerinde if ifadesiyle test edeceğim. İniş için üzgünüm. Bu tür yazıları gece geç saatlerde okumadım. Bu çalışması gerektiğini tahmin ve ben komut test varsa daha sonra cevap verecektir.
— Josh

0

List.save dosyaları, kaynakları kaldırmak, sadece deb satırları sağlamak ve "sisleme" ppa için saymak:

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

Bu aynı zamanda debyorum yapılan, ile başlayan # debsatırları ve dosyalardan gelen satırları bulur foo-ppa.list.distUpgrade- bu amaçlanıyor mu?
— Volker Siegel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.