Existe um comando para atualizar um pacote e todas as suas dependências sem atualizar todos os pacotes?

4

Nós temos um meta-pacote, similar ao ubuntu-desktop, que requer um monte de dependências para executar algum código interno, ainda não empacotado. Atualmente, estamos atualizando o meta-pacote para que ele requeira > = a versão atual toda vez que a reempacotamos para que suas dependências sejam atualizadas quando ela for instalada. No entanto, se houvesse uma maneira de atualizar um pacote e todas as suas dependências sem atualizar todos os pacotes, isso seria muito mais simples. Isso é possível?

    
por nnutter 22.08.2012 / 23:20

2 respostas

3

Não diretamente, tanto quanto eu sei. Você pode usar um pequeno fragmento de shell para gerar a lista de dependências do pacote e atualizá-las (supondo que você não esteja interessado em dependências recursivas):

apt-get install our-metapackage $(dpkg-query -Wf '${Depends}' our-metapackage | sed 's/ *\(([^()]*)\)\? *[,|] */\n/g')

Uma abordagem alternativa seria fornecer seus pacotes através de um repositório com uma origem única. Escreva um arquivo de preferências do APT que especifique apenas seu repositório como tendo uma prioridade normal e todo o resto como tendo uma prioridade muito baixa para ser instalado automaticamente. (Veja APT fixando no manual do APT para explicações .) Eu não entrarei em detalhes sobre como fazer o repositório (isso seria material para uma questão separada, que pode bem já existir). Para especificar que os pacotes do seu repositório são atualizados e outros não, grave o seguinte arquivo como /etc/apt/preferences.nnutter :

Package: *
Pin: release o=nnutter
Pin-Priority: 500

Package: *
Pin-Prority: 100

500 é a prioridade normal. 100 faz com que os pacotes não sejam atualizados, embora o pacote seja instalado se necessário por dependências. Execute apt-get upgrade ou apt-get dist-upgrade com este arquivo de preferências do APT quando você quiser apenas atualizar pacotes do repositório nnutter:

apt-get -o Dir::Etc::Preferences=/etc/apt/preferences.nnutter -o Dir::Etc::PreferencesParts=/etc/apt/preferences.nnutter.d upgrade
    
por Gilles 23.08.2012 / 02:18
0

Você pode usar o comando wajig que pode ser usado para colocar alguns pacotes em espera ao atualizar

apenas digite:

sudo wajig hold SomePackage

sudo wajig unhold 

verifique a página do manual para mais informações

    
por Suhaib 23.08.2012 / 02:51