`do-release-upgrade`真的有用吗?
我们知道do-release-upgrade
“会进行版本升级”。 但是在一个较低的水平,它真正做到了什么?
我计划进行更多的手动升级,例如Debian方式:设置源后的aptitude update
和aptitude full-upgrade
。 实际上,我计划与aptitude
完全互动。 但是这让我很好奇还有其他什么 do-relase-upgrade
做了,除了我的sources.list。
do-release-upgrade
是“update-manager-core”软件包的一部分。 该脚本似乎决定了您要升级到哪个版本,试图找出它是否受支持并抱怨后者。 – 如果它确信可以工作,它会下载特定于发行版的UpgradeTool并运行它。
“update-manager-core”软件包的一部分是文件/etc/update-manager/meta-release
,您可以在其中找到URL http://changelogs.ubuntu.com/meta-release ,在那里找到URL升级工具下载。
下载的UpgradeTool tarball从源包“ubuntu-release-upgrader”(在它是“update-manager”之前)打包。 该版本对应于目标版本的最新更新。
该来源有一个旧的自述文件来自肮脏和白痴的发布时间。 它讨论了在发布升级期间应该做什么。 它还提到了一个更详细的UpgradeTool提案的链接。
我在这里列出了那里提到的行动并检查它们是否实际实施:
- 存储库相关
- 切换到新的sources.list条目
- 删除未知的第三方存储库
- 可能交换镜像(未实现)
- 包相关
- 检查升级前是否有破损的包裹
- 升级前更新当前版本(仅限
apt-get update
) - 删除并安装特定的包
- 检查是否安装了{ubuntu,kubuntu,edubuntu} -desktop
- 摆脱旧内核
- 有一个删除黑名单和白名单
- 删除或替换早期版本中存在的过时软件包
- 配置相关(可能在怪癖中:见下文)
- 将默认用户添加到新组(未对我检查的版本执行)
- 检查一些配置文件
使用以下文件为每个版本配置 UpgradeTool(打开它们以查看!):
- DistUpgrade.cfg
- 与UpgradeTool相关的配置
- 与发布相关的配置
- 存储库(例如[Sources] ValidMirrors)
- 自定义更改([Distro] PostInstallScript)
- 特别套餐; 仅由DistUpgradeController.py处理:
- [Distro] RemoveObsoletes,ForcedObsoletes,BaseMetaPkgs,MetaPkgs
- [meta_package_name] ForcedObsoletes
- ……和DistUpgradeCache.py:
- [Distro] MetaPkgs,RemovalBlacklist,RemoveEssentialOk,BadVersions,BaseMetaPkgs,PurgeObsoletes,Demotions,KeyDependencies
- [Distro和meta_package_name] KeepInstalledPkgs,KeepInstalledSection,PostUpgrade *
- [KernelRemoval] *
- DistUpgradeQuirks.py
- 运行(发布)特定function(相同文件)和插件(
plugins
目录) - 函数必须具有特定的名称(例如
from_nattyPreCacheOpen()
)和插件特殊condition
属性(例如*
或PostInitialUpdate
) - 其中一个函数,
StartUpgrade()
,是另一个自己的东西:其中它调用_applyPatches()
,它遍历patches
目录中的文件 - 所有这些在我的安装上几乎没有任何作用 (i386,包不早于natty-updates)
- 运行(发布)特定function(相同文件)和插件(
- 更多来自DistUpgradeCache.py
- 运行
get_kernel_list.sh
(不可靠)并确保安装了一个内核 - 一些处理Nvidia驱动程序
- 运行
检查版本:
- natty→oneiric
- oneiric→精确
- 精确→可靠(最终截至2014-04-18)
- 可靠→乌托邦(2014-10-23发布前几小时)