![安装不同版本的软件包](https://linux22.com/image/1092479/%E5%AE%89%E8%A3%85%E4%B8%8D%E5%90%8C%E7%89%88%E6%9C%AC%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85.png)
我正在运行 lucid 服务器并安装了 tomcat。它安装的版本是 6.0.24-2ubuntu1.6。
这是我要使用的版本吗?是否可以安装更新的版本? maverick 提供的版本是 6.0.28。
也许我可以添加一个源来为我的 lucid 安装提供此版本?在包管理器用户界面中,我可以“强制版本”。是否也可以从命令行选项中强制版本?
答案1
简短回答:
使用固定,您可以选择来自 maverick 的包,并自动获取它们的依赖项,并通过包管理器使它们保持最新。 https://help.ubuntu.com/community/PinningHowto
长答案复制自https://askubuntu.com/a/103338/42024:
你最好探索一下 apt pinning,请参阅
man apt_preferences
。因此,我们假设您使用 Oneiric 并且想要从 Precise 获取这些包。
如果你读过这篇文章,你会发现我复制粘贴了相关部分,只是修改了发布名称
/etc/apt/首选项
Package: libccid Pin: release n=precise Pin-Priority: 990 Package: libpcsclite* Pin: release n=precise Pin-Priority: 990 Package: libusb* Pin: release n=precise Pin-Priority: 990 Package: opensc Pin: release n=precise Pin-Priority: 990 Package: pcscd Pin: release n=precise Pin-Priority: 990 Explanation: Uninstall or do not install any Ubuntu-originated Explanation: package versions other than those in the oneiric release Package: * Pin: release n=oneiric Pin-Priority: 900 Package: * Pin: release o=Ubuntu Pin-Priority: -10
然后,我将我的复制
/etc/apt/sources.list
到/etc/apt/sources.list.d/precise.list
并将所有出现的 oneiric 替换为 precise。然后运行apt-get update
,最后apt-get upgrade
。# apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: libpcsclite1 libusb-0.1-4 libusb-1.0-0 libusbmuxd1 4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 86.0 kB of archives. After this operation, 88.1 kB disk space will be freed. Do you want to continue [Y/n]? y Do you want to continue [Y/n]? y Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/main libusb-0.1-4 amd64 2:0.1.12-20 [17.6 kB] Get:2 http://us.archive.ubuntu.com/ubuntu/ precise/main libusb-1.0-0 amd64 2:1.0.9~rc3-2 [30.9 kB] Get:3 http://us.archive.ubuntu.com/ubuntu/ precise/main libpcsclite1 amd64 1.7.4-2ubuntu1 [23.5 kB] Get:4 http://us.archive.ubuntu.com/ubuntu/ precise/main libusbmuxd1 amd64 1.0.7-2 [14.1 kB] Fetched 86.0 kB in 0s (124 kB/s)
由于某种原因,pcscd 和 opensc 没有安装,可能是因为一开始就没有安装,所以没有什么可升级的,没什么大不了的,我可以使用精确作为参考来安装该版本。
$ apt-get install opensc pcscd -t precise
注意使用-t,
packagename/precise
也可以。这里有你想要的最新版本的软件包,以及 只有那些包,它们也会自动更新。如果您不再需要它们,只需从中删除条目
/etc/apt/preferences
,下次运行时apt-get upgrade
它们就会被删除。如果您删除了整个 prefs 文件,请确保也删除该 precise.list 源文件,否则您的系统将尝试更新到最新的软件包集。此外,如果您决定稍后进行 dist-upgrade,则需要删除整个 prefs 文件,并且删除其他 sources.list 可能是一个好主意,因为优先级较高,升级将发现没有要更新的软件包。Apt 固定并不难,你只需要深入挖掘并进行实验。
n=
通过检查 可以找到 etc 的所有动词apt-cache policy
。这就是经验丰富的管理员对 apt 和 yum 大加赞赏的原因。您可以简洁地更新服务,并以干净、确定且可维护的方式使它们保持最新状态。
不再需要编译包。
我强烈建议您阅读整个手册页,熟悉概念,并阅读有关 apt pinning 的其他指南,然后再继续执行此建议。祝您好运,玩得开心!
答案2
您可以使用 apt-get install somepackage=someversion 在命令行上强制安装一个版本,但您不能要求安装 apt 所知道的存储库中没有的版本,这通常意味着您所使用的版本。
您可以尝试从 launchpad 手动下载 maverick deb 并安装它。有时这种方法可行,但有时它依赖于各种库的较新版本,因此无法安装。另一种选择是下载最新源代码并自行编译。
答案3
lucid 仅有 6.0.24 可用,并且不太可能发生变化。将 tomcat 等软件反向移植到旧版本的情况很少见。
但是您仍然可以使用 tomcat 二进制包运行最新的 tomcat。我正在使用它。