Làm thế nào để kiểm tra xem PPA đã được thêm vào danh sách nguồn apt trong tập lệnh bash chưa


11

Có ai biết cách kiểm tra xem PPA đã được thêm vào hệ thống của tôi chưa trước khi tôi thêm nó bằng add-apt-repositorylệnh trong a shell script.

Điều đó sẽ rất hữu ích.

Cảm ơn bạn.

Câu trả lời:


11

Bạn có thể làm một cái gì đó như thế này:

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

Ghi chú:

  • grep thoát khỏi thành công nếu nó tìm thấy một trận đấu
  • Các !phủ nhận này, vì vậy các lệnh sẽ được thực thi nếu không có trận đấu = ppa chưa thêm
  • Các -qlá cờ làm cho grep yên tĩnh , vì vậy nó không in các dòng phù hợp. Nó sẽ chỉ là tiếng ồn, chúng ta chỉ cần biết có khớp hay không, mà mã thoát là hoàn hảo
  • Các ^deb .*tiền tố là để đảm bảo dòng phù hợp bắt đầu với deb, để loại trừ dòng được nhận xét ra

Hóa ra, điều này sẽ tìm thấy các pp đã được nhận xét, nhưng tôi muốn tìm các PPA chưa được bình luận và câu trả lời @ Ten-Coins thực hiện điều đó.
Taytay

2

Mở terminal của bạn và gõ lệnh này

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

thay thế Fogger bằng tên PPA.

nhập mô tả hình ảnh ở đây


1
Rất vui khi thấy frogger vẫn còn sống, tôi đoán grep không phải là lời giải thích đúng đắn cho một câu lệnh if trong tập lệnh shell
Josh

bạn có thể tìm kiếm trường với awk cũng. khá nhanh
rɑːdʒɑ

Tôi không quen thuộc với awk nhưng nếu bạn có một giải pháp, đừng ngần ngại đăng bài của bạn và nhận được sự lặp lại của bạn. Thi thiên Tôi thích một lớp lót khá nhiều
Josh

vì tôi đang trong kỳ nghỉ nên không thể đăng bài ngay bây giờ. những gì downvote cho?
rdʒɑ 24/11/13

Tôi sẽ kiểm tra điều này với một tuyên bố nếu sau ngày hôm đó. Xin lỗi cho downvote. Tôi không nên đọc những bài viết như vậy vào đêm khuya. Tôi đoán điều này sẽ hoạt động và sẽ trả lời sau nếu tôi đã thử lệnh teh.
Josh

0

Xóa các tệp list.save, các nguồn, đảm bảo chỉ các dòng deb và tính nó cho ppa "Fogger":

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

Điều này cũng tìm thấy debcác dòng được nhận xét, bắt đầu # debvà các dòng từ các tệp như foo-ppa.list.distUpgrade- đó có phải là dự định không?
Volker Siegel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.