我正在尝试将旧的 Ubuntu 服务器从 8.10 (Intrepid) 升级到 9.04 (Jaunty)。但失败了。
root@server1:/# do-release-upgrade
Checking for a new ubuntu release
Failed Upgrade tool signature
Failed Upgrade tool
Done downloading
extracting 'jaunty.tar.gz'
Failed to extract
Extracting the upgrade failed. There may be a problem with the network or with the server.
有人知道我为什么会收到这个错误以及如何修复它吗?
更新:我想我可能已经找到这个问题了。
我的 /etc/update-manager/meta-release 如下所示:
[METARELEASE]
URI = http://changelogs.ubuntu.com/meta-release
URI_LTS = http://changelogs.ubuntu.com/meta-release-lts
URI_UNSTABLE_POSTFIX = -development
URI_PROPOSED_POSTFIX = -proposed
如果我去http://changelogs.ubuntu.com/meta-release它包含有关 Jaunty 的以下信息:
Dist: jaunty
Name: Jaunty Jackalope
Version: 9.04
Date: Thu, 23 Apr 2009 12:00:00 UTC
Supported: 0
Description: This is the 9.04 release
Release-File: http://archive.ubuntu.com/ubuntu/dists/jaunty/Release
ReleaseNotes: http://changelogs.ubuntu.com/EOLReleaseAnnouncement
UpgradeTool: http://archive.ubuntu.com/ubuntu/dists/jaunty-proposed/main/dist-upgrader-all/0.111.8/jaunty.tar.gz
UpgradeToolSignature: http://archive.ubuntu.com/ubuntu/dists/jaunty-proposed/main/dist-upgrader-all/0.111.8/jaunty.tar.gz.gpg
由于 jaunty 已终止使用,因此以 archive.ubuntu.com 开头的那些链接已损坏。
我想我可以通过复制此文件、将“archive”替换为“old-releases”、将修改后的文件托管到某处并更改元发布文件中的 URL 来修复此问题。这是一个好的解决方案还是会让我遇到更糟糕的问题?
答案1
8.10 和 9.04 均不受支持,您需要一直升级到 10.04。
Canonical 在其存储库关闭后保留了有关如何从某个版本升级的文档这里。
添加以下内容/etc/apt/sources.list
:
deb http://old-releases.ubuntu.com/ubuntu/ intrepid main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ intrepid-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ intrepid-security main restricted universe multiverse
使用新的存储库进行更新,并针对 intrepid 存储库升级软件包:
apt-get update && apt-get dist-upgrade
然后就可以使用发布升级工具了:
do-release-upgrade
重复上述操作,将 替换intrepid
为jaunty
即可sources.list
升级到 9.10。要升级到 10.04,您不需要进行手动修改,因为看起来 Karmic 源仍然在原始位置,尽管已经过了支持期限。
答案2
斯图尔特,
我认为这个问题可以用一种更简单的方式解决,而不必使用另一台机器。以下是我所做的:
从以下位置复制旧的(不正确的)文件http://changelogs.ubuntu.com/meta-release到本地文件(例如)/etc/meta-release.rvg 我修改了 /etc/meta-release.rvg,以便将“archive”替换为“old-releases”
修改了 /etc/update-manager/meta-release 以便它指向我的本地文件而不是 ubuntu 站点上的错误 URI - 这是我更改后的样子:
[METARE 发布]
URI = 文件:///etc/meta-release.rvg
URI_LTS =http://changelogs.ubuntu.com/meta-release-lts
URI_UNSTABLE_POSTFIX = -开发
URI_PROPOSED_POSTFIX = -建议
然后我运行了 do-release-upgrade,一切都很顺利
问候,
拉金德拉·戈哈勒
答案3
再次遇到此问题后,我找到了一个更简单的答案:将其放入服务器 /etc/hosts 文件中:
91.189.88.140 存档.ubuntu.com
该服务器不是基于名称的,因此您可以将 archive.ubuntu.com 指向旧版本,它就可以工作。
注意:升级时请记得删除 HOSTS 中的这一行
斯图
答案4
我自己刚刚遇到了这个问题,并且远离机器,我想升级它而不是平面安装它(而且我有很多数据,我不想先移动它!)
正如您所说,问题是文件不再存在于其已知位置: http://archive.ubuntu.com/ubuntu/dists/jaunty-proposed/main/dist-upgrader-all/0.111.8/jaunty.tar.gz
我创建了一个快速 php 代理文件来解决这个问题(我不想发布我的镜像,所以我将发布代理文件,你可以自己做)。
您需要设置另一个网络服务器来接收来自 archive.ubuntu.com 的请求(输入该域名)
在 htdocs 文件夹中放置包含以下内容的 index.php:(对于格式不佳,我深表歉意 - 我无法让它在所见即所得中看起来正确!)
ini_set('最大执行时间',800);
$uri = $_SERVER['REQUEST_URI'];
$新域 = 'http://old-releases.ubuntu.com';
$is_file = false;
如果(strpos($_SERVER['REQUEST_URI'],'.')==0){ $tmp = $_SERVER['REQUEST_URI'].“.html”; } else { $tmp = $_SERVER['REQUEST_URI']; $is_file = true; }
如果(!is_file($dir.$_SERVER['REQUEST_URI'])){ $file = file_get_contents($newDomain.$_SERVER['REQUEST_URI']);$dir = 'cache'; $folders =
explosive('/',$_SERVER['REQUEST_URI']); ##创建主缓存文件夹 if(!is_dir($dir))mkdir($dir,0777); ///创建缓存文件夹 for($i=0;$i
file_put_contents('cache'.$tmp,$file);
}
$ch = curl_init($newDomain.$_SERVER['REQUEST_URI']); //curl_setopt($ch, CURLOPT_HEADER, 1); ob_start(); $c = curl_exec($ch); $ob = ob_get_clean(); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
如果($is_file){ header('Content-Type:',$type); header(“HTTP/1.1 200 Ok”); readfile('cache'。$tmp,$file); } else { header('Content-Type:',$type); header(“HTTP/1.1 200 Ok”); die($ob); }
现在创建 .htaccess 并将其放入其中:
allow from all
RewriteEngine 在 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /index.php [QSA,L]
创建文件夹 htdocs/cache 并将其 chmod 为 777
进入您要升级的机器并编辑 /etc/hosts(nano /etc/hosts)并输入一行:
XXX.XXX.XXX.XXX archive.ubuntu.org
将 XXX 替换为新代理的 IP 地址。
您可能必须运行“/etc/init.d/nscd restart”和“/etc/init.d/networking restart”(在要升级的机器上)以确保您的 DNS 缓存已被清除并且您的新代理用作 archive.ubuntu.org 的 IP。
再次运行 do-release-upgrade。
这很不方便,但是使用我拥有的另一个专用盒子,它帮我完成了工作。