ayc*_*ter 280 versions patch repository
我想使用提供的一些指定包(名称和版本)设置一个新的虚拟机。
例如2.2.20-1ubuntu1具有所有依赖项的apache2 版本。即使服务器上有此软件包的新版本,也应安装此软件包。
该解决方案必须与多个(n)“设置”一起工作/扩展。另一个虚拟机可能需要旧版本的 apache2。
我目前知道一些安装确切软件包的可能性,但不能很好地扩展:
*.deb手动将所有需要的内容复制到每个虚拟机并输入:dpkg -i... -> 可以工作,但很容易出错。(手动脚本等)我的问题可能被标记为补丁管理,但我不想将我的包更新到当前版本。我的目标是安装旧包。
fad*_*der 283
您可以使用apt-get安装包的特定版本,只要它位于 apt 知道的存档中。从apt-get联机帮助页:
可以通过在包名称后面加上等号和要选择的包版本来选择安装包的特定版本。这将导致定位并选择该版本进行安装。或者,可以通过在包名称后面加一个斜杠和发行版的版本或存档名称(稳定、冻结、不稳定)来选择特定的发行版。
例如,你可以这样做:
sudo apt-get install apache2=2.2.20-1ubuntu1
Run Code Online (Sandbox Code Playgroud)
请注意,在这种情况下,您可能需要自己进行一些依赖项解析,但是如果有任何问题,apt-get 会告诉您是什么导致了这些问题。在我的 11.10 系统上,我需要执行以下操作才能使其正常工作:
sudo apt-get install apache2=2.2.20-1ubuntu1 \
apache2.2-common=2.2.20-1ubuntu1 \
apache2.2-bin=2.2.20-1ubuntu1 \
apache2-mpm-worker=2.2.20-1ubuntu1
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式显示可用的软件包版本:
sudo apt list -a apache2
Run Code Online (Sandbox Code Playgroud)
ken*_*orb 83
要检查哪些版本可用,您可以通过以下方式检查:
sudo apt-cache madison ^apache2
Run Code Online (Sandbox Code Playgroud)
如果不起作用,请考虑sudo apt-get update在更新包列表之前运行。
然后复制版本或使用以下语法:
sudo apt-get install apache2=2.2.\*
Run Code Online (Sandbox Code Playgroud)
要检查您安装了哪个版本,请运行:
dpkg -l 'apache2*' | grep ^i
Run Code Online (Sandbox Code Playgroud)
如果版本信息被截断,请尝试:
COLUMNS=100 dpkg -l <packageName>
Run Code Online (Sandbox Code Playgroud)
小智 24
我将使用系列中的其他方便的版本控制命令来扩展早期的答案apt。要查看哪些版本可用,请运行apt-cache policy:
# apt-cache policy apache2
apache2:
Installed: (none)
Candidate: 2.4.7-1ubuntu4.5
Version table:
2.4.10-1ubuntu1.1~ubuntu14.04.1 0
100 http://us.archive.ubuntu.com/ubuntu/ trusty-backports/main amd64 Packages
2.4.7-1ubuntu4.5 0
500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
2.4.7-1ubuntu4 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
Run Code Online (Sandbox Code Playgroud)
然后,如其他地方所述,使用以下命令安装特定版本apt-get:
# apt-get install apache2=2.4.7-1ubuntu4.5
...
Run Code Online (Sandbox Code Playgroud)
您现在可以通过apt-cache policy再次运行来查看已安装的版本:
# apt-cache policy apache2
apache2:
Installed: 2.4.7-1ubuntu4.5
Candidate: 2.4.7-1ubuntu4.5
Version table:
2.4.10-1ubuntu1.1~ubuntu14.04.1 0
100 http://us.archive.ubuntu.com/ubuntu/ trusty-backports/main amd64 Packages
*** 2.4.7-1ubuntu4.5 0
500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
100 /var/lib/dpkg/status
2.4.7-1ubuntu4 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
Run Code Online (Sandbox Code Playgroud)
如果您不希望在更新时安装较新版本,请使用以下命令固定软件包apt-mark:
# apt-mark hold apache2
apache2 set on hold.
Run Code Online (Sandbox Code Playgroud)
假设新版本的 apache2 已添加到包索引中,并且您的机器已与apt-get update. 下次运行时你会看到这个apt-get upgrade:
# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
apache2
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Run Code Online (Sandbox Code Playgroud)
正如 psusi 解释的那样,旧版本不会保存在 ubuntu 存储库中,但显然您仍然可以在启动板上找到它们。所以,你去(用你的 ubuntu 版本和架构替换 trusty 和 amd64):
https://launchpad.net/ubuntu/trusty/amd64/apache2
并选择您想要的版本。然后将 deb 作为文件下载并安装:
dpkg -i apache2_2.4.7-1ubuntu4.20_amd64.deb
Run Code Online (Sandbox Code Playgroud)
再次,将文件名替换为您的文件。如果您必须降级许多软件包,这会变得乏味,但如果您绝望,这总比没有好。
实际上,这是不可能的,因为旧版本未保存在存档中,因此除非您在某处放置了旧版本的副本,否则无法安装它。您应该首先问自己为什么要安装旧版本。在稳定版本上,发布新版本的主要原因是为了纠正安全漏洞,您不想运行易受攻击的服务器,对吗?
| 归档时间: |
|
| 查看次数: |
415151 次 |
| 最近记录: |