我目前正在使用以下命令自行编译 nginx 包:
sudo apt-get build-dep nginx-extras
sudo apt-get install build-essential
apt-get source nginx-extras
cd nginx
<add some custom module here>
dpkg-buildpackage -us -uc
sudo dpkg -i nginx-extras_1.10.0-0ubuntu0.16.04.4_amd64.deb
sudo apt-mark hold nginx-extras
我这样做是因为我需要安装一些自定义模块 - 但是运行此命令后,apt-get upgrade
指示 nginx 有一个升级,如果apt-mark hold
没有生效,它将应用该升级。我以为我刚刚编译了最新版本,那么它为什么要升级呢?
我在这里遇到的问题是我使用 apticron,它每天都会向我发送一封电子邮件,指出我有未升级的软件包,而事实上我已经拥有最新的软件包。
编辑:一些额外的输出:
$ sudo apt-get upgrade --simulate
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
nginx-extras
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst nginx-extras [1.10.0-0ubuntu0.16.04.4] (1.10.0-0ubuntu0.16.04.4 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [amd64])
Conf nginx-extras (1.10.0-0ubuntu0.16.04.4 Ubuntu:16.04/xenial-updates, Ubuntu:16.04/xenial-security [amd64])
和
$ sudo apt-cache policy nginx-extras
nginx-extras:
Installed: 1.10.0-0ubuntu0.16.04.4
Candidate: 1.10.0-0ubuntu0.16.04.4
Version table:
1.10.0-0ubuntu0.16.04.4 500
500 http://mirrors.digitalocean.com/ubuntu xenial-updates/universe amd64 Packages
500 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages
*** 1.10.0-0ubuntu0.16.04.4 100
100 /var/lib/dpkg/status
1.9.15-0ubuntu1 500
500 http://mirrors.digitalocean.com/ubuntu xenial/universe amd64 Packages
答案1
您可以使用 apt 首选项覆盖检查。例如(根据需要更改版本):在/etc/apt/preferences.d/nginx-custom
Package: nginx
Pin: release n=yakkety
Pin-Priority: -1
# This will cause nginx to be ignored and use the locally compiled version only
我使用此技术进行ffmpeg
与您的需要类似的自定义编译nginx
。