如果Linux软件包常规升级失败——以python3-update-manager为例

a penguin sticker on top of a blue ice cube

在Linux系统中,当看到消息 “The following packages have been kept back:” 后面跟着某些软件包的名字,这通常意味着这些软件包在尝试执行常规升级(如使用apt-get upgradeapt upgrade)时并没有被升级。

python3-update-manager这一特定的软件包为例,这种情况可能由以下几种原因引起:

  1. 依赖关系变化:新版本的软件包可能引入了新的依赖关系,或者改变了与其他软件包的依赖关系。如果这些依赖关系无法在当前系统中得到满足,或者更新会导致其他软件包被删除或降级,包管理器可能会保留该软件包以避免潜在的问题。

  2. 升级策略apt-get upgrade 命令不会安装新的软件包或者删除已存在的软件包,仅仅是升级已安装的软件包。如果软件包的更新需要新的软件包或者移除现有的软件包,它会被保留。相对地,apt full-upgradeapt-get dist-upgrade 命令在升级时会考虑依赖关系的变化,从而可能会安装新的软件包或删除现有的软件包以满足依赖关系。

  3. 软件源/仓库问题:有时,软件包被保留是因为软件源中的信息不完整或者不同步。如果一些依赖的包还没准备好或者版本不匹配,包管理器可能不会升级那些包以避免破坏系统。

解决方法

如果遇到软件包被保留的情况,可以尝试以下方法来解决:

  1. 运行全面升级:使用以下命令尝试进行完整升级,它会考虑依赖关系的变化,有可能解决问题。

    sudo apt full-upgrade
    

    或者

    sudo apt-get dist-upgrade
    
  2. 查看依赖关系:检查保留软件包的依赖关系,了解为什么这个包没有被升级。可以使用以下命令查看包信息:

    apt-cache show python3-update-manager
    
  3. 更新软件源并重试:确保软件源列表是最新的,运行以下命令来更新软件源列表和软件包:

    sudo apt update && sudo apt upgrade
    
  4. 手动安装:直接尝试安装或者升级被保留的包:

    sudo apt install python3-update-manager
    

在执行任何操作之前,确保数据已经备份,特别是如果打算执行full-upgradedist-upgrade,因为这些操作可能会导致较大变动。

Discover more from 山月

Subscribe now to keep reading and get access to the full archive.

Continue reading