如何在基于 Debian 的系统上删除软件包而不删除依赖项?

如何在基于 Debian 的系统上删除软件包而不删除依赖项?

我正在运行 Linux Mint,一个基于 Debian 的发行版,并且我想删除一个包而不删除其反向依赖项;或者我想以删除一个包为目标,而不删除其他任何东西。

例如:我想删除 PACKAGE_A,但是 (PACKAGE_X, PACKAGE_Y, PACKAGE_Z) 依赖于 PACKAGE_A,并且会自动删除。我需要保留 X、Y、Z 安装并仅删除 A。不幸的是,如果我重新安装 X、Y、Z,它也会重新安装 PACKAGE_A。

对于我想要删除的特定包,大约有 20 个依赖项,其中一些依赖项似乎对于正确的 GUI 功能至关重要。

在 Arch Linux 上,吃豆人文档说:

要删除另一个包所需的包,而不删除依赖包:

pacman -Rdd 包名

由于我的基于 Debian 的发行版不使用 pacman,我如何使用 apt-get、Aptitude 或 Mint Software Manager 实现相同的功能?

编辑:Faheem Mitha 的答案正是我想要的。

dpkg -r --force-depends foo

这删除了有问题的软件包,但没有删除 apt-get 和 Mint 软件经理抱怨的依赖项。谢谢你!

答案1

如果我理解正确的话,您想要删除其他包依赖的包,而不删除其他包。请记住,这可能不是一个好主意,您可以这样做。

dpkg -r --force-depends foo

用于删除一个包(conf文件不会被删除)。

dpkg -P --force-depends foo

用于清除包(conf 文件已删除)。

用法示例:

root@orwell:/home/faheem# dpkg -P --force-depends gcc-4.6-base:amd64
dpkg: gcc-4.6-base:amd64: dependency problems, but removing anyway as you requested:
 gcc-4.6 depends on gcc-4.6-base (= 4.6.3-14).
 libstdc++6-4.6-dev depends on gcc-4.6-base (= 4.6.3-14).
 g++-4.6 depends on gcc-4.6-base (= 4.6.3-14).
 cpp-4.6 depends on gcc-4.6-base (= 4.6.3-14).

(Reading database ... 454279 files and directories currently installed.)
Removing gcc-4.6-base:amd64 ...
Processing triggers for ccache ...
Updating symlinks in /usr/lib/ccache ...

执行此类操作有时很有用。当然,让系统长时间处于这种损坏/不一致的状态是非常不受欢迎的。然而,只要有机会,apt 将恢复其宇宙的平衡,如下所示:

root@orwell:/home/faheem# apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  libavdevice53 libavfilter2 libglade2-dev python-cairo-dbg python-cairo-dev python-gnupginterface python-gobject-2-dev
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  gcc-4.6-base
The following NEW packages will be installed:
  gcc-4.6-base
0 upgraded, 1 newly installed, 0 to remove and 62 not upgraded.
Need to get 142 kB of archives.
After this operation, 159 kB of additional disk space will be used.
Do you want to continue [Y/n]? 
Get:1 http://debian.lcs.mit.edu/debian/ wheezy/main gcc-4.6-base amd64 4.6.3-14 [142 kB]
Fetched 142 kB in 7s (19.1 kB/s)                   
Selecting previously unselected package gcc-4.6-base:amd64.
(Reading database ... 454274 files and directories currently installed.)
Unpacking gcc-4.6-base:amd64 (from .../gcc-4.6-base_4.6.3-14_amd64.deb) ...
Processing triggers for ccache ...
Updating symlinks in /usr/lib/ccache ...
Setting up gcc-4.6-base:amd64 (4.6.3-14) ...

相关内容