Rol*_*Xor 17 apt dpkg dependencies downgrade
在清除 PPA 之前,我有许多已升级到 PPA 版本的 mesa 软件包,以便我可以升级我的系统。版本之间的差异很小(它们在技术上是相同的,只有一组库来自 git,其他是最终版本)。
如果我尝试通过 Synaptic、apt-get 或 aptitude 降级,我会陷入依赖地狱。
有没有办法手动降级包(也许一个一个)并将它们的依赖包标记为不可移动(如果有道理),直到我完成?
PS 这个问题:How to Downgrade a Package via apt-get? 有点不同,对这种情况没有帮助。
lan*_*oni 14
我以前从未玩过这个,但我建议您hold
(或lock
)使用给您带来麻烦的依赖项版本。这种方式apt
的可能解决方案数量有限,并且当您尝试降级其他软件包时可能不会感到困惑。
如果没有其他效果,您可以采用以下答案中建议的手动方法:如何通过 apt-get 降级软件包?. 基本上,.deb
手动下载必要的软件包,然后使用较低级别dpkg
及其强有力的参数之一一一安装它们:--ignore-depends
, --force-depends
, --force-depends-version
, 或 even --force-all
。
本着与上述相同的精神,你有这样的--force-downgrade
论点:
downgrade(*): Install a package, even if newer version of
it is already installed.
Warning: At present dpkg does not do any dependency
checking on downgrades and therefore will not warn you if
the downgrade breaks the dependency of some other pack?
age. This can have serious side effects, downgrading
essential system components can even make your whole sys?
tem unusable. Use with care.
Run Code Online (Sandbox Code Playgroud)
但这假设您已阅读man dpkg
,并且您了解您的工作:
Warning: These options are mostly intended to be used by
experts only. Using them without fully understanding
their effects may break your whole system.
Run Code Online (Sandbox Code Playgroud)
请参阅错误:版本号不以数字开头以及如何安装旧版本的 Java以及如何安装旧版本的包,例如液体 2.2.2?例如:
sudo dpkg --force-downgrade -i your_mesa_package.deb
Run Code Online (Sandbox Code Playgroud)
并参阅如何在不安装某些依赖项的情况下安装软件包?例如(连同适当的警告):
sudo dpkg --force-all -i your_mesa_package.deb
Run Code Online (Sandbox Code Playgroud)
另一种方法是.deb
使用equivs
包创建一个虚拟包(可能还有一个稍微不同的名称)。然后安装虚拟包应该允许您在保留相关 deps 的同时删除“真实”包,然后安装旧版本。我不确定这究竟是如何工作的,但请查看此相关线程以获取详细信息:How to remove a deb without remove its dependencies。
您可以首先使用将系统中安装的apt-mark
所有目标包的依赖项(可能还有推荐/建议的依赖项)标记为手动安装。完成后,安装该软件的先前版本,并apt-get
明确提及版本。
列出目标包的依赖、推荐和建议包:
apt-cache show <target-package-name>
Run Code Online (Sandbox Code Playgroud)将软件包标记为手动安装:
sudo apt-mark manual <package-name(s)>
Run Code Online (Sandbox Code Playgroud)
(将此用于所有依赖项、推荐和建议。)
删除目标包:
sudo apt-get remove <target-package-name>
Run Code Online (Sandbox Code Playgroud)要查看您可以降级/升级到的软件包版本列表,请使用:
apt-cache policy <target-package-name>
Run Code Online (Sandbox Code Playgroud)安装所需软件包的目标版本:
sudo apt-get install <target-package-name>=<target-package-version-number>
Run Code Online (Sandbox Code Playgroud)
或者
sudo apt-get -t=<target release> install <target-package-name>
Run Code Online (Sandbox Code Playgroud)附注。如果依赖项/推荐/建议的包列表(即要标记的包apt-mark
)很大,请将打包输出的预期列表保存apt-cache show <target-package-name>
到任何文件 say/path/to/foo
并apt-mark
在这样的组合中使用:
cat /path/to/foo | xargs -imarkthese sudo apt-mark manual markthese
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32231 次 |
最近记录: |