如何在不删除依赖项的情况下删除基于 debian 的系统上的包?

Cau*_*ect 6 aptitude apt dependencies linux-mint

我正在运行 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 文档说:

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

pacman -Rdd 包名

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

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

dpkg -r --force-depends foo

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

Fah*_*tha 16

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

dpkg -r --force-depends foo
Run Code Online (Sandbox Code Playgroud)

用于删除软件包(不删除 conf 文件)。

dpkg -P --force-depends foo
Run Code Online (Sandbox Code Playgroud)

用于包装的吹扫(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 ...
Run Code Online (Sandbox Code Playgroud)

执行这样的操作有时很有用。当然,让系统长时间处于这种损坏/不一致状态是非常不受欢迎的。但是,如果有机会,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) ...
Run Code Online (Sandbox Code Playgroud)