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.