Dr.*_*SMS 2 debian apt upgrade backports
并祝大家新年快乐..
最近我从 debian backport 源构建了 nginx deb 包 v1.4.4,当然我已经将它添加到 apt sources.list 并且一切顺利。
我已经跑apt-get update那么apt-get -V upgrade今天检查的debian如何贴切7会表现得..这是我得到了什么:
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]?
Run Code Online (Sandbox Code Playgroud)
如您所见,apt 正在尝试从(1.4.4-1~bpo70+1 => 1.4.4-1~bpo70+1)升级,这基本上是两个相同的版本,但我安装的 deb 包添加了自定义的 nginx 模块默认为 nginx-full,更新后,我的自定义模块都消失了,取而代之的是标准的 debian wheezy backport deb。但是从稳定版中自动安装了一些依赖项,这就是我从详细输出中看到的。
你能帮我举个例子来防止这种情况吗?我听说过固定,但它是我问题的答案吗?
更新
我试图固定包裹但没有奏效,这是我得到的输出:
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
Run Code Online (Sandbox Code Playgroud)
以下是 nginx 的 apt-cache 策略:
/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
Run Code Online (Sandbox Code Playgroud)
但仍然 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
Run Code Online (Sandbox Code Playgroud)
我试过一次 apt 固定包名 'nginx' 和另一次使用 nginx-full ..
但是两个都拿不住包裹!!!
为了避免出现问题,首先,我会建议你使用自定义(或以上)的版本号为您定制包,例如:1.4.4-1~bpo70+1-mrsms。这只是公平的,因为您的软件包与“官方”向后移植的版本不同。您可以debian/changelog在构建文件之前更改文件的版本号。
您可以测试版本比较dpkg(这里,gt代表“大于”,返回码是0表达式是否为真):
$ dpkg --compare-versions 1.4.4-1~bpo70+1-mrsms gt 1.4.4-1~bpo70+1
$ echo $?
Run Code Online (Sandbox Code Playgroud)
请小心,因为如果在在线存储库中找到更高版本,您的自定义包仍将升级。然后,我建议您使用固定来避免这种情况(请参阅参考资料man apt_preferences)。
您可以通过创建一个/etc/apt/preferences.d/nginx-full包含以下内容的文件来尝试此操作:
Package: nginx-full
Pin: version 1.4.4-1~bpo70+1-mrsms
Pin-Priority: 1001
Run Code Online (Sandbox Code Playgroud)
您还可以将软件包保持在当前安装状态,这非常有效,但不是很优雅(可能会在以后的升级中遇到麻烦):
# aptitude hold nginx-full
# echo "nginx-full" hold |dpkg --set-selections
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1248 次 |
| 最近记录: |