Pixelbook 安装 r-base 依赖项时出现保留损坏的软件包错误

Pixelbook 安装 r-base 依赖项时出现保留损坏的软件包错误

我以为 Pixelbook 附带的 Linux 测试版是 Ubuntu,所以在终端中输入了一些错误,我无法再追溯。现在,当我尝试安装 R 时,我遇到了依赖项错误。

sudo apt install r-base

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 r-base : Depends: r-base-core (>= 3.5.3-1xenial) but it is not going to be installed
          Depends: r-recommended (= 3.5.3-1xenial) but it is not going to be installed
          Recommends: r-base-html but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

这是输出

apt policy r-recommended

-recommended:
  Installed: (none)
  Candidate: 3.5.3-1xenial
  Version table:
     3.5.3-1xenial 500
        500 https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/ Packages
     3.5.3-1~stretchcran.0 500
        500 https://cloud.r-project.org/bin/linux/debian stretch-cran35/ Packages
     3.5.2-1xenial 500
        500 https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/ Packages
     3.5.2-1~stretchcran.0 500
        500 https://cloud.r-project.org/bin/linux/debian stretch-cran35/ Packages
     3.5.1-2xenial 500
        500 https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/ Packages
     3.5.1-1xenial 500
        500 https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/ Packages
     3.5.0-1xenial 500
        500 https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/ Packages
     3.3.3-1 500
        500 https://deb.debian.org/debian stretch/main amd64 Packages

根据我的研究,我认为这是由于尝试使用不同的方法安装多个版本的 R 造成的,但我不知道如何修复它,因为我的 pixelbook 上没有 Linux 界面,只有终端。我尝试删除所有 r-base、r-core 依赖项,但无济于事。有人可以帮忙吗?

答案1

这些是一些快速简便的修复you have held broken packages错误的方法。

  • 打开 sources.list 文件/etc/apt/sources.list,检查是否存在与您当前使用的版本不同的软件源。如果您在 sources.list 中发现任何不正确的版本行,请使用 打开 sources.list 文件,sudoedit /etc/apt/sources.list在 sources.list 中用一个字符注释掉不正确的行#,保存 sources.list 文件,然后运行sudo apt update以更新可用软件包列表。

  • 选择修复损坏的软件包Synaptic 包管理器中的选项。运行以下命令安装 Synaptic。

    sudo apt update  
    sudo apt upgrade   
    sudo apt install synaptic  
    

    打开 Synaptic 并在 Synaptic 中选择编辑->修复损坏的软件包然后重复编辑->修复损坏的软件包第二次。

    在 Synaptic 的左侧窗格中单击自定义过滤器按钮,如下图所示,鼠标光标标记。从左上角的列表中选择破碎的。中心窗格将列出任何仍需修复的损坏包。

    在 Synaptic 中显示损坏的软件包

    一次选择一个损坏的软件包。选择一个损坏的软件包,然后打开终端并运行。此命令的结果将告诉您该损坏的软件包是从默认软件存储库安装的还是从其他来源安装的。如果损坏的软件包是从其他来源安装的,那么也许可以将其连同其软件源一起删除,并用默认存储库中相同软件包的不同版本替换。通常这意味着通过将软件包降级为旧版本来修复损坏的软件包。apt policy <package-name>

  • 另一种故障排除方法是使用 aptitude ( sudo apt install aptitude) 而不是 apt 来尝试安装您的软件包:

    sudo aptitude 安装<软件包名称>

    与 apt 不同,aptitude 会尝试寻找可能涉及修改其他已安装软件包的解决方案,并提供有关解决问题的选项的更多信息。

  • 如果您收到此错误消息:

    Try 'apt-get -f install' with no packages (or specify a solution)  
    

    运行以下命令:

    sudo apt update  
    sudo apt upgrade   
    sudo apt-get -f install   
    
  • 手动移除破损的包装。

    1. 查找您的包裹/var/lib/dpkg/info

      ls -l /var/lib/dpkg/info | grep <package>
      
    2. 将包文件夹移动到另一个位置。

      cd /tmp && sudo mkdir new-package-location  
      sudo mv /var/lib/dpkg/info/<package>.* /tmp/new-package-location/    
      
    3. 运行以下命令:

      sudo dpkg --remove --force-remove-reinstreq <package>
      

如果所有这些方法都不起作用,则损坏的软件包可能是由操作系统中嵌入太深的东西引起的,这些方法都无法对其产生任何影响。寻找这种深深嵌入的“东西”的第一个明显的地方是 中的软件源/etc/apt/sources.list。检查 sources.list 文件以查看它是否包含可能导致损坏软件包错误的任何非标准行。标准的 Ubuntu sources.list 文件看起来像 sources.list 文件这个答案

删除 sources.list 中可疑行的正确方法是将其前面加上一个字符,将其注释掉#。然后运行sudo apt update以刷新可用软件列表。

相关内容