Listar todos os softwares instalados a partir de um componente específico (não livre, contribuição)


12

Existe uma maneira para listar todos non-freee contribsoftware instalado no Debian via apt?

/etc/apt/sources.list é o seguinte

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

Eu adicionei non-freee contribanos atrás porque precisava de um driver não livre para minha placa de vídeo, que agora foi substituída por uma nova que não requer um driver não livre. Gostaria de me livrar das coisas não gratuitas, mas receio que possa ter instalado outro software não livre ao longo dos anos que não posso desinstalar.


Respostas:


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

Section será não livre / ... para tudo, desde o caminho não livre.

[Nota] para documentos do 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.

(Eu me perguntava sobre isso também, mas não me incomodei em verificar até que fosse mencionado.)


Ambos produziram resultados diferentes ( pastebin.com/rAhYHTk8 ). O material da NVIDIA é o driver, então o dpkg parece certo! Votado. Eu apenas me pergunto o que o gcc-doc está fazendo lá.
Alex

O material da NVIDIA já foi removido, provavelmente o listou porque mantinha o .deb ou algo assim. Acabei de me lembrar de uma coisa que tenho de não-livre que não estava listada: dpkg -l | grep -i nonfreeresulta em flashplugin-nonfree. Eu me pergunto por que isso não foi listado pelo aptitude e se está realmente listando tudo, desde não-livre.
Alex

2
Porque está em contrib :: debian / piscina / contrib / f / flashplugin-nonfree ( Section: contrib/web)
Ricky feixe

1
Um one-liner para as duas seções é dpkg-query -W -f='${Section}\t${Package}\n' | sort | egrep ^contrib\|^non-free
GKFX 12/07/2015

Em relação dpkg-query -W -f='${Section}\t${Package}\n': Sectionnão exibe os componentes. (Pelo menos, não faz por mim no Ubuntu 18.04.) Um componente exemplo pode ser main, contribou non-free. Considerando seções são coisas como: admin, gnome, utils, ou x11.
mpb

6

Existe um programa chamado VRMS(um Richard M. Stallman virtual) que relatará todo o software não livre do seu sistema em um breve resumo. Está nos repositórios e você pode instalá-lo via apt;-)


2
Vale a pena mencionar vrmsacrescenta-se a /etc/cron.monthly. Fiquei agradavelmente surpreendido quando recebi um e-mail do virtual Stallman um mês após a instalação.
877 Alex

2

Eu tinha uma "necessidade" semelhante há alguns anos e não consegui determinar se as informações do pacote original são mantidas no sistema após o download do pacote. Não acho que essa informação esteja disponível para dpkg.

Então, o que acabei foi configurar uma máquina virtual limpa, configurar o apropriado /etc/apt/sources.liste instalar a lista inteira gerada por:

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

os pacotes que não seriam instalados (fiz o download apenas para economizar tempo apt-get -d).

Você pode fazer uma coisa semelhante usando apt-get --root-directory=some_dirdepois de alterar temporariamente o seu sources.list, mas não tenho certeza se isso usa seu banco de dados de instalação atual e apenas move o pacote para lá. Uma VM para esse tipo de experiência é muito mais segura. Normalmente, tenho uma instalação básica limpa do meu Linux atual como VM, então só preciso clonar isso (não que a instalação do Linux em uma VM demore tanto).


Ótima "solução". Atualmente, não tenho espaço em disco para isso, mas imagino que o apt exibirá primeiro os pacotes que não foram encontrados (portanto, não são livres), correto?
Alex

@ Alex Sim, isso está correto. Isso está meio que faltando na resposta. Mas a abordagem de Ricky é melhor, a menos que o improvável tenha acontecido e um pacote realmente tenha se movido ao longo do tempo de um repositório para outro (e você não está atualizado ou o pacote não alterou o número da versão).
Timo

0

Visite Ask Ubuntu . Aqui a linha de comando:

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
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.