如何安装软件或从不支持的旧版本升级?


386

最近,我在旧计算机上安装了旧版本的Ubuntu。每当我尝试安装任何软件时,都会收到一条错误消息,指出找不到该软件:

$ sudo apt-get install vlc
Reading package lists... Done               
Building dependency tree       
Reading state information... Done    
E: Couldn't find package vlc

2
这可能是值得花相当长的时间努力使这项工作我有运气意识到,他们已经从移到后的周末编辑部分(或全部)回答这个问题,因为http://old-releases.ubuntu.com/ubuntu/http://us.archive.ubuntu.com/ubuntu/(或您自己的相应的两个字母的缩写县开头的代码)从17.10开始(基本上与返回字母的开头同步)。
Isti115

Answers:


534

不支持的较早版本的存储库(如11.04、11.10和13.04)将移至存档服务器。在http://old-releases.ubuntu.com上有可用的存储库。

这样做的原因是,它现在不在支持范围内,不再接收更新和安全补丁。

我敦促您考虑支持的发行版。如果计算机的内存或处理器过旧,则应考虑使用Lubuntu或Xubuntu之类的发行版。

如果你想继续使用过时的版本,然后进行编辑/etc/apt/sources.list和修改archive.ubuntu.com,并security.ubuntu.comold-releases.ubuntu.com

您可以使用sed

sudo sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list

然后更新:

sudo apt-get update && sudo apt-get dist-upgrade

有时,创建系统备份并使用支持的发行版重新安装可能会更快。

来源:如果过时了,我可以继续使用Ubuntu 9.04吗?


升级到新版本:

完成上述步骤以切换到旧版本的镜像后,更新更新管理器,然后执行以下操作do-release-upgrade

sudo apt-get update
sudo apt-get install update-manager-core
sudo do-release-upgrade

另请参见EOLUpgrades-社区帮助Wiki


9
并且,仅出于完整性考虑... extras存储库(对于Skype等)又如何呢?它们在EOF之后是否可用?
MestreLion 2013年

2
一个更简单的方法是sudo vi /etc/apt/sources.list手动修改它。我必须这样做,因为我很新,并且我不知道sed是否可以使这种工作适用于业障,谢谢,您的答案仍然是正确和正确的。
bhathiya-perera

18
更简单的方法是sudo nano /etc/apt/sources.list,因为vi*仅仅是烦人...
维尔夫

4
sed命令并非始终有效,因为存在由以外的组织运行的镜像ubuntu.com。我什至不确定所有的域名都有三个点。对于这些,您必须手动进行编辑/etc/apt/sources.list
Olathe

3
从17年3月21日起从15.04升级存在此问题。不再支持Vivid,但是旧版本中没有dist。
马修·蒂斯沃思

114

什么是404错误

404或未找到错误消息是HTTP标准响应代码,指示客户端能够与服务器通信,但是服务器找不到请求的内容。

当用户尝试跟踪断开或无效的链接时,网站托管服务器通常会生成“ 404-未找到页面”网页。

为什么我们面临404错误

Ubuntu遵循两种不同的发行周期

正常的Ubuntu版本支持9个月。LTS版本支持5年。

