do-release-upgrade实际上是做什么的?


30

我们知道do-release-upgrade“进行了版本升级”。但是在较低的水平上它实际上是做什么的?

我计划进行更多手动升级,例如Debian方式:aptitude update以及aptitude full-upgrade设置源之后。实际上,我计划与完全互动aptitude。但这令我对其他 do-relase-upgrade功能感到好奇,除了建立我的sources.list。

Answers:


32

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仅)
    • 删除并安装特定的软件包
    • 检查是否安装了{ub​​untu,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上映前几个小时)

3
每次使用do-release-upgrade时,我都会得到一个无法引导的系统:)
user205301

作为do-release-upgrade处理的示例:nvidia二进制驱动程序,多体系结构更改,ndiswrapper,添加/删除体系结构和内核类型(例如,弃用服务器内核)
NGRhodes 2014年

@NGRhodes您的评论对我来说太含糊:ndiswrapper是一种非常流行的特殊情况,现在不行了。没有添加或删除任何体系结构(除了amd64,它将i386添加为外部结构,我想您将其覆盖为“多体系结构更改”)。–不建议“弃用”:是否删除软件包。
罗伯特·西默
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.