Làm thế nào để có được một danh sách các kho chứa apt-get đang kiểm tra? [đóng cửa]


133

Tôi muốn một danh sách các repos trong nguồn.list, cộng với những danh sách trong nguồn.list.d /.

Tôi có thể lấy danh sách này ở dạng phù hợp để thiết lập máy chủ khác để nó xem cùng một repos không?

Ngoài ra, làm cách nào để xác định repo nào là nguồn của gói, được cài đặt hoặc có sẵn?


Câu trả lời:


174

Có vẻ như gần nhất là:

apt-cache policy

3
Có ai đó tăng cường đầu ra (tóm tắt các url, v.v.) và muốn chia sẻ lệnh của mình ở đây?
lony

49

AFAIK bạn không thể hỏi apt về nguồn hiện tại của họ là gì, tuy nhiên bạn có thể làm những gì bạn muốn bằng cách sử dụng các công cụ shell.

Lấy danh sách các kho lưu trữ:

grep -h ^deb /etc/apt/sources.list /etc/apt/sources.list.d/* >> current.repos.list

Áp dụng danh sách:

apt-add-repository << current.repos.list

Liên quan đến việc nhận repo từ một gói (đã cài đặt hoặc có sẵn), điều này sẽ thực hiện thủ thuật

apt-cache policy package_name |grep -m1 http| awk '{ print $2 " " $3 }'

Tuy nhiên, điều đó sẽ cho bạn thấy kho lưu trữ của phiên bản mới nhất có sẵn của gói đó, bạn có thể có nhiều kho lưu trữ hơn cho cùng một gói với các phiên bản cũ hơn. Xóa tất cả các công cụ grep / awk nếu bạn muốn xem danh sách đầy đủ.


9
danh sách đầy đủ đơn giảnapt-cache policy |grep http |awk '{print $2 $3}' |sort -u
Shadowbq

thiếu một khoảng trốngapt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
Shadowbq

Trong dòng lệnh với grep: /etc/apt/sources.list.d/*nên được thay đổi thành /etc/apt/sources.list.d/*.list. Về lý do tại sao, hãy xem Askubfox.com/questions/82825/NH
Erik Sjölund

18

Thử cái này:

cat /etc/apt/sources.list

26
Điều đó sẽ không bao gồm các repos từ /etc/apt/source.list.d/, IE những kết quả từ # apt-add-repository XXX
ktenney

3
grep -Erh ^deb /etc/apt/sources.list*nên làm thủ thuật.
David

1
grep -Erh '^deb ' /etc/apt/sources.list*để loại trừ các deb-srcdòng.
David

8

Đây không phải là định dạng phù hợp để sao chép một cách mù quáng vào máy khác, nhưng người dùng muốn tìm hiểu xem họ đã thêm kho lưu trữ hay chưa (như tôi đã làm), bạn chỉ có thể làm:

sudo apt update

Khi aptđang cập nhật, nó đưa ra một danh sách các kho lưu trữ mà nó tìm nạp. Điều này có vẻ hiển nhiên, nhưng tôi mới nhận ra các GETurl là gì mà nó phun ra.

Chỉnh sửa:awk Biểu thức dựa trên sau có thể được sử dụng để tạo nguồn.list:

 cat /tmp/apt-update.txt | awk '/http/ { gsub("/", " ", $3); gsub("^\s\*$", "main", $3); printf("deb "); if($4 ~ "^[a-z0-9]$") printf("[arch=" $4 "] "); print($2 " " $3) }' | sort | uniq

Ngoài ra, như các câu trả lời khác cho thấy, bạn có thể chỉ cần cattất cả các nguồn có sẵn như thế này:

cat /etc/apt/sources.list /etc/apt/sources.list.d/*

Vì các repos bị vô hiệu hóa được nhận xét bằng hàm băm, điều này sẽ hoạt động như dự định.


Tại sao các downvote? Ít nhất hãy để lại một bình luận để tôi có thể cải thiện câu trả lời của mình .......
starbeamrainbowlabs

Downvote (bây giờ) với nhận xét: Vui lòng chỉ cho chúng tôi cách nắm bắt đầu ra này và chuyển đổi nó thành câu trả lời cho câu hỏi, tức là mỗi lần chúng tôi làm apt update, làm thế nào để lọc đầu ra / văn bản đó để trích xuất thông tin liên quan đến câu hỏi này?
dardisco

2
Cải thiện nhiều! +1 để sử dụng awktrong lọc.
dardisco

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.