do-release-upgrade
是“ update-manager-core”软件包的一部分。该脚本似乎可以确定您要升级到哪个版本,尝试找出是否支持该版本,并抱怨后者。–如果确信可以使用,它将下载特定于版本的UpgradeTool并运行它。
“ update-manager-core”软件包的一部分是文件/etc/update-manager/meta-release
,在其中您可以找到URL http://changelogs.ubuntu.com/meta-release,在这里您可以找到要下载的UpgradeTool的URL。
下载的UpgradeTool tarball是从源软件包“ ubuntu-release-upgrader”打包的(之前是“ update-manager”)。该版本对应于目标版本的最新更新。
来源中有一些旧版本的自述文件,因为它们的发布时间比较保守。它讨论了发行版升级期间应该做什么。它还提到了指向更详细的UpgradeTool建议的链接。
我在这里列出了此处提到的操作,并检查了它们是否已实际实现:
- 仓库相关
- 切换到新的sources.list条目
- 删除未知的第三方存储库
- 可能交换镜像(未实现)
- 包装相关
- 升级前检查是否有损坏的包装
- 升级前更新当前版本(
apt-get update
仅)
- 删除并安装特定的软件包
- 检查是否安装了{ubuntu,kubuntu,edubuntu} -desktop
- 摆脱旧的内核
- 有一个删除黑名单和-whitelist
- 删除或替换早期版本中存在的过时软件包
- 与配置有关(可能有古怪之处:见下文)
- 将默认用户添加到新组(我检查的版本未完成)
- 检查一些配置文件
使用以下文件为每个版本配置 UpgradeTool (打开它们即可查看!):
- DistUpgrade.cfg
- 与UpgradeTool相关的配置
- 与发布相关的配置
- 存储库(例如[Sources] ValidMirrors)
- 自定义更改([Distro] PostInstallScript)
- 特殊套餐;仅由DistUpgradeController.py处理:
- [发行] RemoveObsoletes,ForcedObsoletes,BaseMetaPkgs,MetaPkgs
- [meta_package_name]强制淘汰
- ...以及DistUpgradeCache.py:
- [发行] MetaPkgs,RemovalBlacklist,RemoveEssentialOk,BadVersions,BaseMetaPkgs,Purge过时,降级,KeyDependencies
- [发行版和meta_package_name] KeepInstalledPkgs,KeepInstalledSection,PostUpgrade *
- [内核删除] *
- DistUpgradeQuirks.py
- 运行(发布)特定功能(相同文件)和插件(
plugins
目录)
- 函数必须具有特定的名称(例如
from_nattyPreCacheOpen()
)和插件的特殊condition
属性(例如*
或PostInitialUpdate
)
- 其中一个功能
StartUpgrade()
本身就是另一个抓包:除其他功能外,它还调用_applyPatches()
,它遍历目录中的patches
文件
- 所有这些对我的安装几乎没有任何作用(i386,不早于natty-updates的软件包)
- 来自DistUpgradeCache.py的更多内容
- 运行
get_kernel_list.sh
(不可靠)并确保已安装一个内核
- 关于Nvidia驱动程序的一些处理
检查版本:
- 娜蒂→oneiric
- oneiric→精确的
- 精确→可信赖(最终于2014-04-18截止)
- 可信赖的→utopic(在2014-10-23上映前几个小时)