Fra*_*isV 118 email ubuntu debian dependencies apt
如何让 apt-get 忽略某些依赖项?例如,我想安装mailx,以便我可以使用它从 cron 脚本/报告生成工具发送电子邮件。但是,安装 mailx 也会安装exim4和一大堆依赖项(我已经安装了 Postfix)我真的不需要,我猜 mailx 也可以没有它。
如何忽略某些依赖项但仍然使用 apt-get 因为它是一个不错的工具?
小智 79
简单易行的解决方案:只需-在每个包之后指定不需要的包。
没有-开关的例子:
root@debian:~# apt-get install bsd-mailx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
exim4-base exim4-config exim4-daemon-light liblockfile-bin liblockfile1
[...]
Run Code Online (Sandbox Code Playgroud)
使用开关避免安装的 示例exim4-base。注意-最后:
root@debian:~# apt-get install bsd-mailx exim4-base-
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package 'exim4-base' is not installed, so not removed
The following extra packages will be installed:
liblockfile-bin liblockfile1 ssmtp
[...]
Run Code Online (Sandbox Code Playgroud)
如您所见,apt-get不再尝试安装exim4-base软件包,也不再尝试安装其各种依赖项(exim4-config等)。
如果你错了,exim4-base毕竟需要这种依赖,你可以apt-get install稍后再用!
Jan*_*sen 67
您可以像这样更改 deb 包的依赖项:
ar x golden-linux.deb将创建 ie 三个文件:debian-binary control.tar.gz data.tar.gz)tar xzf control.tar.gz将创建:postinst postrm preinst prerm md5sums 控件)control(使用文本编辑器)tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums controlar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz顺序很重要!见【注意】)[注意]: dpkg 如果必须搜索数据部分的结束位置,将无法快速读取包的元数据!
小智 46
使用该--ignore-depends 选项安装软件包后,去编辑该/var/lib/dpkg/status文件,并删除您认为不需要的任何依赖项。只是要非常小心。为了一个dep。将必需的,但更可能以BE需要
Bar*_*Vos 29
您可以--nodeps使用apt-get.
或者下载软件包并使用dpkg选项安装它--ignore-depends。
例如,如果你想安装foo没有依赖的包bar:
dpkg --ignore-depends=bar -i foo_1.2.3_amd64.deb
Run Code Online (Sandbox Code Playgroud)
ste*_*tew 17
由于您从源代码安装了 postfix,因此您需要安装一个“虚拟”包,以满足 mailx(或 bsd-mailx)的 mail-transport-agent 依赖项。debian 中的“equivs”包存在来创建这样一个虚拟包,你可以安装它来告诉 dpkg“这个依赖是满足的”
告诉 dpkg 简单地忽略依赖项不是一个好的解决方案的原因是,您只是告诉 dpkg/apt 在单个事务中忽略它,您不能告诉它永远忽略依赖项。每次使用 apt 时,它都会检查所有包的依赖关系
小智 15
手动调整依赖项的另一种方法是:
apt-get download yourpackage
dpkg-deb -x yourpackage.deb PackageFolder
dpkg-deb --control yourpackage.deb PackageFolder/DEBIAN
vim PackageFolder/DEBIAN/control
dpkg -b PackageFolder yourpackage2.deb
apt-get install ./yourpackage2.deb
Run Code Online (Sandbox Code Playgroud)
小智 11
您可以使用 apt-get 下载该软件包,然后使用 dpkg 安装它,手动列出您希望忽略的依赖项。
例如,如果我想下载 mypackage 但它依赖于 libperl5.14 而我不想安装 libperl5.14 因为我有一个不同的版本我可以忽略这个依赖如下:
apt-get download mypackage
dpkg -i --ignore-depends=libperl5.14 mypackage.deb
Run Code Online (Sandbox Code Playgroud)
小智 7
我一直在运行 Xen 的 Ubuntu 12.04 服务器上寻找此选项。在我的域中,我使用 -virtual 内核,并且 apt 持续尝试在每次内核包升级时安装 grub。但是,在使用 p[yv]grub 时,domU 中不需要 Grub。
我也一直在寻找 apt-get 的 -nodeps 选项,但它不起作用,所以最终在每次内核升级后卸载/清除 grub*。
毕竟,真正阅读手册页有时会有所帮助 - 事实证明,12.04 上的类似 apt-get 选项似乎是 --no-install-recommends,它在这种情况下实际上有效,因为 grub 在包信息(我猜所以它不是“真正的”依赖?)。
我在这里添加这个是因为在我的情况下它解决了一个类似的问题,并且还没有提到“--no-install-recommends”的提示。