Chap-7. Linux で apache 等をソースからコンパイル

Sec-1.Salix 及び Slackware
Sec-2.Debian-stable、Ubuntu 及びその派生
Sec-3.Redhat クローン(AlmaLinux)
Sec-4.Arch派生(Manjaro、ArcoLinuxなど)
Sec-6.openSUSE (tw) 及びその派生
Sec-7.Clear Linux


1)チェックするディストリ(つまりお試しするディストリ)の選定は、基本的に Chap-26-2.の考え方をベースにして、インストールが容易なものを選んでいます。
2)カーネルコンパイルについては最近はチェックしていません。記述を無くしました。
上記1の考え方をとる場合、自分でコンパイルする必要性はほぼ無いです。(コンパイルオプションを変えて自分が必要な機能を追加する時くらい)
上記2)のようなことを言うと、そもそもメルサバ、ウェブサバ、言語処理系だってコンパイルする必要はないだろうって突っ込まれそうですが、笑。
 2022-10-31ご注意:postfix のコンパイルが例によってカーネル番号チェックでちょいと変な動きです。
カーネル6系列に対して「は? linux-6.0.x ? そんなん知らんわ」とか言って途中で止まってしまいます。
以前、FreeBSD-9.X から 10.0 に上がったときも同じことがありました。7〜8年前くらい。
単に番号チェックでひっかかっているだけでコンパイルは問題なく出来ます。なので対応はその時と同じ。
カーネル5.19系列でまず $ make -f Makefile.init makefiles  をやっておいてそれを tar 玉にします。
それを今やっているカーネル6系列のマシンに持ってきて展開。以降、$ make -j N  # make install でコンパイル・インストール出来ます。
これは postfix あるあるです。


Sec-1. Salix 及び Slackware

*** 最初は Salix ***

(1)----- Postfix -----

(準備)

# slapt-get -i libnsl

(コンパイル・インストール作業)

$ make -f Makefile.init makefiles AUXLIBS=-lnsl
$ make -j N (N は利用CPUの可能スレッド数よりちょい少なめを適宜選ぶ)
# make install

(インストール後の作業)

 特に無し。main.cf、aliases 等を編集するだけです。


(2)----- Apache -----

(準備)

apr、apr-util を事前にインストールします。source は apache のサイトにあります。2022-10 時点の最新版は apr-1.7.0、apr-util-1.6.1 です。
apr、apr-util のソースを展開し、その中で

(apr)
$ ./configure --prefix=hoge1/apr-1.7.0
$ make -j n
$ make install

(apr-util)
$ ./configure --prefix=hoge2/apr-util-1.6.1  --with-apr=hoge1/apr-1.7.0
$ make -j n
$ make install

(コンパイル・インストール作業)

$ ./configure --prefix=hoge3/httpd-2.4.54 --with-apr=hoge1/apr-1.7.0 --with-apr-util=hoge2/apr-util-1.6.1
$ make -j n
$ make install

(インストール後の作業)

特にありません。httpd.conf を適宜編集するだけです。


(3)----- guile -----

(準備)

特に無し。

(コンパイル・インストール作業)

$ configure --prefix=hogehoge
$ make -j N  
# make install

(インストール後の作業)

シェアードオブジェクトの所在をOSに登録する必要があります。
たいてい、/etc/ld.so.conf.d/ ディレクトリの中にライブラリの場所を書いたファイルを入れます。後は ldconfig やるだけ。


(4)----- Lua -----

(準備)

Makefile 中でインストールする場所を指定します。また src ディレクトリ中の makefile をいじって -fPICオプションをつけます。
つける場所は大抵、MYCFLAGS

(コンパイル・インストール作業)

$ make -j n linux AUXLIBS=-ltermcap
# make install

(インストール後の作業)

特に無し。


 Salix は apr、apr-util の扱いにクセがあります。



*** 次は Slackware ***

