我可以举一个具体的例子,但我确实认为这是一个常见的过程,只是不明白为什么要这样做。如果我应该在发生这种情况时举一个具体的例子,请发表评论。
编辑:
对于特定示例:我尝试删除apache2
并尝试升级php5-cgi
,问题是history.log
in/var/log/apt/
未保存此无效尝试。它没有工作,因为apt-get
无法升级,因为没有互联网连接。
记录的删除工作尝试的第一部分apache2
如下:
Log started: 2015-01-24 12:32:00
Selecting previously unselected package php5-cgi.^M
(Reading database ... ^M(Reading database ... 5%^M(Reading database ... 10%^M(Reading database ... 15%^M(Reading database ... 20%^M(Reading database ... 25%^M(Reading database ... 30%^M(Reading database ... 35%^M(Reading database ... 40%^M(Reading database ... 45%^M(Reading database ... 50%^M(Reading database ... 55%^M(Reading database ... 60%^M(Reading database ... 65%^M(Reading database ... 70%^M(Reading database ... 75%^M(Reading database ... 80%^M(Reading database ... 85%^M(Reading database ... 90%^M(Reading database ... 95%^M(Reading database ... 100%^M(Reading database ... 251982 files and directories currently installed.)^M
Preparing to unpack .../php5-cgi_5.5.9+dfsg-1ubuntu4.5_amd64.deb ...^M
Unpacking php5-cgi (5.5.9+dfsg-1ubuntu4.5) ...^M
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...^M
dpkg: libapache2-mod-php5: dependency problems, but removing anyway as you requested:^M
php5 depends on libapache2-mod-php5 (>= 5.5.9+dfsg-1ubuntu4.5) | libapache2-mod-php5filter (>= 5.5.9+dfsg-1ubuntu4.5) | php5-cgi (>= 5.5.9+dfsg-1ubuntu4.5) | php5-fpm (>= 5.5.9+dfsg-1ubuntu4.5); however:^M
Package libapache2-mod-php5 is to be removed.^M
Package libapache2-mod-php5filter is not installed.^M
Package php5-cgi is not configured yet.^M
Package php5-fpm is not installed.
Run Code Online (Sandbox Code Playgroud)
所以,重申这个问题:
通过 删除软件包时apt-get remove
,为什么您必须(有时)在此过程中升级其他软件包?
AFAIK,这可能会解决依赖关系,例如,如果已安装的软件包依赖于A | B
,您尝试删除B
,并且A
尚未安装或安装的版本太低(在版本依赖的情况下)。我已经看到了这样的事情。
笔记。在特定情况下,如果您想知道为什么要在删除 package 时apt-get
升级某些packageU
package packageR
,您可以尝试以下选项--no-upgrade
:
apt-get remove --no-upgrade packageR
Run Code Online (Sandbox Code Playgroud)
并查看您收到什么样的错误消息(通常是不满意的依赖项)。或者,您可以执行以下操作:
apt-get install packageR- packageU=current_version
Run Code Online (Sandbox Code Playgroud)
并查看错误信息(后面的连字符packageR
表示要求删除该包,与当前版本相等packageU
表示不希望升级packageU
),即未满足的依赖。如果您没有收到错误消息并且packageR
可以在不升级的情况下将其删除packageU
,这可能意味着依赖项解析中存在错误(在某些情况下已知存在错误)。