Перерахуйте все програмне забезпечення, встановлене з певного компонента (non-free, contrib)


12

Чи є спосіб перерахувати все non-freeта contribпрограмне забезпечення, встановлене в Debian через apt?

/etc/apt/sources.list полягає в наступному

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

Я додав non-freeі contribроків тому, тому що мені потрібен був невільний драйвер для моєї відеокарти, який тепер був замінений на нову, яка не потребує невільного драйвера. Я хотів би позбутися від невільних матеріалів, але боюся, що, можливо, впродовж років я встановив би інше невільне програмне забезпечення, яке не можу дозволити собі видалити.


Відповіді:


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

Section буде невільним / ... для всього з невільного шляху.

[Примітка] для gcc docs ...

 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.

(Я теж замислювався про це, але не турбував перевірку, поки це не згадали.)


Обидва дали різні результати ( pastebin.com/rAhYHTk8 ). Файли NVIDIA - це драйвер, тому dpkg здається правильним! Отримано. Мені просто цікаво, що там робить gcc-doc.
Олексій

Ресурси NVIDIA вже видалено, apt, ймовірно, перелічив його, оскільки він зберігав .deb або щось подібне. Я просто згадав одне, що я маю з невільного, яке не було зазначено: dpkg -l | grep -i nonfreeрезультати в flashplugin-nonfree. Цікаво, чому це не було перераховано за піддатливістю, і якщо воно насправді перераховує все від невільного.
Олексій

2
Тому що це в contrib :: debian / pool / contrib / f / flashplugin-nonfree ( Section: contrib/web)
Ricky Beam

1
Для обох секцій є один вкладиш dpkg-query -W -f='${Section}\t${Package}\n' | sort | egrep ^contrib\|^non-free
GKFX

Щодо dpkg-query -W -f='${Section}\t${Package}\n': Sectionне відображає компоненти. (Принаймні, це не для мене на Ubuntu 18.04.) У якості прикладу компонент може бути main, contribабо non-free. У той час як розділи речі , як: admin, gnome, utils, або x11.
mpb

6

Існує програма під назвою VRMS(віртуальна Річард М. Сталлман), яка повідомить про все невільне програмне забезпечення у вашій системі в короткому резюме. Його в репо, і ви можете встановити його через apt;-)


2
Варто згадати, що vrmsдодає /etc/cron.monthly. Я був приємно здивований, коли отримав пошту від віртуального Stallman через місяць після встановлення.
Олексій

2

У мене був подібний «заклик» кілька років тому, і я не міг визначити, що інформація про початковий пакет зберігається в системі після завантаження пакета. Я не думаю, що ця інформація доступна dpkg.

Отже, що я закінчив, це встановити чисту віртуальну машину, встановити відповідний /etc/apt/sources.listі встановити весь список, створений:

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

пакети, які не встановлюються (я завантажував лише для того, щоб заощадити час apt-get -d).

Можливо, ви зможете зробити подібне, використовуючи apt-get --root-directory=some_dirпісля тимчасової зміни вашої sources.list, але я не був би впевнений, чи використовує вона поточну базу даних встановлення і просто переміщує пакет туди. ВМ для такого роду експериментів набагато безпечніше. Як правило, у мене є чиста основна установка мого поточного Linux як VM, тому мені потрібно лише клонувати це (не те, що установка Linux на VM займає так багато часу).


Гарне "рішення". Наразі у мене немає місця на диску, але я думаю, що apt спочатку відобразить пакунки, які не були знайдені (значить, не вільні), правда?
Олексій

@ Алекс Так, це правильно. Це начебто не вистачає відповіді. Але підхід Ріккі є кращим, якщо навряд чи трапилось і пакет фактично перемістився з одного репо в інший (і ви не в курсі сучасності або пакет не змінив номер версії).
Тимо

0

Відвідайте Ask Ubuntu . Тут командний рядок:

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
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.