identifica pacotes e dependências

2

Eu tenho uma lista de pacotes instalados via apt e gostaria de eliminar todos os pacotes que são dependências de outro pacote já nessa lista:

link

esses são mais de 400 pacotes, mas a maioria deles está instalada devido a alguns outros nessa lista.

Como posso diminuir essa lista e manter os principais programas interessantes da lista?

De alguma forma eu tenho que usar isso: Como encontrar os pacotes que dependem de um determinado pacote no apt?

Ou existe uma maneira mais fácil de distinguir entre programas interessantes e pequenos pacotes auxiliares instalados com os programas principais?

    
por rubo77 11.11.2014 / 00:02

3 respostas

1

O código a seguir imprime a lista de pacotes dos quais alguns pacotes na lista $package_name dependem. Você pode passar a entrada de dpkg -s para usar dados da lista de pacotes instalados ou de apt-cache show para usar os dados da lista de pacotes disponíveis. Este código pula todas as dependências-ou ( PACKAGE1 | PACKAGE2 ), porque determinar qual delas será mais complicado e provavelmente não faz muita diferença na prática.

dpkg -s $package_names | awk -F '[:,] *' '
    $1=="Depends" || $1=="Recommends" {
        for (i=2; i<=NF; i++) {
            if ($i ~ /\|/) continue;
            sub(/ .*/, "", $i);
            print $i
        }
    }'

Se você quiser filtrar um arquivo Packages , poderá usar o seguinte snippet do awk:

<Packages awk -v RS= -v packages="$package_names" '
    BEGIN {split(packages, pa)}
    $2 in pa
' | awk -F '[:,] *' '…'

Agora, supondo que você tenha um arquivo de texto contendo uma lista de pacotes, você pode remover pacotes que são uma dependência de outro pacote como este:

comm -23 <(sort packages.txt) <(apt-cache show $(cat packages.txt) |
                                awk -F '[:,] *' ' '…' |
                                sort)

Isso gera os pacotes que estão na lista de entrada, mas não são encontrados como dependências.

    
por 11.11.2014 / 04:09
0

apt-get bem aptitude rastreiam quais pacotes foram instalados automaticamente por meio de dependências. Pelo menos no aptitude você pode listar todos os pacotes não instalados via dependências com aptitude search '!~M' .

Infelizmente, isso geralmente não conta para pacotes instalados no momento da instalação do sistema. Além disso, apt-get install remove o sinalizador "instalado automaticamente" para qualquer pacote que você passar como parâmetro para ele, pois acha que você deseja que o pacote seja instalado explicitamente, mesmo que você deseje apenas atualizá-lo dessa maneira.

Veja meu blog postando sobre encontrar bibliotecas não marcadas como instaladas automaticamente com o aptitude para detalhes sobre como descobrir em quais pacotes o sinalizador "instalado automaticamente" está faltando.

    
por 10.12.2014 / 00:17
0

Você pode usar apt-cache depends package (para dependências) ou apt-cache rdepends package (para dependências reversas).

    
por 19.08.2015 / 15:51