Как использовать apt-get для установки пакетов без указания пакета?

Например:

Следующая команда установит все пакеты, соответствующие шаблону:

sudo apt-get install k3b-* 

Если я хочу использовать эту инструкцию, но не хочу устанавливать один конкретный пакет со сломанными зависимостями, как мне это сделать?

Я пробовал это, но не работал.

sudo apt-get install "$ (apt-cache –no-generate 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$ 

Спасибо ~

Ты можешь сделать

 list=$(apt-cache --names-only search ^k3b-* | awk '{ print $1 }' | \ grep -v bad-pkg) sudo apt-get install $list 

Предположим, вы не хотите устанавливать пакет k3b-extrathemes. Не может быть практического способа сделать это, но перечислять все пакеты, кроме одного: sudo apt-get install k3b-data k3b-dbg .

Однако вы можете сделать это с некоторой помощью:

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

Это не страшно. apt-cache ... возвращает имя пакетов, grep -v PACKAGENAME исключает пакеты, а команда tr заменяет новые строки пробелами.

Я обнаружил гораздо более простой способ сделать это:

 sudo aptitude install <package> 

Это будет использовать aptitude вместо apt-get что даст вам больше возможностей. Когда вы увидите что-то вроде следующего:

 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/?] 

Вместо нажатия «y» введите следующее:

 -<package_to_skip> 

Это «-», за которым следует имя пакета для пропусков. Затем вы можете продолжить установку в соответствии с нормальным.