采用本文介绍的方法可以解决在 deepin 15.9.2 及以上系统中软件版本太旧的问题,可以使用混合 lion 与 panda 源。
一、前言 深度操作系统从15.9.2开始迁移至Debian stable仓库,参考深度操作系统Deepin 15.9.2测试版发布下载,迁移到Debian stable仓库。 不过,由于Debian stable仓库的软件版本很多都比较老旧,对于一些专业用户(比如程序员)就不太友好了。有没有解决的办法呢?有的。先讲一些背景知识: 过去,deepin 的主要软件仓库代号 panda,基于 debian unstable 仓库,版本比较新;现在,deepin 的主要软件仓库代号 lion,基于 debian stable 仓库,版本比较老。现在,panda 仓库仍在运作。也就是: 15.9.2 以前:deepin panda <- debian unstable (版本新) 15.9.2 以后:deepin lion <- debian stable (版本老) 但要注意,以上仅限于全新安装的 15.9.2 以后的版本。如果你是从 15.9.2 以前的版本一路升级上来的,那么你暂时还是用的 panda 源,系统不会给你自动切换的。也就是说,15.9.2 以后的版本,虽然看起来都差不多,但升级上来的与全新安装的系统,实际上差别不小。 如果你是一路升级上来的,那么不用做什么修改,看到本文这里就可以结束了;如果你是新装的 15.9.2 以后的版本,可以继续。
二、修改软件源 下面讲我的解决方案:混合 lion 和 panda 源,但是前者的优先级要更高。 第一步,修改apt源,添加 panda 源。命令行执行 sudo dedit /etc/apt/sources.list ,可看到里面有这样一行: deb [by-hash=force] http://packages.deepin.com/deepin lion main contrib non-free 在其下面增加一行,保存退出: deb [by-hash=force] http://packages.deepin.com/deepin panda main contrib non-free 这样就能同时使用 lion 和 panda 源了。 第二步,设定优先级。命令行执行 sudo dedit /etc/apt/preferences ,这个文件应该还是空白,在里面添加以下内容,保存退出: Package: * Pin: release panda Pin-Priority: 100 Package: * Pin: release lion Pin-Priority: 500 这样 lion 的优先级为 500 而 panda 为 100,会优先使用前者。 第三步,运行 sudo apt update。 到这里就完成了修改。
三、使用软件源 做了以上修改后,因为 lion 源优先级较高,所以正常的 apt 命令、自动升级、软件商店等都与原来无异。这里主要讲高级的用法:升级和降级。 升级就是从 panda 源安装软件。只需要加上 -t panda 参数即可(不带此参数则从优先级更高的 lion 源安装,与过去一样),例如升级 gnome-keyring 包: sudo apt install -t panda --dry-run gnome-keyring 注意这里加上了 --dry-run 参数,意思是模拟操作,不真正改变系统。建议总是先 --dry-run 一下,看着没有什么不正常的操作(例如意外地卸载一些不该卸载的东西),然后去掉 --dry-run 重跑一遍: sudo apt install -t panda gnome-keyring 降级则是回归 lion 源。这需要先知道具体的版本,用 apt policy 命令: $ apt policy gnome-keyring gnome-keyring: 已安装:3.28.2-1 候选: 3.28.2-1 版本列表: *** 3.28.2-1 100 100 http://packages.deepin.com/deepin panda/main amd64 Packages 100 /var/lib/dpkg/status 3.20.0-3 500 500 http://packages.deepin.com/deepin lion/main amd64 Packages 这说明我们已安装的版本是 panda 源里的 3.28.2-1,可以降级到的版本是 lion 源里的 3.20.0-3,那么指明具体版本即可: sudo apt install -t lion --dry-run gnome-keyring=3.20.0-3 检查无误后去掉 --dry-run 再执行即可。 注意,如果降级的包有多个依赖的包,则可能报错,这时需要把依赖的包也一一指定要降级的版本。
四、如果运行 apt --dry-run 遇到了异常情况 比如不能满足的依赖关系、企图删除你没有指示删除的包等,建议换 aptitude 试试,似乎它更加智能。我用 apt 升级 nautilus 文件管理器时报告依赖错误,而 aptitude 就可以正常完成。语法差不多: aptitude install -t panda -s nautilus 这里 -s 与 apt 的 --dry-run 同义,都是模拟运行,正式操作时要去掉 -s。
相关主题 |