Перечислите все программное обеспечение, установленное из определенного компонента (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лет назад, потому что мне нужен несвободный драйвер для моей видеокарты, который теперь был заменен новым, не требующим несвободного драйвера. Я хотел бы избавиться от несвободных вещей, но боюсь, что мог бы установить другое несвободное программное обеспечение за те годы, которые я не могу позволить себе удалить.

Alex
источник

Ответы:

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

Section будет несвободным / ... для всего от несвободного пути.

[Примечание] для документов 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.

(Я тоже думал об этом, но не удосужился проверить, пока это не было упомянуто.)

Рики Бим
источник
Оба дали разные результаты ( pastebin.com/rAhYHTk8 ). Драйвер NVIDIA - это драйвер, так что dpkg кажется правильным! Upvoted. Мне просто интересно, что там делает gcc-doc.
Алекс
Материал NVIDIA уже был удален, вероятно, он был в списке, потому что он сохранил .deb или что-то в этом роде. Я только что вспомнил одну вещь из несвободной, которой не было в списке: dpkg -l | grep -i nonfreeрезультаты flashplugin-nonfree. Интересно, почему это не было перечислено aptitude и действительно ли оно перечисляет все из несвободных.
Алекс
2
Потому что он находится в contrib :: debian / pool / contrib / f / flashplugin-nonfree ( Section: contrib/web)
Рики Бим
1
dpkg-query -W -f='${Section}\t${Package}\n' | sort | egrep ^contrib\|^non-free
Однострочник
Относительно dpkg-query -W -f='${Section}\t${Package}\n': Sectionне отображаются компоненты. (По крайней мере, это не для меня на Ubuntu 18.04.) В качестве примера компонент может быть main, contribили non-free. В то время как разделы вещи , как: admin, gnome, utils, или x11.
mpb
6

Существует программа под названием VRMS(виртуальная Ричард М. Столлман), которая в кратком отчете сообщит обо всех несвободных программах в вашей системе. Это в репозитории, и вы можете установить его через apt;-)

Geeb
источник
2
Стоит упомянуть, vrmsдобавляет себя /etc/cron.monthly. Я был приятно удивлен, когда через месяц после установки получил письмо от виртуального Столлмана.
Алекс
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 занимает так много времени).

Timo
источник
Хорошее «решение». В настоящее время у меня нет места на диске, но я думаю, что apt сначала отобразит пакеты, которые не были найдены (следовательно, не являются бесплатными), правильно?
Алекс
@ Алекс Да, это правильно. Это как бы отсутствует в ответе. Но подход Рикки лучше, если только не произошло невероятного, и пакет фактически не перемещался с течением времени из одного репо в другое (и вы не обновились, или пакет не изменил номер версии).
Тимо
0

Посетите Спросите 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
}
NoCode
источник