web-dev-qa-db-ja.com

14.04にnginx / developmentをインストールする方法は?

最近までppa:nginx/developmentを使用していましたが、突然14.04にそこからnginxバージョンをインストールできません。

https://launchpad.net/~nginx/+archive/ubuntu/development も述べています:

Ubuntuの以下のリリースは、ビルドの依存関係またはリリースの年齢のために解決できない問題のため、PPAでサポートされなくなりました。

  • トラスティ(14.04)

14.04でnginxの最新バージョンを入手するには、他にどのようなオプションが必要ですか?

少なくともhttp2サポートが必要です(一部のマシンで1.9および1.13を正常に実行しています)。

1
mark

参考までに、私はそのPPAのメンテナーなので、これはwhy 14.04に関連するすべての知識です。PPAではもうサポートされていません。

参考までに、「NGINX開発」は「開発」ではありません。開発ブランチは「メインライン」ブランチになったので、そのように参照する必要があります-PPAのnginx/developmentは、メインラインと呼ばれる前から保持されていた「古い」PPAであるためです。

私はそれを変更するつもりでしたが、それは大きな優先事項ではなかったので...


PPAがTrusty 14.04をサポートしないのはなぜですか?

新しいNGINXに必要な依存関係は14.04には存在せず、Ubuntu固有のバリアントではなく、DebianからDebianパッケージのみをビルドします。そのため、NGINXの14.04コードベースではNGINXの1つ以上のコードがビルドされないため、NGINXパッケージの14.04のビルドは失敗します。

ビルドログはこの失敗を示します:

cc -c -fPIC -g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC -D_FORTIFY_SOURCE=2 -DNDK_SET_VAR -I src/core -I src/event -I src/event/modules -I src/os/unix -I src/http/modules/Perl -I /<<PKGBUILDDIR>>/debian/modules/http-ndk/objs -I objs/addon/ndk -I /<<PKGBUILDDIR>>/debian/modules/http-ndk/src -I /<<PKGBUILDDIR>>/debian/modules/http-ndk/objs -I objs/addon/ndk -I /<<PKGBUILDDIR>>/debian/modules/nchan/src -I /<<PKGBUILDDIR>>/debian/modules/http-lua/src/api -I /usr/include/lua5.1 -I /<<PKGBUILDDIR>>/debian/modules/rtmp -I /usr/include/libxml2 -I objs -I src/http -I src/http/modules -I src/http/v2 -I /<<PKGBUILDDIR>>/debian/modules/http-ndk/src -I src/mail -I src/stream \
        -o objs/addon/store/store_common.o \
        /<<PKGBUILDDIR>>/debian/modules/nchan/src/store/store_common.c
make[3]: *** No rule to make target `/<<PKGBUILDDIR>>/debian/modules/nchan/src/hiredis/hiredis.c', needed by `objs/addon/hiredis/hiredis.o'.  Stop.

... PPAの14.04のすべてのアーキテクチャビルド全体(1.15.0のビルドログ: AMD64arm64armhfi386 、および ppc64el )。正確なビルドの失敗は、nginx-extrasに同梱され、多くの個人が使用しているサードパーティのモジュールにあります。安定したブランチでも同じ障害が発生するため、このビルドエラーはNGINXのメインラインブランチに固有のものではありません。そして、このビルドの失敗onlyは14.04で発生します。

このモジュールは、どのような状況でも14.04でビルドされません。そのため、14.04ビルドは完了できません。 drop Trustyのパッケージからこの機能を使用することもできますが、それにより、リリース間でパッケージが一貫性なしになります。

このため、NGINX PPAから14.04をサポート対象から削除しました。


PPAには以前の1.13.xビルドが組み込まれていましたが、なぜそれが機能しないのですか?

PPAが1.13を持たなくなったのは、定期的に(通常、毎年7月中旬から下旬に毎年ほぼ同じ時期に)PPAを調べてクリーンアップし、「サポート対象外」のパッケージのバージョンを削除するためです。 PPA」リリース。

これが、PPAのパッケージを行ってクリーンアップしたため、PPAが14.04で機能しなくなった理由です。

(同じ理由でPreciseビルドを終了しなければならなかった2014年にPreciseで同様の問題がありました:古いライブラリは新しいNGINXとモジュール要件をビルドしませんでした)


PPAの代替:NGINXアップストリームリポジトリを使用する

これにはnginx-extrasやLuaモジュールなどのサードパーティのモジュールは含まれません-必要な場合は運が悪いです。

14.04で更新されたNGINXを取得するには、tryを使用して NGINXアップストリームリポジトリをインストールするための指示 を使用できますが、これを行うには他のすべてのNGINXを削除する必要があります最初にパッケージ化し、Luaなどのサードパーティモジュールを使用していないことを確認します


「本当の問題」、または「新しいNGINXに14.04を使用する代わりに、新しいUbuntuに実際にアップグレードする必要がある理由」:

あなたが本当に行くべき主な理由は、 14.04を使用する代わりに新しいUbuntu にアップグレードすることです。14.04の HTTP/2には必要なものがすべてない真のHTTP/2サポートに必要な機能-OpenSSLライブラリからのALPNサポート。

HTTP/2では、現代で真に機能するためにALPNサポートが必要です。これは、Ubuntu 14.04のOpenSSLライブラリの notavailable です。 HTTP/2(NPN)の他のモードは多くのブラウザーでサポートされていないため、多くのブラウザーなどはNPN HTTP/2をサポートしていないため、実際には多くのライブラリからHTTP/2サポートを取得できません。

これを修正する唯一のアプローチは、システムを少なくとも16.04にアップグレードすることです。これらはHTTP/2サポートを有効にするのに十分な新しいOpenSSLを提供し、新しいビルドを使用する機能も提供しますライブラリが新しくなり、新しいNGINXとDebianのパッケージをコンパイルするためのビルドの依存関係が存在するため、NGINXの.

4
Thomas Ward