Opened 3 years ago

Last modified 11 months ago

#2233 new enhancement

Packages for Debian Bullseye should include 32-bit x86 binaries

Reported by: Laurence 'GreenReaper' Parry Owned by:
Priority: minor Milestone:
Component: nginx-package Version: 1.19.x
Keywords: Debian Bullsye i386 32-bit Cc: Laurence 'GreenReaper' Parry
uname -a: Linux PPXQ001 5.10.46 #1 Fri Jul 30 15:47:20 UTC 2021 i686 GNU/Linux [Debian-based kernel]
nginx -V: nginx version: nginx/1.21.1
built by gcc 8.3.0 (Debian 8.3.0-6)
built with OpenSSL 1.1.1d 10 Sep 2019 (running with OpenSSL 1.1.1k 25 Mar 2021)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.21.1/debian/debuild-base/nginx-1.21.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

Description

Binary packages are not being built for 32-bit x86 Bullseye, while they are for Buster. It'd be nice if they were.

We use the 32-bit distribution for improved memory efficiency when tracking large numbers of proxy_cached thumbnails on small (~1GB RAM) SSD-based VMs (64-bit is ~40% larger; this impacts nginx keys_zone as well as inode cache).

Unlike #1777, i386 (or rather i686) is a supported platform for Debian Bullseye. While slowly declining in use vs. amd64, popcon shows i386 as being 36 times more popular than arm64, which is a supported nginx binary platform.

#2217 didn't mention 32-bit. It did mention AMI availability. However, it seems these weren't available for 32-bit Buster, yet still has builds by Sergey (sb). Perhaps he has a multiarch setup which could be duplicated without much trouble?

Attempting to use a Bullseye-specific package results in it offering the distribution's own version. This may be problematic if it triggers when newer versions of nginx arrive, especially if the user is upgrading to Bullseye and misses the notices.

# apt update
...
Get:7 http://nginx.org/packages/mainline/debian bullseye InRelease [2,857 B]
...
N: Repository 'http://mirror.us.leaseweb.net/debian bullseye InRelease' changed its 'Version' value from '' to '11.0'
N: Repository 'http://mirror.us.leaseweb.net/debian bullseye InRelease' changed its 'Suite' value from 'testing' to 'stable'
...
N: Skipping acquire of configured file 'nginx/binary-i386/Packages' as repository 'http://nginx.org/packages/mainline/debian bullseye InRelease' doesn't support architecture 'i386'

# apt-get reinstall nginx/bullseye
...
Selected version '1.18.0-6.1' (Debian:11.0/stable [all]) for 'nginx'
Selected version '1.18.0-6.1' (Debian:11.0/stable [i386]) for 'nginx-core' because of 'nginx'
...

The following additional packages will be installed:
  geoip-database libgeoip1 libnginx-mod-http-geoip libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libnginx-mod-stream-geoip libxslt1.1 nginx-common nginx-core
Suggested packages:
  geoip-bin fcgiwrap nginx-doc ssl-cert
The following NEW packages will be installed:
  geoip-database libgeoip1 libnginx-mod-http-geoip libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libnginx-mod-stream-geoip libxslt1.1 nginx-common nginx-core
The following packages will be DOWNGRADED:
  nginx
0 upgraded, 11 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Need to get 4,844 kB of archives.
After this operation, 10.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] n

Change History (2)

comment:1 by thresh, 3 years ago

Indeed, we provide no 32bit binaries for new platforms anymore - this is due to the fact we've moved off to AWS to host our packaging infrastructure, migrating away from the older system which is planned to be turned off in full.

Multiarch and cross-compiling sadly wouldnt work to build NGINX.

The only option for now is to rebuild our packages on a 32bit machine, either via http://nginx.org/en/linux_packages.html#sourcepackages or by apt source/dpkg-buildpackage combo with deb-src repos configured.

comment:2 by Laurence 'GreenReaper' Parry, 3 years ago

Well, I can do this. It's a hassle, but little more than the kernels I compile there. I had to build nginx before to enable TLS 1.3, back when Jessie's OpenSSL did not support that. After removing unnecessary modules it is also ~350kb smaller, so there's some benefit.

I suspect not all users will be able to follow along, but perhaps if they stick with the buster build, that may continue to work for them for as long as it's built; and maybe once it is not, either there will be another solution, or they will have migrated to something else. Or they can switch to Debian's own build (though that has various issues, and missed 1.20 for this release).

Thank you for the background on the packaging infrastructure changes.

Note: See TracTickets for help on using tickets.