我可以不使用 ppa-purge 将所有软件包重置为 repo 版本吗?

我可以不使用 ppa-purge 将所有软件包重置为 repo 版本吗?

对于我来说这只是一个理论(对于另一个用户来说这是一个真正的问题)但是我们可以说:

  • 我将 PPA 中的大量软件包升级到 12.04
  • 我升级到 14.04
  • 有些软件包被保留下来,因为我的 PPA 升级软件包有新版本,这些新版本破坏了依赖关系

到现在为止,我认为已经太迟了,无法ppa-purge发挥作用。假设 - 奥利应该跑了ppa-purge 升级……但事情已经发生了。我们如何将这种依赖僵局转变为一个可工作、可更新的系统?

理想情况下,我们会将所有内容与 Ubuntu-repo 版本一起发送回那些版本...但我该怎么做呢?

答案1

  • 理想情况下应该可以工作,因为这是相同的程序。PPA 始终具有高于和的ppa-purge版本。precisetrusty

  • 我想到唯一的情况是处理绝对包或重命名包时(如果没有提供临时包)。

    在这种情况下,我建议:

    1. 重新添加所有精确的存储库。

      echo -e "deb http://archive.ubuntu.com/ubuntu/ precise main universe multiverse restricted\ndeb http://security.ubuntu.com/ubuntu/ precise-security main universe multiverse restricted\ndeb http://archive.ubuntu.com/ubuntu/ precise-update main universe multiverse restricted" | sudo tee /etc/apt/sources.list.d/precise.list
      
    2. 更新软件包列表

      sudo apt-get update
      
    3. 清除 PPA

      sudo ppa-purge ppa:...
      

      如果没有效果请尝试:

      sudo ppa-purge -d precise ppa:...
      

      您也可以尝试aptitude提供降级解决方案。

      有时,手动修复是唯一的选择。

      • 您可以使用以下方式删除那些不带依赖项的包:

        sudo dpkg -r --force-depends ...
        ##disable ppa source then
        sudo apt-get -f install
        
      • 或者强制从官方存储库安装特定版本。但你必须将所有相关包放在同一个命令中。

        sudo apt-get install pkg1=ver1 pkg2=ver2 ...
        
      • 在最坏的情况下,您可以从官方存储库下载具有版本的软件包,然后使用以下命令强制安装它们:

        sudo dpkg -i --force-depends ...
        

        据我所知,APT 没有办法做到这一点。

答案2

您需要在文件夹中创建一个文件(假设00_reset_ppas),/etc/apt/preferences.d其中包含以下内容

Package: *
Pin: release o=Ubuntu
Pin-Priority: 1100

在那次跑步之后

sudo apt update
sudo apt full-upgrade

并且大多数(或最好是所有)来自 PPA 的软件包将被 ubuntu 自带的标准软件包所取代,前提是没有可能引发冲突的 nanimg 冲突(即 ppas 中具有不同名称的软件包)。

相关内容