Como usar o apt-get para instalar pacotes sem um pacote específico?

6

Por exemplo:

O comando a seguir instalará todos os pacotes que correspondem ao padrão:

  sudo apt-get install k3b-*

Se eu quiser usar essa instrução, mas não quiser instalar um pacote específico com dependências quebradas, como faço isso?

Eu tentei isso, mas não funciona.

sudo apt-get install "$ (apt-cache --no-gerar pkgnames k3b | grep -v extrathemes | tr '\ n' '')":

 sam@/home/sam/code/ros/ai/cram/roslisp_repl$ sudo apt-get install      "$(apt-cache --no-generate pkgnames k3b | grep -v extrathemes | tr '\n' ' ')"
 Reading package lists... Done
 Building dependency tree       
 Reading state information... Done
 E: Unable to locate package k3b-dbg k3b-data k3b 

 sam@/home/sam/code/ros/ai/cram/roslisp_repl$

Obrigado ~

    
por sam 18.09.2011 / 11:34

3 respostas

5

Você pode fazer

list=$(apt-cache --names-only search ^k3b-* | awk '{ print  }' | \
    grep -v bad-pkg)
sudo apt-get install $list
    
por enzotib 18.09.2011 / 11:43
4

Digamos que você não queira instalar o pacote k3b-extrathemes. Pode não haver nenhuma maneira prática de fazer isso, mas listar todos os pacotes, exceto o seguinte: sudo apt-get install k3b-data k3b-dbg .

No entanto, você pode fazer isso com alguma ajuda:

sudo apt-get install $(apt-cache --no-generate pkgnames k3b \
    | grep -v extrathemes | tr '\n' ' ')

Isso não é terrivelmente particular. apt-cache ... retorna o nome dos pacotes, grep -v PACKAGENAME exclui os pacotes e o comando tr substitui novas linhas por espaços.

    
por con-f-use 18.09.2011 / 11:58
1

Eu descobri uma maneira muito mais simples de fazer isso:

sudo aptitude install <package>

Isso usará aptitude em vez de apt-get - que oferece mais opções. Quando você vê algo como o seguinte:

The following NEW packages will be installed:
  ...
0 packages upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
Need to get 130 MB/130 MB of archives. After unpacking 216 MB will be used.
Do you want to continue? [Y/n/?]

Em vez de pressionar 'y', digite o seguinte:

-<package_to_skip>

Isso é um '-' seguido pelo nome do pacote para pular. Então você pode prosseguir com a instalação como por normal.

    
por Nathan Osman 01.12.2011 / 20:36

Tags