如何使用 apt-get 安装没有指定包的软件包?

如何使用 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$

谢谢〜

答案1

你可以做

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

答案2

假设您不想安装 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命令用空格替换新行。

答案3

我发现了一种更简单的方法:

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>

这是一个“-”,后面跟着要跳过的包的名称。然后您就可以正常继续安装了。

答案4

您可以使用 apt 轻松地完成此操作;如果您想安装foo但不想bar,请执行以下操作:

sudo apt install foo bar-

即在 后面附加一个连字符bar。摘自 apt-get 手册页:

如果在软件包名称后附加连字符(中间没有空格),则已安装的已识别软件包将被删除。同样,可以使用加号来指定要安装的软件包。

这显然适用于将要安装的软件包以及已经安装的软件包。

相关内容