Debian 会更新我从其官方来源亲自构建的软件包吗?

Debian 会更新我从其官方来源亲自构建的软件包吗?

大家好,祝大家新年快乐。

最近,我从 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

相关内容