Liệt kê tất cả phần mềm được cài đặt từ thành phần cụ thể (không miễn phí, đóng góp)


12

Có cách nào để liệt kê tất cả non-freecontribphần mềm được cài đặt trong Debian aptkhông?

/etc/apt/sources.list là như sau

deb http://ftp.us.debian.org/debian/ wheezy main non-free contrib
deb-src http://ftp.us.debian.org/debian/ wheezy main non-free contrib

deb http://security.debian.org/ wheezy/updates main non-free contrib
deb-src http://security.debian.org/ wheezy/updates main non-free contrib

# wheezy-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ wheezy-updates main
deb-src http://ftp.us.debian.org/debian/ wheezy-updates main

Tôi đã thêm non-freecontribnhiều năm trước vì tôi cần một trình điều khiển không miễn phí cho thẻ video của mình, hiện đã được thay thế bằng một trình điều khiển mới không yêu cầu trình điều khiển không miễn phí. Tôi muốn loại bỏ những thứ không miễn phí, nhưng tôi sợ rằng tôi có thể đã cài đặt phần mềm không miễn phí khác trong nhiều năm mà tôi không đủ khả năng để gỡ cài đặt.


Câu trả lời:


15
  • dpkg-query -W -f='${Section}\t${Package}\n' | grep ^non-free
  • aptitude search '~i ?section(non-free)'

Section sẽ không miễn phí / ... cho mọi thứ từ đường dẫn không miễn phí.

[Lưu ý] cho tài liệu gcc ...

 This documentation is licensed under the terms of the GNU Free
 Documentation License, and contains invariant sections, so it can't be
 part of Debian main.

(Tôi cũng tự hỏi về điều đó, nhưng không buồn kiểm tra cho đến khi nó được đề cập.)


Cả hai đều mang lại kết quả khác nhau ( pastebin.com/rAhYHTk8 ). Các công cụ NVIDIA là trình điều khiển, vì vậy dpkg có vẻ đúng! Nâng cao. Tôi chỉ tự hỏi những gì gcc-doc đang làm ở đó.
Alex

Các công cụ NVIDIA đã bị xóa, apt có thể liệt kê nó vì nó giữ .deb hoặc một cái gì đó. Tôi chỉ nhớ một thứ tôi có từ không miễn phí không được liệt kê: dpkg -l | grep -i nonfreekết quả flashplugin-nonfree. Tôi tự hỏi tại sao điều đó không được liệt kê bởi năng khiếu và nếu nó thực sự liệt kê mọi thứ từ không miễn phí.
Alex

2
Bởi vì nó nằm trong contrib :: debian / pool / contrib / f / flashplugin-nonfree ( Section: contrib/web)
Ricky Beam

1
Một lớp lót cho cả hai phần là dpkg-query -W -f='${Section}\t${Package}\n' | sort | egrep ^contrib\|^non-free
GKFX

Về dpkg-query -W -f='${Section}\t${Package}\n': Sectionkhông hiển thị các thành phần. (Ít nhất, nó không cho tôi trên Ubuntu 18,04.) Một thành phần ví dụ có thể main, contribhoặc non-free. Trong khi phần là những thứ như: admin, gnome, utils, hoặc x11.
mpb

6

Có một chương trình được gọi là VRMS(một Richard M. Stallman ảo) sẽ báo cáo tất cả các phần mềm không miễn phí trên hệ thống của bạn trong một bản tóm tắt ngắn. Nó có trong repo và bạn có thể cài đặt nó qua apt;-)


2
Đó là giá trị đề cập vrmsthêm chính nó /etc/cron.monthly. Tôi đã rất ngạc nhiên khi nhận được thư từ Stallman ảo một tháng sau khi cài đặt.
Alex

2

Tôi đã có một 'sự thôi thúc' tương tự một vài năm trước và không thể xác định rằng thông tin gói ban đầu được lưu giữ trên hệ thống sau khi tải xuống gói. Tôi không nghĩ rằng thông tin này có sẵn cho dpkg.

Vì vậy, những gì tôi đã kết thúc là thiết lập một máy ảo sạch, thiết lập phù hợp /etc/apt/sources.listvà cài đặt toàn bộ danh sách được tạo bởi:

dpkg --get-selections | fgrep -v deinstall | cut -s -f 1

các gói sẽ không cài đặt (tôi chỉ tải xuống để tiết kiệm thời gian apt-get -d).

Bạn có thể có thể làm một điều tương tự bằng cách sử dụng apt-get --root-directory=some_dirsau khi thay đổi tạm thời sources.list, nhưng tôi không chắc liệu điều đó có sử dụng cơ sở dữ liệu cài đặt hiện tại của bạn không và chỉ di chuyển gói ở đó. Một VM cho loại thử nghiệm này an toàn hơn nhiều. Tôi thường có một bản cài đặt cơ bản sạch Linux hiện tại của mình là VM, vì vậy tôi chỉ phải sao chép nó (không phải việc cài đặt Linux trên VM mất nhiều thời gian như vậy).


Đẹp "giải pháp". Hiện tại tôi không có dung lượng đĩa cho nó, nhưng tôi tưởng tượng apt sẽ hiển thị các gói không tìm thấy (do đó không miễn phí), đúng không?
Alex

@Alex Đúng vậy. Đó là loại thiếu từ câu trả lời. Nhưng cách tiếp cận của Ricky tốt hơn trừ khi điều đó không xảy ra và một gói thực sự được chuyển theo thời gian từ repo này sang repo khác (và bạn không cập nhật hoặc gói không thay đổi số phiên bản).
Timo

0

Truy cập Hỏi Ubuntu . Đây là dòng lệnh:

FILTER=non-free TMP_DIR=$(mktemp -d) && {
  dpkg -l | grep ^ii | cut -f 3 -d' ' | cut -f 1 -d : | sort | uniq > ${TMP_DIR}/pkg_installed.list
  cat /var/lib/apt/lists/*_${FILTER}_*Packages | grep "^Package:"  | sort | uniq | cut -d' ' -f2 > ${TMP_DIR}/pkg_filtered.list
  comm -12 ${TMP_DIR}/pkg_installed.list ${TMP_DIR}/pkg_filtered.list
}
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.