对于我来说这只是一个理论(对于另一个用户来说这是一个真正的问题)但是我们可以说:
- 我将 PPA 中的大量软件包升级到 12.04
- 我升级到 14.04
- 有些软件包被保留下来,因为我的 PPA 升级软件包有新版本,这些新版本破坏了依赖关系
到现在为止,我认为已经太迟了,无法ppa-purge
发挥作用。假设 - 奥利应该跑了ppa-purge
前升级……但事情已经发生了。我们如何将这种依赖僵局转变为一个可工作、可更新的系统?
理想情况下,我们会将所有内容与 Ubuntu-repo 版本一起发送回那些版本...但我该怎么做呢?
答案1
理想情况下应该可以工作,因为这是相同的程序。PPA 始终具有高于和的
ppa-purge
版本。precise
trusty
我想到唯一的情况是处理绝对包或重命名包时(如果没有提供临时包)。
在这种情况下,我建议:
重新添加所有精确的存储库。
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
更新软件包列表
sudo apt-get update
清除 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 中具有不同名称的软件包)。