(1)----- Postfix -----

(準備)

特になし

(コンパイル・インストール作業)

$ make -f Makefile.init makefiles
$ make -j N (N は利用CPUの可能スレッド数よりちょい少なめを適宜選ぶ)
# make install

(インストール後の作業)

 特に無し。


(2)----- Apache -----

(準備)

特になし

(コンパイル・インストール作業)

$ ./configure --prefix=hoge3/httpd-2.4.54
$ make -j n
$ make install

(インストール後の作業)

特にありません。httpd.conf を適宜編集するだけです。


(3)----- guile -----

(準備)

特に無し。

(コンパイル・インストール作業)

$ configure --prefix=hogehoge
$ make -j N  
# make install

(インストール後の作業)

シェアードオブジェクトの所在をOSに登録する必要があります。
たいてい、/etc/ld.so.conf.d/ ディレクトリの中にライブラリの場所を書いたファイルを入れます。後は ldconfig やるだけ。


(4)----- Lua -----

(準備)

Makefile 中でインストールする場所を指定します。また src ディレクトリ中の makefile をいじって -fPICオプションをつけます。
つける場所は大抵、MYCFLAGS

(コンパイル・インストール作業)

$ make -j n linux AUXLIBS=-ltermcap
# make install

(インストール後の作業)

特に無し。


Slackware は Arch と並んでフリーソフトウェアのコンパイルが楽です。





Sec-2. Debian-stable、Ubuntu 及びその派生

(1)----- Postfix -----

(準備)
バークレーのデータベースライブラリ libdb-dev と m4 プリプロセッサをインストールしておきます。

# apt install libdb-dev m4

(コンパイル・インストール作業)

$ make -f Makefile.init makefiles
$ make -j N (N は利用CPUの可能スレッド数よりちょい少なめを適宜選ぶ)
# make install

(インストール後の作業)

/usr/lib/senemail がある場合はこれを rm します。
また、別のメルサバ(exim4 等)が動いている場合は、Postfix の動作確認する前に止めておきます。

動作確認するとき、mail コマンドが入っていないことがあります。GNUのソース(mailutils-3.7.tar.gz 等)を持ってきて自分でコンパイル・インストールするか、あるいはパッケージに mailutils、mailx、s-nail 等というのがあればどれかをインストールします。それで大抵 mail コマンドが入ります。
ただし、ディストリによっては postfix まで同時に入れる場合があります。そうなると自分でコンパイル・インストールしたものを上書きされそうです。要注意です。

(2)----- Apache -----

(準備)

いくつかのパッケージをインストールします。

# apt install libapr1-dev libaprutil1-dev libpcre3-dev libssl-dev

(コンパイル・インストール作業)

$ configure --prefix=hogehoge
$ make  -j N
# make install

(インストール後の作業)

特にありません。httpd.conf を適宜編集するだけです。


(3)----- guile -----

(準備)

 以下のように、いくつかのパッケージをインストールします。

# apt  install  libltdl-dev  libgmp3-dev  libunistring-dev  libgc-dev  libffi-dev  pkg-config

(コンパイル・インストール作業)

$ configure --prefix=hogehoge
$ make -j N  
# make install

(インストール後の作業)

シェアードオブジェクトの所在をOSに登録する必要があります。
たいてい、/etc/ld.so.conf.d/ ディレクトリの中にライブラリの場所を書いたファイルを入れます。後は ldconfig やるだけ。


(4)----- Lua -----

(準備)

 libreadline-dev パッケージをインストールします。

Makefile 中でインストールする場所を指定します。また src ディレクトリ中の makefile をいじって -fPICオプションをつけます。
つける場所は大抵、MYCFLAGS

(コンパイル・インストール作業)

$ make linux AUXLIBS=-ltermcap
# make install

(インストール後の作業)

特になにも無かったと思います。




Sec-3. Redhat クローン(AlmaLinux)

