在Linux系统中,当看到消息 “The following packages have been kept back:” 后面跟着某些软件包的名字,这通常意味着这些软件包在尝试执行常规升级(如使用apt-get upgrade
或apt upgrade
)时并没有被升级。
以python3-update-manager
这一特定的软件包为例,这种情况可能由以下几种原因引起:
-
依赖关系变化:新版本的软件包可能引入了新的依赖关系,或者改变了与其他软件包的依赖关系。如果这些依赖关系无法在当前系统中得到满足,或者更新会导致其他软件包被删除或降级,包管理器可能会保留该软件包以避免潜在的问题。
-
升级策略:
apt-get upgrade
命令不会安装新的软件包或者删除已存在的软件包,仅仅是升级已安装的软件包。如果软件包的更新需要新的软件包或者移除现有的软件包,它会被保留。相对地,apt full-upgrade
或apt-get dist-upgrade
命令在升级时会考虑依赖关系的变化,从而可能会安装新的软件包或删除现有的软件包以满足依赖关系。 -
软件源/仓库问题:有时,软件包被保留是因为软件源中的信息不完整或者不同步。如果一些依赖的包还没准备好或者版本不匹配,包管理器可能不会升级那些包以避免破坏系统。
解决方法
如果遇到软件包被保留的情况,可以尝试以下方法来解决:
-
运行全面升级:使用以下命令尝试进行完整升级,它会考虑依赖关系的变化,有可能解决问题。
sudo apt full-upgrade
或者
sudo apt-get dist-upgrade
-
查看依赖关系:检查保留软件包的依赖关系,了解为什么这个包没有被升级。可以使用以下命令查看包信息:
apt-cache show python3-update-manager
-
更新软件源并重试:确保软件源列表是最新的,运行以下命令来更新软件源列表和软件包:
sudo apt update && sudo apt upgrade
-
手动安装:直接尝试安装或者升级被保留的包:
sudo apt install python3-update-manager
在执行任何操作之前,确保数据已经备份,特别是如果打算执行full-upgrade
或dist-upgrade
,因为这些操作可能会导致较大变动。