简短的引导
版本1.0
作者:Falko Timme
本文简要介绍了如何在Debian和Debian的发行版(如Ubuntu)上使用apt-pinning。 Apt-Pinning允许您在系统上使用多个版本(例如稳定
, 测试
和不稳定
),并指定何时安装从哪个版本的软件包。 这样,您可以运行基于稳定
版本的系统,但也可以从测试
或不稳定
(或第三方存储库)安装一些较新的软件包。
我不会保证这将为您工作!
1初步说明
我在这里使用Debian Lenny( stable
)系统。 我将在稳定
, 测试
和不稳定的
存储库(在撰写本文时)的三个不同版本的phpmyadmin软件包的基础上解释apt-pinning - 请参阅http://packages.debian.org/search ?keywords = phpmyadmin&searchon = names&suite = all&section = all :
-
lenny
(stable
):版本4:2.11.8.1-5 -
挤压
(测试
):版本4:3.1.2-2 -
sid
(unstable
):版本4:3.1.3-1
2我的sources.list
我将测试
和不稳定的
存储库添加到我的/etc/apt/sources.list
中,看起来如下所示:
vi /etc/apt/sources.list
deb http://volatile.debian.org/debian-volatile lenny/volatile main deb-src http://volatile.debian.org/debian-volatile lenny/volatile main ## Lenny / Stable deb http://ftp2.de.debian.org/debian/ lenny main deb-src http://ftp2.de.debian.org/debian/ lenny main deb http://security.debian.org/ lenny/updates main deb-src http://security.debian.org/ lenny/updates main ## Squeeze / Testing deb http://ftp2.de.debian.org/debian/ squeeze main deb-src http://ftp2.de.debian.org/debian/ squeeze main deb http://security.debian.org/ squeeze/updates main deb-src http://security.debian.org/ squeeze/updates main ## Sid / Unstable deb http://ftp2.de.debian.org/debian/ sid main deb-src http://ftp2.de.debian.org/debian/ sid main |
打开/etc/apt/apt.conf
...
vi /etc/apt/apt.conf
...并把以下行:
APT::Cache-Limit "100000000"; |
(否则,运行apt-get update
时可能会收到如下错误信息
:
E: Dynamic MMap ran out of room
)
然后跑
apt-get update
更新包数据库。
使用当前版本,apt会始终尝试安装最新版本的软件包,通常来自不稳定
或测试
- 这可能会导致混乱的系统。 通过apt-pinning,我们可以定义优先级,以便只有在没有这样的包稳定的情况下,
才能从不稳定
或测试中
安装软件包。
我们可以检查适当的优先级如下:
apt-cache policy
server1:~# apt-cache policy
Package files:
100 /var/lib/dpkg/status
release a=now
500 http://volatile.debian.org lenny/volatile/main Packages
release o=volatile.debian.org,a=stable,l=debian-volatile,c=main
origin volatile.debian.org
500 http://ftp2.de.debian.org sid/main Packages
release o=Debian,a=unstable,l=Debian,c=main
origin ftp2.de.debian.org
500 http://security.debian.org squeeze/updates/main Packages
release v=None,o=Debian,a=testing,l=Debian-Security,c=main
origin security.debian.org
500 http://ftp2.de.debian.org squeeze/main Packages
release o=Debian,a=testing,l=Debian,c=main
origin ftp2.de.debian.org
500 http://security.debian.org lenny/updates/main Packages
release v=5.0,o=Debian,a=stable,l=Debian-Security,c=main
origin security.debian.org
500 http://ftp2.de.debian.org lenny/main Packages
release v=5.0,o=Debian,a=stable,l=Debian,c=main
origin ftp2.de.debian.org
Pinned packages:
server1:~#
如您所见, 稳定
, 测试
和不稳定
都具有相同的优先级(500),这意味着将安装最新版本的软件包。 在我们的phpmyadmin
软件包的情况下,这是版本4:3.1.3-1,它来自unstable
:
apt-cache policy phpmyadmin
候选人:
行显示将要安装的版本:
server1:~# apt-cache policy phpmyadmin
phpmyadmin:
Installed: (none)
Candidate: 4:3.1.3-1
Version table:
4:3.1.3-1 0
500 http://ftp2.de.debian.org sid/main Packages
4:3.1.2-2 0
500 http://ftp2.de.debian.org squeeze/main Packages
4:2.11.8.1-5 0
500 http://ftp2.de.debian.org lenny/main Packages
server1:~#
这是如何定义优先级(见
man 5 apt_preferences
):
P> 1000
导致安装版本,即使这构成了软件包的降级 990 <P <= 1000
导致安装版本,即使它不是来自目标版本,除非安装的版本更新 500 <P <= 990
导致安装版本,除非有可用的属于目标版本的版本或安装的版本更新 100 <P <= 500
导致安装版本,除非有可用的版本属于某些其他分发版,或者安装的版本更新 0 <P <= 100
只有在没有安装版本的软件包时才会安装版本 P <0
防止安装版本