过去的发行版可能具有不同的支持时间表(例如,过去的正常发行版(13.04之前)被支持18个月,而过去的LTS发行版(12.04之前)在台式机上被支持3年,在服务器上被支持5年。

停产:特定版本的支持期结束后;它们被称为报废(EOL),并且该发行版的所有更新和程序包存储库都已转移到其他服务器,这在运行时导致404错误sudo apt-get update。您可以通过转到此页面来确认您的版本是否已终止。如果在“寿命终止(EOL)”表下提到了您的Ubuntu版本,则该版本不再受支持,您应尝试升级到较新的受支持版本。但是,如果您希望继续使用此不受支持的版本,则必须进行必要的修改/etc/apt/sources.list以指向old-releasesUbuntu服务器。

进行必要修改的步骤

  1. 打开您的终端:

    • Ctrl+ Alt+ T; 要么
    • 如果你有侏儒:Applications→交通Accessories→交通Terminal; 要么
    • 如果你有统一:按Super(之间的关键Left CtrlLeft Alt)和查询Terminal
  2. 运行以下命令进入root shell:

    sudo -i
    

    输入您的用户密码,然后按Enter。提示将更改,并指示现在已经有root用户登录。在这里运行以下命令:

    gedit /etc/apt/sources.list
    
  3. 该文件将在新的Gedit窗口中打开。找到不以开头的第一行#。假设您正在运行Karmic Koala(Ubuntu 9.10):应该类似于以下行:

    deb <siteurl> karmic main restricted
    

    <siteurl>您首选的服务器http://gb.archive.ubuntu.com/ubuntu在哪里- 例如您的服务器。

  4. Ctrl+ H替换<siteurl>http://old-releases.ubuntu.com/ubuntu

    • 搜索:http://gb.archive.ubuntu.com/ubuntu即;<siteurl>
    • 替换为:http://old-releases.ubuntu.com/ubuntu
    • Replace All
  5. 再来一次:

    • 搜索:(http://security.ubuntu.com/ubuntu所有Ubuntu版本的确切网址-所用的当前服务器是什么)
    • 用。。。来代替: http://old-releases.ubuntu.com/ubuntu
    • Replace All
  6. 保存文件并退出Gedit。

  7. 运行以下命令以脱离根shell:

    logout
    

    您会发现提示切换回以指示您的普通用户现在已登录。然后运行以下命令:

    sudo apt-get update
    

妳去 这次没有404错误。现在,您可以为Ubuntu版本安装所有可用的软件包。您还可以运行sudo apt-get dist-upgrade以安装尚未安装的任何Security / Bug修复程序更新,但不会从Ubuntu获得任何其他Security / Bug修复程序更新。


6
+1,还包括更新安全存储库的说明。
加菲2013年

实际上raring main restricted,没有#的第一行是,没有任何deb。我按指定进行了更改,然后也替换了网址,但仍然得到404。
Yokhen 2014年

2
@Yokhen如果该行开头不是deb <siteurl>,则很可能/etc/apt/sources.list由于某种原因您的文件已损坏。请遵循以下给出的答案: 如何还原默认存储库?。这样可以/etc/apt/sources.list为您恢复正确的状态,然后按照我的回答将服务器更改为指向旧版本的服务器。
2014年

谢谢!我以某种方式设法从13.04升级到13.10,现在我正在升级到14.04。
Yokhen 2014年

1
@Dan,修改了答案,现在我们进入root shell,然后运行图形程序。无需再使用gksudo了。我想为像我这样的新手保留这个答案,并且不希望使用基于终端的编辑器使事情变得复杂,无论它们多么简单或强大。
阿迪亚(Aditya)2016年

57

简短的答案是将下一个apt存储库添加到“ 软件源”(或新版本中的“ 软件和更新” )中的第三方软件(或新版本中的“ 其他软件”)中:

deb http://old-releases.ubuntu.com/ubuntu code_name main restricted universe multiverse

长答案...

GUI方法

好吧,实际上我们将在不使用任何终端的情况下执行此操作。一次也没有。我保证只是GUI ;-)

首先,打开软件源(或较新版本的软件和更新)。不管您的Ubuntu年龄多大,肯定都有这样的东西。对于Ubuntu 9.04(Jaunty Jackalope),请查看下一张图片以查看位置:

开放软件源

之后软件源(或软件和更新)它是开放的,走在Ubuntu软件更新选项卡,并取消everytiyng就像在接下来的图片。由于您的Ubuntu版本是End of Life,因此您不再需要这些东西:

Ubuntu软件选项卡


在此处输入图片说明

在不关闭软件源(或软件和更新)的情况下,进入“ 第三方软件”(对于最新版本,此选项卡称为“ 其他软件”)选项卡,并添加新的apt存储库。在询问时完全插入下一行:

deb http://old-releases.ubuntu.com/ubuntu jaunty main restricted universe multiverse

如果您的Ubuntu版本不是9.04,请在上一行jaunty中用您的Ubuntu代码名替换(例如,如果您有Ubuntu 9.10,请替换为karmic,依此类推):

第三方软件选项卡

现在,当您关闭软件源(或软件和更新)时,将要求您重新加载有关可用软件的信息。只要确保您的互联网连接正常即可:

重新加载可用软件


下载可用软件

现在,您几乎可以随意下载任何内容。对于9.04,您可以使用Synaptic软件包管理器。对于最新版本,有Ubuntu软件中心

例如,要使用Synaptic软件包管理器在Ubuntu 9.04中安装VLC,请按照以下图片中的说明进行操作:

打开Synaptic软件包管理器


在SPM中搜索VLC


马克·维克


标记附加VLC


应用VLC


下载VLC


开放式VLC

如果要将Ubuntu更新到新版本,只需进入系统 > 更新管理器

更新管理器


升级

我从Ubuntu 9.04(Jaunty Jackalope)的实时会话中测试了此方法,从这些图片中可以看到它的工作原理。如果您正在Ubuntu的已安装会话中,有时会要求您输入root或admin密码。询问时只需插入您的个人用户密码。


1
我只是从安装的10.10(maverick)版本中完成所有这些操作。一切都很好描述。@Radu,您的回答是完美的!
Gediminas Jeremiah Gudelis

1
这些图像需要更新...等等...您正在使用12.04之前的版本做什么?
Braiam 2013年

1
@Braiam这些图像是最新的。如果您尝试使用Ubuntu 9.04(Jaunty Jackalope),您将会理解。
RaduRădeanu2014年

1
@RaduRădeanuUbuntu 9.04是我第一次进入Linux世界。啊,这些屏幕截图带回了回忆!
Tyzoid

无法将其用于15.04才能升级到16.04。无法添加新的APT行,请提供帮助。
MrMule '16

22

我到达这里是因为我无法将系统从15.10(EOL)升级到16.04。但是没有一个答案对我有用...即使做了这里建议的一切,我仍然从sudo do-release-upgrade烦人的回答中得到:

Checking for a new Ubuntu release  
No new release found

而且我在跑步上没有成功update-manager; 它不断抛出我无法解决的异常。我怀疑15.10安装中有损坏,但最重要的是内置升级失败了。

因此,我寻找了一种非内置方法,并且确实可以从这个答案中找到它。

这是为我工作的解决方案:

  1. 打开http://changelogs.ubuntu.com/meta-release
  2. 找到要升级到的版本。就我而言,它是Xenial Xerus(16.04长期支持)。
  3. 找到UpgradeTool URL。对于xenial就是这个。从该URL将压缩包下载到一个空文件夹中,然后打开它(tar -xzf或使用GUI)。
  4. 找到与发行版同名的可执行文件(在我的情况下xenial)。使用以下命令运行它sudo

    sudo ./xenial &

  5. 批准升级,然后等待下载完成-有成千上万的文件,并且可能超过1G。继续安装升级...

(在执行升级后很久才编辑的。。。成功了,我忘了更新)

  1. 等待它完成,如果有询问,请批准...我不记得确切的细节了

  2. 重新启动后,新版本将成功运行,并且所有更新都可以正常获取。


1
我花了一段时间才找到这篇文章。仅使用引用的tarball,我就成功地从15.04 / wily运行了升级。使用旧版本网址的方法不起作用。我希望这可以帮助其他用户解决此问题。
Jeroen

很高兴您发现它有帮助!

1
非常感谢,我只是按照以下步骤将10.04升级到12.04。我的问题有所不同,因为我的安装未损坏,但是在do-release-upgrade上有一个错误,我无法在终端中找到该错误。完成这些步骤后,弹出一个对话框,告诉我“对某些软件包进行身份验证时出错”,这使我进入askubuntu.com/a/426121/262601,该DID允许升级成功继续。我正在拔头发,但这是我自己的过错,因为他没有尽快升级。
Fooxz

不幸的是,这甚至不适用于15.04
MiroJanosik

发挥魅力!我有一个过时的服务器,被我忽略了,我已经熟练了,可以从那里进一步升级,谢谢!
Patrick Cornelissen

17

要重新apt-get工作,请将软件源更改为旧版本存储库。

gksudo gedit /etc/apt/sources.list

删除其中的任何内容,然后粘贴以下内容:

# Required
deb http://old-releases.ubuntu.com/ubuntu/ karmic main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ karmic-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ karmic-security main restricted universe multiverse

# Optional
#deb http://old-releases.ubuntu.com/ubuntu/ karmic-backports main restricted universe multiverse

就这样。


谢谢mikewhatever,但是当我尝试“ apt-get install lm-sensors”时,结果是一样的。也许还有另一个丢失的源:“正在读取程序包列表...完成了构建依赖关系树的读取状态信息...已完成程序包lm-sensors不可用,但是被另一个程序包引用。这可能意味着该程序包丢失了,具有已过时,或只能从其他来源获得E:封装lm-sensors没有安装候选者”
Rorro 2012年

以下是详细信息:old-releases.ubuntu.com/ubuntu/pool/main/l/lm-sensors-3。我相信,您已经重新加载了来源列表,对吗?
mikewhatever

这个答案不起作用...为什么会有这么多投票?有人真的测试过吗?
托马什Zato

我已经对其进行了测试,但真正的问题是:您为什么仍在使用Karmic?多年以来,它一直不受支持,您应该真正升级到最新版本。
mikewhatever

12

尽管fossfreedom的回答在描述和解决问题方面做得很好,但是我发现了一个变体解决方案,我认为它更简单,也更优雅。

诀窍是添加http://old-releases.ubuntu.com/ubuntu/镜像,然后告诉Software Sources切换到该镜像。

为此,请备份并编辑/usr/share/python-apt/templates/Ubuntu.mirrors。为旧版本的服务器选择一个伪造的位置(例如#LOC:US),并在其下添加以下行:

#LOC:US
http://old-releases.ubuntu.com/ubuntu/

现在打开系统的“软件源”对话框,然后手动选择old-releases.ubuntu.com它,就像它是您的区域镜像一样。您应该在上一步选择的伪造位置下找到它。

下次您通过Synaptic或Update Manager重新加载软件包信息时,应该会看到它成功检索了更新的软件包信息。


效果很好,非常简单而且快速
doug


5

您可以在“旧发行版”服务器http://old-releases.ubuntu.com/ubuntu/dists/下找到存储库

关于如何编辑/etc/apt/sources.list https://help.ubuntu.com/community/EOLUpgrades


感谢gajdipajti,我正在软件包列表中寻找它,但找不到正确的“ .deb”。我的ubuntu已经有了“ libsensors3”,但是所有软件包都要求我提供“ libsensors4”。我知道正常的解决方案应该升级,但是我不能这样做,因为计算机专用于仅在9.10上运行的软件。
罗罗2012年

@Rorro:哪个软件只能在Ubuntu 9.10上运行?
unforgettableid

1

有一个极端的情况-apt-get声称16.04 LTS不存在 -旧软件包(在我的情况下为Vivid)不在“旧发行版”服务器上。但是apt-get只能找到内核和Google更新。

我不确定我到底是什么问题,因为我盲目地遵循了可接受的答案sed命令(从来都不是明智之举)。

这不起作用,因为Vivid不在“旧版本”存档中,但仍在gb.archive.ubuntu.com镜像中。

在这种特定情况下,解决方案如下:

sudo -i
edit /etc/apt/sources.list

仔细检查所有来源,发现其中一个来源是旧的,是错误的,并且未能正确更新(或其他内容)。或者像我一样,搜索从替换old-releases.ubuntu.comgb.archive.ubuntu.com。然后,当我开始阅读时,它毫无问题地升级到了下一个版本。

所以:

  1. 我的消息来源有毛病
  2. gb.archive.unbuntu.com镜面有一个更老版本的集合的。

这里的要点是,尽管这里的大多数答案在某些情况下可能适用,/etc/apt/sources.list但在为“旧版本”档案删除之前,一定要确保您是正确的。

您只需将浏览器选项卡指向存档和问题,然后在文件夹列表中查找您的版本名称,就可以确定哪个存档或镜像具有所需的版本。无论您使用哪个版本,都需要使用源。

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.