Como posso determinar se um pacote é um meta-pacote na linha de comando, possivelmente via apt-get, aptitude ou apt-cache?
Eu tentei:
apt-cache show texlive-full
apt-cache showpkg texlive-full
mas a única maneira de dizer a este pacote é meta é lendo o campo "en-description".
Existe uma maneira mais automática de fazer isso, que me dará uma resposta sim / não ou, pelo menos, tenha um campo como o "en-description" dedicado a isso?
package-management
metapackages
Ciro Santilli adicionou uma nova foto
fonte
fonte
Respostas:
Não há definição formal de um metapacote. A definição informal é que um metapacote é aquele destinado apenas a ser instalado por suas dependências e não contém nenhum arquivo útil.
Você pode definir um metapacote como um pacote que não contém arquivos. Não há como determinar isso no banco de dados do pacote. Você pode usar o banco de dados de arquivos e verificar se o pacote contém apenas diretórios (muitos desses pacotes contêm alguns diretórios). De fato, a maioria dos metapacotes contém alguns arquivos em
/usr/share/doc/<package name>
: umcopyright
arquivo, um registro de alterações, algumas vezes mais. Aqui está uma aproximação que define um metapacote como contendo apenas arquivos/usr/share/doc/<some directory>
(e não nos subdiretórios) e nos diretórios principais:Outra abordagem é procurar uma etiqueta de pacote com
debtags
. Existem várias tags que são comumente usadas em metapacotes.Outra abordagem é procurar pacotes com um tamanho pequeno. Cada diretório conta como 4 kB, portanto, planeje adequadamente ao escolher um limite (novamente, isso é uma aproximação).
Após reflexão, pergunto-me se você quer dizer pacotes virtuais em vez de metapacotes. Pacotes virtuais, na verdade, não são pacotes, mas nomes de pacotes usados em
Provides:
campos. Você pode listá-los comaptitude search '~v'
. A execuçãoapt-cache show
em um exibe "Não é possível selecionar versões do pacote 'zcav', pois é puramente virtual". A execuçãoaptitude show
lista os pacotes que o fornecem. Uma maneira conveniente de mostrar pacotes virtuais éapt-cache
: imprime uma linha para um pacote não virtual e potencialmente várias linhas (uma para cada provedor) para um pacote virtual - você pode saber se o pacote é virtual, mesmo que exista um único provedor porque o nome do provedor é diferente.fonte
apt-get autoremove
,aptitude (un)markauto
oM
comando na interface interativa aptitude.apt-get install texlive-full
,apt-get purge texlive-full; apt-get autoremove
não removeu todas as dependências instaladas. Li em algum lugar que isso ocorre porque texlive-full era um metapacote e que esse era o comportamento normal de um metapacote, mas talvez isso estivesse errado. por outro lado, o aptitude parecia remover muito bem as dependências instaladas automaticamente.Você pode tentar entrar
que fornecerá uma lista longa e, em seguida, use
grep
para, digamos, mostrar todos os metapacotes relacionados à ciência comIsso retornará uma lista longa ( abreviei -a aqui)
Você pode usar qualquer número de alternativas para a ciência, como
KDE
encontrar todos osKDE
metapacotes.Provavelmente, é o melhor que você pode fazer
apt-cache
, mas deve localizar rapidamente a maioria dos metapacotes que deseja encontrar. Se ele não encontrar exatamente tudo o que você estava procurando, a coisa mais simples é procurar na seção de metapacote emSynaptic
.fonte