为什么 expect 包有这么多依赖项?

为什么 expect 包有这么多依赖项?

我希望有人比我聪明,能帮我解决这个问题。看来我的 apt 数据库出了点问题。

我正在运行 Ubuntu 16.04.2 LTS。我从 ossec.wazuh.com 下载了 ossec-hids_2.8.3-4xenial_amd64.deb,当我尝试安装它时,我得到:

# dpkg -i ossec-hids_2.8.3-4xenial_amd64.deb 
Selecting previously unselected package ossec-hids.
(Reading database ... 162578 files and directories currently installed.)
Preparing to unpack ossec-hids_2.8.3-4xenial_amd64.deb ...
Unpacking ossec-hids (2.8.3-4xenial) ...
dpkg: dependency problems prevent configuration of ossec-hids:
 ossec-hids depends on expect; however:
  Package expect is not installed.

dpkg: error processing package ossec-hids (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 ossec-hids

当我去安装 expect 时,我得到:

# apt-get install expect
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libfontenc1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libice6 libllvm3.8 libpciaccess0 libsm6 libtcl8.6
  libtk8.6 libtxc-dxtn-s2tc0 libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-shape0 libxcb-sync1 libxcomposite1 libxdamage1 libxfixes3
  libxft2 libxi6 libxinerama1 libxmu6 libxrandr2 libxrender1 libxshmfence1 libxss1 libxt6 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 tcl-expect tcl8.6 tk8.6 x11-common
  x11-utils xbitmaps xterm
Suggested packages:
  tcl-tclreadline mesa-utils xfonts-cyrillic
The following NEW packages will be installed:
  expect libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libfontenc1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libice6 libllvm3.8 libpciaccess0 libsm6
  libtcl8.6 libtk8.6 libtxc-dxtn-s2tc0 libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-shape0 libxcb-sync1 libxcomposite1 libxdamage1
  libxfixes3 libxft2 libxi6 libxinerama1 libxmu6 libxrandr2 libxrender1 libxshmfence1 libxss1 libxt6 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 tcl-expect tcl8.6 tk8.6
  x11-common x11-utils xbitmaps xterm
0 upgraded, 47 newly installed, 0 to remove and 41 not upgraded.
Need to get 18.3 MB of archives.
After this operation, 168 MB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.

这不可能是对的,对吧?expect 包不应该依赖图形库。根据https://packages.ubuntu.com/xenial/expect,唯一的依赖项是 libc6、libtcl8.6 和 tcl-expect。我检查了这三个依赖项及其依赖项,但没有找到任何接近该详尽列表的内容。

我已尝试 apt-get autoremove 和 apt-get -f install,但它们报告无事可做。

任何帮助都将不胜感激。

答案1

总体而言,Ubuntu 的设计理念是“用户友好”,并且 Ubuntu 中的任何软件包通常都比其他发行版具有更多的依赖关系。这对于大多数用户来说都非常好,因为他们安装软件包后,所有附加功能都已安装完毕。

为了进行更细粒度的控制,请不要安装额外的包

sudo apt-get install --no-install-recommends package_list

如果要将其设置为默认行为,请参阅如何不安装推荐和建议的软件包?

此行为的唯一潜在缺点是,您稍后可能需要确定要安装的其他软件包。对于像您这样的高级用户来说,这是完全可以接受的。

如果这仍然需要安装比您想要的更多的东西,您可以使用带有--nodeps标志的 apt-get 安装,或者下载 .deb 并使用带有标志的 dpkg 安装--ignore-depends。这样做有点违背了 apt/apt-get 的目的,此时您可能希望查看 Slackware、arch linux 或 gentoo。gentoo 需要花费大量时间,但可以让您非常精细地控制已安装或未安装的内容。arch 类似,但没有所有的编译。Slackware 很容易,在我看来“就是有效”

相关内容