大家好,祝大家新年快乐。
最近,我从 debian backport 源构建了 nginx deb 包 v1.4.4,当然我已将其添加到 apt sources.list 中,一切进展顺利。
我的问题:Debian 会自动更新我从官方源亲自构建的软件包吗?我的意思是更新安全软件包。
更新:
今天我运行了apt-get update
一下apt-get -V upgrade
,检查了 debian 7 apt 的行为......得到了以下结果:
root@debian-lab:~/nginx-1.4.4-packages# apt-get -V upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
nginx-full (1.4.4-1~bpo70+1 => 1.4.4-1~bpo70+1)
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/464 kB of archives.
After this operation, 9,027 kB disk space will be freed.
Do you want to continue [Y/n]?
如你所见,apt 正在尝试从(1.4.4-1~bpo70+1 => 1.4.4-1~bpo70+1),这基本上是两个相同的版本,但是我安装的 deb 包在默认 nginx-full 中添加了自定义 nginx 模块,更新后,我的自定义模块全部消失并由标准 debian wheezy backport deb 替换。我已经从 debian backport 源构建了我的 nginx backport deb 包,并通过 backport 安装了 build-deb,但一些依赖项是从稳定版本自动安装的,这就是我从详细输出中看到的。
您能举个例子来帮助我防止这种情况发生吗?
更新
我尝试 apt pin 该包,但没有成功,下面是我得到的输出:
apt-cache policy nginx-full
nginx-full:
Installed: 1.4.4-1~bpo70+1
Candidate: 1.4.4-1~bpo70+1
Version table:
1.4.4-1~bpo70+1 0
100 http://ftp.uk.debian.org/debian/ wheezy-backports/main amd64 Packages
*** 1.4.4-1~bpo70+1 0
100 /var/lib/dpkg/status
1.2.1-2.2+wheezy2 0
500 http://ftp.uk.debian.org/debian/ wheezy/main amd64 Packages
500 http://security.debian.org/ wheezy/updates/main amd64 Packages
以下是 apt-cache 策略 nginx:
/etc/apt/preferences.d# apt-cache policy nginx
nginx:
Installed: 1.4.4-1~bpo70+1
Candidate: 1.4.4-1~bpo70+1
Package pin: 1.4.4-1~bpo70+1
Version table:
*** 1.4.4-1~bpo70+1 1001
100 http://ftp.uk.debian.org/debian/ wheezy-backports/main amd64 Packages
100 /var/lib/dpkg/status
1.2.1-2.2+wheezy2 1001
500 http://ftp.uk.debian.org/debian/ wheezy/main amd64 Packages
500 http://security.debian.org/ wheezy/updates/main amd64 Packages
但 apt 仍在尝试升级并替换它!!
Sources.list内容:
deb http://ftp.uk.debian.org/debian/ wheezy main
deb-src http://ftp.uk.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main
# wheezy-updates, previously known as 'volatile'
deb http://ftp.uk.debian.org/debian/ wheezy-updates main
deb-src http://ftp.uk.debian.org/debian/ wheezy-updates main
# Wheezy Backports repository
deb http://ftp.uk.debian.org/debian wheezy-backports main
deb-src http://ftp.uk.debian.org/debian wheezy-backports main
我曾尝试使用 apt pin 一次包名称为“nginx”,另一次使用 nginx-full。
但两者都未能保住包裹!!!
答案1
我建议你升级软件包的版本。APT 知道这两个软件包并不相同,并尝试从受信任的来源安装软件包。这dch -i
就是你所需要的,只需添加一些简短的描述并重建软件包。
您还可以使用不同的方式固定包:
Package: nginx-full
Pin: origin ""
Pin-Priority: 999
这将为本地安装的包提供更高的优先级。
如果存储库版本字符串取代了当前安装的版本,并且您没有任何固定和某个版本发布了,是的,如果您有正确的来源,apt 将从存储库安装软件包(希望是已经应用的补丁)。
答案2
如果您固定该软件包,apt-get 将不会尝试升级它。
要固定软件包,请在 /etc/apt/preferences.d 中创建一个文件,例如 /etc/apt/preferences.d/nginx
将其放入文件中:
Package: nginx
Pin: version 1.4.4-1~bpo70+1
Pin-Priority: 1001