![我怎样才能使 apt-pin 稳定?](https://linux22.com/image/574665/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E4%BD%BF%20apt-pin%20%E7%A8%B3%E5%AE%9A%EF%BC%9F.png)
安装后不久我改变了主意,对于这个特定的系统,我更愿意使用稳定版而不是测试版。不幸的是,我目前有旧测试版的软件包。我需要强制降级才能让它们回到紧缩轨道,同时保留一两个(加上依赖项)的测试版本。遗憾的是我的首选项文件与其他文件无法很好地兼容。我尝试了 、 等的许多变version n=
体version a=
。
bash# cat /etc/apt/preferences.d/pinstable
Package: *
Pin: release a=testing
Pin-Priority: -10
Package: *
Pin: release a=stable
Pin-Priority: 1010
我已将默认版本设置为稳定版本:
bash# cat /etc/apt/preferences.d/apt.conf.d/99release
APT::Default-Release "stable";
下面是一个使用具有几个可能版本的随机包的示例:
bash# apt-cache policy libapache2-mod-php5
libapache2-mod-php5:
Installed: 5.3.6-13
Candidate: 5.3.6-13
Version table:
5.3.9-1 0
-10 http://mirror.rit.edu/debian/ testing/main i386 Packages
*** 5.3.6-13 0
100 /var/lib/dpkg/status
5.3.3-7+squeeze7 0
990 http://security.debian.org/ squeeze/updates/main i386 Packages
5.3.3-7+squeeze3 0
990 http://mirror.rit.edu/debian/ squeeze/main i386 Packages
为什么压缩版本的优先级不是 1010?
答案1
这里的问题是您的/etc/apt/apt.conf.d/99release
文件。
If the target release has been specified then APT uses the following
algorithm to set the priorities of the versions of a package. Assign:
priority 990
to the versions that are not installed and belong to the target
release.
似乎 APT 中提到的明确版本将覆盖任何 pin 设置。我设置了一个测试系统,使用类似的99release
文件和pinstable
文件,我看到的值与 apt-cache 中的完全相同。但如果我删除该99release
文件,就会得到这个。
# apt-cache policy libapache2-mod-php5
libapache2-mod-php5:
Installed: (none)
Candidate: 5.3.3-7+squeeze8
Version table:
5.3.3-7+squeeze8 0
1010 http://security.debian.org/ squeeze/updates/main amd64 Packages
5.3.3-7+squeeze3 0
1010 http://ftp.us.debian.org/debian/ squeeze/main amd64 Packages