lessの最新版では--header
オプションが使えるということでソースからビルドしてみた。
ビルド環境はUBI8のコンテナ内で実行してコンテナイメージを作成。
lessコマンドをコンテナで実行、またはコンテナからビルド済みバイナリを取得できるようにする。
GitHubリポジトリは下記。ビルド方法や実行方法は下記リポジトリのREADMEを参照。
ビルド時のエラー対応
configureでエラー
[root@a0b329988b80 less]# cat config.log | grep -A10 -B10 "terminal" | #endif | char regcmp (); | int | main () | { | return regcmp (); | ; | return 0; | } configure:4030: result: no configure:4040: checking for working terminal libraries configure:4322: result: Cannot find terminal libraries - configure failed ## ---------------- ## ## Cache variables. ## ## ---------------- ## ac_cv_c_compiler_gnu=yes ac_cv_env_CC_set= ac_cv_env_CC_value= ac_cv_env_CFLAGS_set= ac_cv_env_CFLAGS_value=
原因: lncursesw
が無い
[root@a0b329988b80 less]# cat config.log | grep -A10 -B10 "lncursesw"
| #endif
| char initscr ();
| int
| main ()
| {
| return initscr ();
| ;
| return 0;
| }
configure:3762: result: no
configure:3770: checking for initscr in -lncursesw
configure:3795: gcc -o conftest -g -O2 conftest.c -lncursesw >&5
/usr/bin/ld: cannot find -lncursesw
collect2: error: ld returned 1 exit status
configure:3795: $? = 1
configure: failed program was:
| / confdefs.h /
| #define PACKAGE_NAME "less"
| #define PACKAGE_TARNAME "less"
| #define PACKAGE_VERSION "1"
| #define PACKAGE_STRING "less 1"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
対処: `ncurses-devel`をインストールする ## コンテナビルド時にエラーで止まる `make -f Makefile.aut dist`実行後、gpgのエラーが出てコンテナビルドが止まる。
<--- snip ---> Creating release/less-594/594.tar.gz Signing release/less-594/less-594.tar.gz gpg: directory '/root/.gnupg' created gpg: keybox '/root/.gnupg/pubring.kbx' created gpg: no default secret key: No secret key gpg: signing failed: No secret key make: *** [Makefile.aut:130: dist] Error 2 <--- /snip --->
対処: エラーが出てもコンテナのビルドが止まらないようにする。 - Containerfileの`RUN`の該当行を修正: `&& make -f Makefile.aut dist || true \` ### 参考URL - lessのコンパイル方法: [compiling - How to compile LESS pager? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/468215/how-to-compile-less-pager) - configureエラーの対処: [Less configuration fails...](https://www.linuxquestions.org/questions/linux-from-scratch-13/less-configuration-fails-573380/) - コンテナのビルドエラーを無視する: [docker - Dockerfile build - possible to ignore error? - Stack Overflow](https://stackoverflow.com/questions/30716937/dockerfile-build-possible-to-ignore-error/30717108)