AlmaLinux 8 の場合は /etc/yum.repos.d/ の中の PowerTools で enabled=1 としておきます。
AlmaLinux 9 の場合は almaLinux-crb.repo で enabled=1 としておきます。
CUI インストールの場合は redhat-rpm-config を入れる必要があるかもしれません。
コンパイルするために入れるパッケージは以下の具合です。

(Postfix)
# dnf install libdb-devel  libnsl2-devel m4
(m4 は cui インストールしたときは必要かもしれません。GUIインストールしたときは自動的に入っていると思います)

(Apache)
# dnf install apr-devel  apr-util-devel pcre-devel openssl-devel

(guile)
# dnf install libtool-ltdl-devel  gmp-devel  libffi-devel libunistring-devel  gc-devel

(Lua)
# dnf install readline-devel


コンパイル・インストール作業・インストール後の作業
ほぼDebian と同じです。

ver9 では mail コマンドを s-nail パッケージを入れて導入しました。





Sec-4. Arch派生(Manjaro、ArcoLinuxなど) 

コンパイルするために入れるパッケージはほぼありません。

(postfix)
無し。(注:もしかしたら m4 を入れるかも)

(apache)
もしかしたら # pacman -S apr apr-util pcre
かもしれません。

(guile)
無し。(注:もしかしたら pkgconf を入れるかも)

(lua)
無し

以前はpostfix コンパイルのために  /usr/include/resolv.h を修正する必要がありました。
2022ー06現在、その修正は必要無くなっています。

コンパイル・インストール作業・インストール後の作業
ほぼDebian と同じです。

2022-10
 Postfix あるあるですが、カーネルが 6.0.x に上がったのでカーネルチェックで引っかかって最初の
make -f Makefile.init makefiles
が通りません。単にカーネル番号に対して「はぁ? 6.0.x・・・そんなん知らんわ。ヤメタ!」って言ってるだけ。
この場合は、カーネルが 5.19.x の Arch 系の入った SSD を残しておいて、最初の make だけそこでやります。
その後、それを tar 玉にして 6.0.x の方に持って来れば以降のコンパイルが出来ます。それで問題無いです。


Arch 本体については Chap-33. Sec-5. に補足しています。インストール時期によってはここに上げた Arch 派生と少しやり方が違うと思います。





Sec-5. Mageia

 このセクションは削除しました。





Sec-6. openSUSE (tw) 及びその派生 (Gecko 等)

 コンパイルするために必要なパッケージは、以下のとおりです。

(postfix)
# zypper install gcc-c++ libdb-4_8-devel m4 libnsl-devel

(apache)
# zypper install libopenssl-devel apr-devel apr-util-devel pcre-devel

(guile)
# zypper install libtool gmp-devel libunistring-devel libffi-devel gc-devel

(lua)
# zypper install readline-devel

なお、以前はpostfix をコンパイルする際、最初の make は

$ make -f Makefile.init makfiles  AUXLIBS="-lnsl"

としていました。2022年時点では AUXLIBS="-lnsl" のオプションは要らなくなっています。
また lua のコンパイルは普通に

$ make linux AUXLIBS=-ltermcap

で良くなったようです。
結局、全部普通になった、笑。





Sec-7. Clear Linux

 コンパイルするために必要なパッケージは、以下のとおりです。

(postfix)
desktop-dev, storage-utils-dev

(apache)
devpkg-apr-util, devpkg-pcre, devpkg-openssl

(guile)
devpkg-gc

(lua)
なし

パッケージをインストールするコマンドは # swupd bundle-add hoge なんて感じで、打鍵量が多いです。
コンパイル及びその後の作業は Slackware、Debian などと基本的に同じです。







**** 今更役にたちませんが前の原稿です ****
一つ前の原稿  www.quinos.net/topic7/topic7.02.html
二つ前の原稿  www.quinos.net/topic7/topic7.01.html