Daftar semua perangkat lunak yang diinstal dari komponen tertentu (tidak bebas, contrib)

12

Apakah ada cara untuk mendaftar semua non-freedan contribperangkat lunak yang diinstal di Debian via apt?

/etc/apt/sources.list adalah sebagai berikut

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

Saya menambahkan non-freedan contribbertahun - tahun yang lalu karena saya memerlukan driver tidak-bebas untuk kartu video saya, yang sekarang telah diganti dengan yang baru yang tidak memerlukan driver tidak-bebas. Saya ingin menyingkirkan hal-hal yang tidak bebas, tetapi saya khawatir saya mungkin telah menginstal perangkat lunak tidak-bebas lainnya selama bertahun-tahun yang tidak mampu saya hapus.

Alex
sumber

Jawaban:

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

Section akan menjadi tidak bebas / ... untuk semuanya dari jalur yang tidak bebas.

[Catatan] untuk dokumen 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.

(Aku juga bertanya-tanya tentang hal itu, tetapi tidak repot memeriksa sampai disebutkan.)

Ricky Beam
sumber
Keduanya menghasilkan hasil yang berbeda ( pastebin.com/rAhYHTk8 ). NVIDIA adalah drivernya, jadi dpkg sepertinya benar! Terpilih. Saya hanya ingin tahu apa yang dilakukan gcc-doc di sana.
Alex
Barang-barang NVIDIA sudah dihapus, mungkin mungkin terdaftar karena menyimpan. Deb atau sesuatu. Saya baru ingat satu hal yang saya dapatkan dari non-gratis yang tidak terdaftar: dpkg -l | grep -i nonfreemenghasilkan flashplugin-nonfree. Saya bertanya-tanya mengapa itu tidak terdaftar oleh aptitude dan jika itu benar-benar mendaftar semuanya dari non-gratis.
Alex
2
Karena itu dalam contrib :: debian / pool / contrib / f / flashplugin-nonfree ( Section: contrib/web)
Ricky Beam
1
Satu dpkg-query -W -f='${Section}\t${Package}\n' | sort | egrep ^contrib\|^non-free
kalimat
Mengenai dpkg-query -W -f='${Section}\t${Package}\n': Sectiontidak menampilkan komponen. (Setidaknya, tidak untuk saya pada Ubuntu 18.04.) Komponen Contohnya mungkin main, contribatau non-free. Sedangkan bagian hal-hal seperti: admin, gnome, utils, atau x11.
mpb
6

Ada sebuah program yang disebut VRMS(Richard M. Stallman virtual) yang akan melaporkan semua perangkat lunak tidak bebas pada sistem Anda dalam ringkasan singkat. Ada dalam repo dan Anda dapat menginstalnya melalui apt;-)

Geeb
sumber
2
Perlu disebutkan vrmsmenambahkan sendiri /etc/cron.monthly. Saya terkejut ketika saya mendapat email dari Stallman virtual sebulan setelah instalasi.
Alex
2

Saya memiliki 'dorongan' serupa beberapa tahun yang lalu dan tidak dapat menentukan bahwa informasi paket asli disimpan di sistem setelah mengunduh paket. Saya rasa informasi ini tidak tersedia untuk dpkg.

Jadi yang saya akhirnya adalah menyiapkan mesin virtual yang bersih, mengatur yang sesuai /etc/apt/sources.listdan menginstal seluruh daftar yang dihasilkan oleh:

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

paket yang tidak mau diinstal (saya hanya mengunduh untuk menghemat waktu apt-get -d).

Anda mungkin dapat melakukan hal serupa menggunakan apt-get --root-directory=some_dirsetelah mengubah sementara Anda sources.list, tetapi saya tidak akan yakin apakah itu menggunakan database instal Anda saat ini dan hanya memindahkan paket di sana. VM untuk eksperimen semacam ini jauh lebih aman. Saya biasanya memiliki instalasi dasar bersih dari Linux saya saat ini sebagai VM, jadi saya hanya perlu mengkloning itu (bukan menginstal Linux pada VM membutuhkan waktu lama).

Timo
sumber
"Solusi" yang bagus. Saat ini saya tidak memiliki ruang disk untuk itu, tapi saya kira apt pertama akan menampilkan paket-paket yang tidak ditemukan (karenanya tidak bebas), benar?
Alex
@ Alex Ya itu benar. Itu agak hilang dari jawabannya. Tetapi pendekatan Ricky lebih baik kecuali yang tidak mungkin terjadi dan sebuah paket benar-benar berpindah dari satu repo ke repo yang lain (dan Anda tidak mutakhir atau paket tidak mengubah nomor versi).
Timo
0

Kunjungi Tanya Ubuntu . Di sini baris perintah:

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
}
NoCode
sumber