//CentOS7 x64 / VMware ESXi 6.0 インストールおよびメンテナンスメモ ※ このメモは「自分はこういう手順で行った」というだけですので、無条件で信用したりしないように。 ※ かなり長期にわたって更新している文書なので、バージョンが古い/語尾の不統一等は気にしないこと。^^; ※ 試行錯誤の挙句の果ての結果だけ抽出しているので、いくらでも漏れがあり得ると思います。再検証で修正するまでに見つけたら教えてください。 ※ 特に、例えばどこかでldconfigしてるが記載がない、とか、、、。 ※ 転んだら泣いてもいいけど他人の所為にしないことw ※ このメモはSolarisInstallMemo.txtを元に書いているので、消し残しとか沢山あると思います。許して、、、 0. 準備 ・ そもそもSolaris10に見切りをつけてCentOS7に切り替えたのが遅過ぎて、切り替えたらあっという間にEOL。騙し騙し使うメモ。 ・ (まあそれまでSol10使ってたぐらいだからそれに比べたら、、、) ・ CentOS7のインストールイメージ (多分もうこれ以上新しいのは出ないでしょう) https://vault.centos.org/7.9.2009/isos/x86_64/CentOS-7-x86_64-Everything-2009.iso ・ インターネット接続環境 ・ VMware インストールイメージ ※ VMwareは無償版がちょっと復活しましたけど、業務に使えないライセンスですよね。 ※ 業務だと今後新規ではVMwareを使うのは危険だと思えるようになっちゃいましたよね、、、。 ※ 今までなら無償版によるシンパが社内営業を頑張っていましたけど、もう無理。私は放棄。 ※ 某社で大規模オンプレクラウドのリプレース案件がありましたけど、VMwareは俎上にも上らず。しーらないっと。 1. VMwareのインストール ・ 略 ※ わたしはもちろん既存のESXi上に作りました。 2. VM作成 ・ 「RHEL7(64bit)」として作成。 ・ ウチのESXiは6.0なので「互換対象:ESXi 6.0以降」(使える最新)。 今更5.5とかで使う予定無いし、ウチは業務外使用かというと微妙だし。 ・ CPUx4 mem 8GB HDD 512G thin ※ てきとーです。GUIの予定は無いのでメモリ少な目。1Gでも動くはず。 ※ 「メモリホットプラグ」を有効化しておくと、ダイナミックにメモリを追加出来て楽しい。こいつのデメリットは不明。ググると「メモリを追加するときにVMがクラッシュすることがある」らしいが、、、なら設定だけして足さなきゃいいやんw ※ 個人用なのでThin Provisioningとします。拡張の結果物理がパンクするとVMは止まるので、そこは考えてw ・ 「ファームウェア」を「EFI」に、「起動遅延時間」を5000mSに。これらは趣味。 ・ 「次回起動時に、強制的にEFIセットアップ画面に入る」をON。これを利用してゆっくりISOをマウントするのが好み。 3. OS入れ-part1 ※ ルートパーティションとデータパーティションの2つで構成する想定。/と/home、、、かな。 ・ まず「Remote Consoleを開く」。VMRC画面で電源ONし、青いEFI画面が出たところで、VMの外側のメニューから「CentOS-7-x86_64-Everything-2009.iso」をマウントし、「Boot normally」でエンター。 ※ やり方は多々あるが、この方法がumount忘れを防げて好き。 ・ 起動時の選択項目はデフォで2つ目の「」になっている。チェックしてもいいが、isoファイルをチェックする意味は無いと思うので、1つ目の「」で「(Enter)」。 ・ 「(名前忘れた)」画面で「日本語」「日本語(日本)」を選択して「続行(C)」。 ※ 右上のキーボードがusになっているが、ここで日本語を選ぶと次の画面で自動的にjpになる。 ・ 「ユーザーの設定」で「rootパスワード」または「ユーザの作成」(ただし「管理者」として作成)のどちらかを選んで設定する。 ※ 私はユーザの作成のみとしました。なお、以下「hoge」としますw ・ 「インストール先」を選び、特に設定の希望が無ければそのまま「完了」する。 ・ 「ソフトウェアの選択」で、「サーバー(GUI使用)」ではなく「サーバー」を選んで下記パッケージを選択する。 ※ これは「わたしはこうした」というだけ。なんでもいい。なおCentOS7の頃にrpm更新が遅くてやきもきしていたので、このサーバは出来る限りソースからインストールするつもりで設定している。もちろん強制する気はありませんw * デバッグツール * ゲストエージェント (VMwareゲストなので) * パフォーマンスツール * コンソールインターネット * 開発ツール (gcc必須) * ヘッドレス管理 * システムツール ・ 「言語サポート」を選び、「English」「English (United States)」を選ぶ ※ 趣味です ・ 「ネットワークとホスト名」を選び、dhcpから固定IPに、またホスト名を適当に付ける ※ ご自由に ・ 「セキュリティープロファイル」を選び、「セキュリティーポリシーの適用」をoffにする ※ 不自由なんだもん、、、w ・ 「日付と時刻」を選び、ローカルのntpサーバを指定する ※ ご自由に ・ 「インストールの開始」を押し、終わるのを待つ。 4. OS入れ-part2 ※ 、、、と、その前に、、、環境によっては、という設定 ・ SSLデコーダ付きproxy対応 ・ proxy設定 # vim /etc/yum/yum.conf 末尾に「proxy=http://192.168.0.2:3128」など # vim /etc/wgetrc 末尾に「http_proxy=http://192.168.0.2:3128」「https_proxy=http://192.168.0.2:3128」など ・ SSLデコーダの付いたproxy対応 # cd /etc/pki/ca-trust/source/anchors/ # vim proxy.pem proxyの証明書を入れる # update-ca-trust ・ これでもまだ足りなかったら、、、頑張れw ※ 「openssl 3.0.16」の項も参照 ---------- ・ SELinuxを止める。 # vim /etc/selinux/config SELINUX=disabled # sync -f ; sync -f ; sync -f # reboot ※ もちろん有効のままでもいいですが、、、頑張ってくださいね。 ・ /usr/local/srcをいまのうちにズラす ※ これも趣味です。ホントはインストール時にやるのが正しいと思います。でもインストール時のパラメータをあまり変更したくない、、、。 ※ なお、変なディレクトリをズラすと起動時に/homeマウント前に見つからなくて起動しなくなったりするので注意w # mkdir /home/usrlocalsrc # chmod 775 /home/usrlocalsrc # chgrp wheel /home/usrlocalsrc # cd /usr/local # mv src orig-src # ln -s /home/usrlocalsrc src # cd src # mkdir archives # chmod 775 archives # chgrp wheel archives ・ yumを使えるようにする(と言いきっていいのか?) # vim /etc/yum.repos.d/CentOS-Base.repo * [{base,updates,extra,centosplus}] の各mirrorlistをコメントアウトして、baseurlのURIの「mirror」を「vault」に変える。 ・ 今後に備えてPKG_CONFIG_PATHを設定する # vim /etc/profile.d/pkgconfig.sh export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig ・ OS入れ、おしまい。 5. 変態趣味を行う - その1 ※ Solarisの時に思ったが、パッケージのアップデートをして貰えなくなったのなら、sourceからインストールすればヨシ!、、、何はともあれgccとopensslを入れ替える。 ※※※ 良い子は絶対に真似してはいけません。 ※※※ ・ 基本的にオブジェクトは /usr/local/bin /usr/local/sbin /usr/local/lib64 に入れる。昨今32bitアプリと共存してmultilibをきちんとやろうとは今更思わんので、lib64じゃなくてlibでもいいんですが。   コンパイルは /usr/local/src/ディレクトリ で行う。またsourceそのものは /usr/local/src/archives に入れることにする。 ・ というわけで、 $ sudo sh -c "(echo /usr/local/lib64; echo /usr/lib64) > /etc/ld.so.conf.d/usr-local-lib64.conf" $ sudo ldconfig $ sudo sh -c "echo export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig > /etc/profile.d/pkgconfig.sh" ・ はじめるまえに /var/run/xxx は再起動で消えちゃう仕様です (CnetOS7は/var/runの替わりに/runを使う仕様だが、実体はおんなじ) 。 /etc/tmpfiles.d/配下に「xxx.conf」を作り、そこに「どんなものが欲しいか」を書く。 例えば、/etc/tmpfiles.d/openarc.conf を配置する。 #Type Path Mode UID GID Age Argument D /var/run/openarc 0700 openarc openarc - (1行目はコメント) ディレクトリ /var/run/openarc を 0700/openarc:openarcとして作られる。これを忘れると泣く、、、。 詳しくは「man tmpfiles.d」参照。 ・ とりあえず(カーネルは置いといて)前述のように、ソフトは自力で入れないとセキュリティアップデートの面倒を見てもらえません。 ノーサポートのOSを使う以上頑張りませう。 ※ 以下、archives=/usr/local/src/archives、PWD=/usr/local/src(たぶん) ・ gcc 15.1 https://gcc.gnu.org/ ※ 純正GCCは4.8.5で、これではbindもコンパイルできない。昨今C++11が普通なので新しくする。 ※ 一気にコンパイルできないので、一旦9.5.0を経由する。また必要モジュールもなるったけsourceから入れる。 ・ gmp 6.3.0 https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz $ tar xvf archives/gmp-6.3.0.tar.xz $ cd gmp-6.3.0 $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo ldconfig ・ mpfr 4.2.2 https://www.mpfr.org/mpfr-current/mpfr-4.2.2.tar.xz $ tar xvf archives/mpfr-4.2.2.tar.xz $ cd mpfr-4.2.2 $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo ldconfig ・ libunistring 1.3 https://ftp.gnu.org/gnu/libunistring/libunistring-1.3.tar.gz $ tar xvf archives/libunistring-1.3.tar.gz $ cd libunistring-1.3 $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo ldconfig ・ Tcl 9.0.1 http://prdownloads.sourceforge.net/tcl/tcl9.0.1-src.tar.gz $ tar xvf archives/tcl9.0.1-src.tar.gz ※ gccのためには結果として必要無いぽい。 $ cd tcl9.0.1/unix $ ./configure --libdir=/usr/local/lib64 $ make $ make test $ sudo make install $ sudo ldconfig ・ expect 5.45.4 https://jaist.dl.sourceforge.net/project/expect/Expect/5.45.4/expect5.45.4.tar.gz $ tar xvf archives/expect5.45.4.tar.gz $ cd expect5.45.4 ※ メゲました!orz 古いソフトなんでTcl9で動かない、、、降参、、、。上のTclも要らん、、、8.5入ってるし。 $ sudo yum install expect ※ 5.45が落ちてくる。 ・ dejagnu 1.6.3 https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz $ tar xvf archives/dejagnu-1.6.3.tar.gz $ cd dejagnu-1.6.3 $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo ldconfig ・ libffi 3.4.5 https://github.com/libffi/libffi/releases/download/v3.4.5/libffi-3.4.5.tar.gz $ tar xvf archives/libffi-3.4.5.tar.gz $ cd libffi-3.4.5 $ ./configure --libdir=/usr/local/lib64 $ make $ make check ※ とりあえずエラー無視。 $ sudo make install $ sudo ldconfig ・ bdw-gc 8.2.8 https://github.com/ivmai/bdwgc/releases/download/v8.2.8/gc-8.2.8.tar.gz $ tar xvf archives/gc-8.2.8.tar.gz $ cd gc-8.2.8 $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo ldconfig ・ isl 0.27 https://libisl.sourceforge.io/isl-0.27.tar.bz2 $ tar xvf archives/isl-0.27.tar.bz2 $ cd isl-0.27 $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo mv /usr/local/lib64/libisl.so.23.4.0-gdb.py /usr/share/gdb/auto-load/usr/lib64 ※ ldconfigが変なワーニングを出すようになっちゃうので、その対策。 ※ gdbをソースからインストールしていれば /usr/local/share/gdb/auto-load/usr/lib64/ がいいんでしょうけど。 $ sudo ldconfig ・ guile 2.2.7 https://ftp.gnu.org/gnu/guile/guile-2.2.7.tar.xz $ tar xvf archives/guile-2.2.7.tar.xz $ cd guile-2.2.7 $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo mv /usr/local/lib64/libguile-2.2.so.1.4.2-gdb.scm /usr/share/gdb/auto-load/usr/lib64/ $ sudo ldconfig ・ autogen 5.18.16 https://ftp.gnu.org/gnu/autogen/rel5.18.16/autogen-5.18.16.tar.xz $ tar xvf archives/autogen-5.18.16.tar.xz $ cd autogen-5.18.16 $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo ldconfig ・ gcc 9.5.0 https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-9.5.0/gcc-9.5.0.tar.xz $ tar xvf archives/gcc-9.5.0.tar.xz $ mkdir gccobj-9.5.0 $ cd gccobj-9.5.0 $ ../gcc-9.5.0/configure --enable-bootstrap --libdir=/usr/local/lib64 --disable-multilib --enable-languages=c,c++ $ make bootstrap ※ 時間かかるよー $ sudo make install $ sudo mv /usr/local/lib64/libstdc++.so.6.0.28-gdb.py /usr/share/gdb/auto-load/usr/lib64 $ sudo ldconfig ・ いよいよ gcc 15.1.0 https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-15.1.0/gcc-15.1.0.tar.xz $ tar xvf archives/gcc-15.1.0.tar.xz $ mkdir gccobj-15.1.0 $ cd gccobj-15.1.0 $ ../gcc-15.1.0/configure --enable-bootstrap --libdir=/usr/local/lib64 --disable-multilib ※ もう32bitアプリ要らないよね? $ make bootstrap ※ こいつも遅いけど、make checkの比じゃない。 $ make check $ sudo make install $ sudo mv /usr/local/lib64/libstdc++.so.6.0.34-gdb.py /usr/share/gdb/auto-load/usr/lib64 $ sudo ldconfig ・ elfutils 0.193 https://sourceware.org/elfutils/ftp/0.193/elfutils-0.193.tar.bz2 $ tar xvf archives/elfutils-0.193.tar.bz2 $ cd elfutils-0.193 $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo ldconfig ・ systemtap 5.3 https://sourceware.org/systemtap/ftp/releases/systemtap-5.3.tar.gz $ tar xvf archives/systemtap-5.3.tar.gz $ cd systemtap-5.3 $ ./configure --libdir=/usr/local/lib64 ../systemtap-5.3/configure --enable-bootstrap --libdir=/usr/local/lib64 --disable-multilib $ make $ make check $ sudo make install $ sudo mv /usr/local/lib64/libguile-2.2.so.1.4.2-gdb.scm /usr/share/gdb/auto-load/usr/lib64/ $ sudo ldconfig ・ gcc 4.8.5を抜く $ sudo yum remove gcc gcc おしまい! ・ openssl 3.0.16 https://github.com/openssl/openssl/releases/download/openssl-3.0.16/openssl-3.0.16.tar.gz ※ 次のLTSは3.5系だが、Apacheのmod_sslが3.5に対応したという記述を発見できなかったので、とりあえず3.0系。 ※ まあOpenSSL側はマイナーバージョンアップはAPI/ABI互換を保証しているわけですが、、、ほんまかいな。 ※ ただし2.4.64でしれっとOpenSSL 3.5使用時のBugFixに触れられているため、一応使えていたらしい。 $ tar xvf archives/openssl-3.0.16.tar.gz $ cd openssl-3.0.16 $ ./Configure --prefix=/usr/local --libdir=lib64 enable-md2 zlib memo: perl configdata.pm --dump $ make $ make tests $ sudo make install $ sudo ldconfig ※ CentOS7の標準機能(update-ca-trustとか)を使うために小細工 # cd /usr/local # mv ssl ssl_installed # ln -s /etc/pki/tls ssl ※ これでふつーにググって出て来る「CentOS7でのルートCAの追加方法」とかが使えるようになる、、、筈。 ※ 標準で入っている「1.0.2k-26.el7_9」を抜く気は無いので、そのまま使える、、、といいなあ。 ☆ って、そもそもの目的が https://github.com/openssl/openssl/releases/download/openssl-3.5.4/openssl-3.5.4.tar.gz を落とすためだったりw ☆ なお3.0と同手順で3.5も動きそう。→動いた。 ・ zlib 1.3.1 https://www.zlib.net/zlib-1.3.1.tar.xz $ tar xvf archives/zlib-1.3.1.tar.xz $ cd zlib-1.3.1 $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo ldconfig / ※ libxcryptとlibxcrypt-compatの入れ替えは当面考えない。めんどくさいし ^^; ・ perl modules CPAN> install Math::Float CPAN> install Mail::DKIM::ARC::Signer ・ Python 3.10.19 https://www.python.org/ftp/python/3.10.19/Python-3.10.19.tar.xz # ./configure --enable-optimizations # make # make test # make altinstall # update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 # update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 2 # update-alternatives --config python3 ※ python3.10にする # pip3.10 install pytest # pip3.10 install test_perl_sign # pip3.10 install dkimpy # pip3.10 install authres ・ openarc-1.3.0 https://github.com/flowerysong/OpenARC より $ CFLAGS="-std=gnu11 -lresolv" ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo ldconfig 6. 変態趣味 - その2 ※ opensshを入れ替える。 ・ pam-devel インストール $ sudo yum install pam-devel * telnetdとtelnetを念のため入れる。継続使用は、、、お好きにどーぞ。 $ sudo yum install telnet $ sudo yum install telnet-server $ sudo firewall-cmd --zone=public --add-service=telnet ※ --permanentには登録していないので、再起動したら穴は塞がる想定。 $ sudo systemctl start telnet.socket ※ enableはしていないので、再起動したらtelnet.socketは死んで繋がらなくなる設定。 * telnetで入り直す。 / ・ 先にopensshとlibsshを抜く / ※※※ 良い子は絶対に真似してはいけません。 ※※※ / # rpm -ev --nodeps libssh-0.10.4-13.el9.x86_64 / # rpm -ev libssh-config-0.10.4-13.el9.noarch / # rpm -ev openssh-server-8.7p1-38.el9_4.4.x86_64 / # rpm -ev --nodeps openssh-clients-8.7p1-38.el9_4.4.x86_64 / # rpm -ev openssh-8.7p1-38.el9_4.4.x86_64 ・ cmake 4.0.3 https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3.tar.gz $ tar xvf archives/cmake-4.0.3.tar.gz $ cd cmake-4.0.3 $ ./bootstrap $ make $ make test $ sudo make install ・ libssh 0.11.1 https://www.libssh.org/files/0.11/libssh-0.11.1.tar.xz $ tar xvf archives/libssh-0.11.1.tar.xz $ cd libssh-0.11.1 $ mkdir build $ cd build $ cmake .. $ make $ sudo make install $ sudo ldconfig ・ openssh 10.0p2 https://www.ftp.ne.jp/pub/OpenBSD/OpenSSH/portable/openssh-10.0p2.tar.gz $ tar xvf archives/openssh-10.0p2.tar.gz $ cd openssh-10.0p1 ※ なぜか10.0p2の中身のディレクトリは10.0p1。 $ ./configure --with-pam --with-selinux --with-kerberos5=/usr --libdir=/usr/local/lib64 --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/lib64 じゃなくて、、、 $ ./configure --with-pam --with-selinux --with-kerberos5=/usr --libdir=/usr/local/lib64 --with-ssl-dir=/usr/local/lib64 ※ 「--sysconfdir=/etc/ssh」は見直しの余地あり。rpmとかいぢるとconfig消されちゃうことがあるし。 →やっぱりデフォルトの/usr/local/etcにする。 ※ もうDSA使えない、、、古いローカル鯖はtelnetで入るしかない、、、って問題無いのかw ※ なぜ「--with-ssl-dir=/usr/local/lib64」が要るのかイマイチよくわかっていません。configureのバグちゃうやろか。 →10.2p1では不要だった。バグだったんちゃうんか? というわけで、、、 $ ./configure --with-pam --with-selinux --with-kerberos5=/usr --libdir=/usr/local/lib64 すっきり。 $ make $ TEST_SSH_UNSAFE_PERMISSIONS=1 make tests /* ・ make installに先立ち、、、 */ /* $ sudo chmod 600 /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key /etc/ssh/ssh_host_rsa_key */ $ sudo make install $ sudo ldconfig ・ opensshを抜く ※※※ 良い子は絶対に真似してはいけません。 ※※※ / # rpm -ev --nodeps libssh-0.10.4-13.el9.x86_64 / # rpm -ev libssh-config-0.10.4-13.el9.noarch / # rpm -ev openssh-server-7.4p1-23.el7_9.x86_64 / # rpm -ev --nodeps openssh-clients-7.4p1-23.el7_9.x86_64 / # rpm -ev openssh-7.4p1-23.el7_9.x86_64 $ sudo yum remove openssh-server $ sudo cp -p /etc/ssh/sshd_config.rpmsave /etc/ssh/sshd_config $ sudo rpm -ev --nodeps openssh-clients-7.4p1-23.el7_9.x86_64 $ sudo yum remove openssh $ sudo vim /etc/tmpfiles.d/sshd.conf Type Path Mode UID GID Age Argument d /run/sshd 0755 root root - $ sudo vim /etc/ssh/sshd_config (変更点だけ) UsePAM yes PidFile /run/sshd/sshd.pid Subsystem sftp /usr/local/libexec/sftp-server -l VERBOSE $ sudo mkdir /run/sshd # cd /etc/pam.d # vim sshd ----- ここから ----- #%PAM-1.0 auth required pam_sepermit.so auth substack password-auth auth include postlogin # Used with polkit to reauthorize users in remote sessions -auth optional pam_reauthorize.so prepare account required pam_nologin.so account include password-auth password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session required pam_namespace.so session optional pam_keyinit.so force revoke session include password-auth session include postlogin # Used with polkit to reauthorize users in remote sessions -session optional pam_reauthorize.so prepare ----- ここまで ----- ※ テスト $ sudo /usr/local/sbin/sshd ※ これで外から入れればOK $ sudo pkill sshd * systemd準備 $ sudo vim /usr/local/lib/systemd/system/sshdg.service ※ sshd「g」なのは純正と区別するため。 ----- ここから ----- [Unit] Description=OpenSSH server daemon Getemonized Documentation=man:sshd(8) man:sshd_config(5) After=network.target #Wants=sshd-keygeng.target [Service] Type=notify EnvironmentFile=-/etc/sysconfig/sshd #PIDFile=/run/sshd/sshd.pid ExecStart=/usr/local/sbin/sshd -D $OPTIONS ExecStop=/bin/kill -HUP $MAINPID KillMode=process Restart=no #RestartSec=42s User=root Group=root [Install] WantedBy=multi-user.target ----- ここまで ----- $ sudo ln -s /usr/local/lib/systemd/system/sshdg.service /usr/lib/systemd/system/sshdg.service $ sudo vim /etc/sysconfig/sshd ----- ここから ----- # Configuration file for the sshd service. # The server keys are automatically generated if they are missing. # To change the automatic creation uncomment and change the appropriate # line. Accepted key types are: DSA RSA ECDSA ED25519. # The default is "RSA ECDSA ED25519" # AUTOCREATE_SERVER_KEYS="" # AUTOCREATE_SERVER_KEYS="RSA ECDSA ED25519" # Do not change this option unless you have hardware random # generator and you REALLY know what you are doing SSH_USE_STRONG_RNG=0 # SSH_USE_STRONG_RNG=1 ---- ここまで ----- ※ これ意味無いかも * sshd起動 $ sudo enable sshdg --now ・ telnet止める等(止めなくてもいいですがw) # sync -f ; sync -f ; sync -f # reboot 5. 「私が」sourceから入れようと思っているパッケージを削除 ※ セキュリティ上updateが必要だと思ったパッケージを入れ替え。Solaris10のときは、もうコンパイルできないソフトだらけになったので諦めました。 / ・ postfix / # dnf remove postfix / ※ ばさーり ※ あーでもないこーでもないやり過ぎて、上から順番にこの手順でやってもうまく行かなくなってます、、、。 ※ そのうち直すかもしれないけど期待しないで下さい、、、。 wget --no-check-certificate https://xmlsoft.org/sources/libxslt-1.1.34.tar.gz ※ makeできなかった、、、 ・ bind pip3 install Jinja2 sudo ./bin/tests/system/ifconfig.sh up ・まずjemalloc 5.3.0 wget https://github.com/jemalloc/jemalloc/releases/download/5.3.0/jemalloc-5.3.0.tar.bz2 https://github.com/jemalloc/jemalloc/releases/download/4.5.0/jemalloc-4.5.0.tar.bz2 (yumで落ちて来る3.6と、コンパイルした4.3では、作ったbindが落ちた。5.3.0だと平気だった) $ ./configure --libdir=/usr/local/lib64 $ make $ make check $ sudo make install $ sudo ldconfig #timeouts # PyTest # TextCase # TestSuite yum install python2-devel ./configure --libdir=/usr/local/lib64 make check ・libxml2 https://download.gnome.org/sources/libxml2/2.14/libxml2-2.14.4.tar.xz ./configure --libdir=/usr/local/lib64 ・psl https://github.com/rockdaboot/libpsl/releases/download/0.21.5/libpsl-0.21.5.tar.gz ./configure --libdir=/usr/local/lib64 ・curl https://curl.se/download/curl-8.14.1.tar.xz ./configure --libdir=/usr/local/lib64 --with-openssl ・libnghttp2 https://github.com/nghttp2/nghttp2/releases/download/v1.66.0/nghttp2-1.66.0.tar.xz ./configure --libdir=/usr/local/lib64 ・oniguruma https://github.com/kkos/oniguruma/releases/download/v6.9.10/onig-6.9.10.tar.gz ./configure --libdir=/usr/local/lib64 ・php https://www.php.net/distributions/php-8.4.10.tar.xz ./configure --libdir=/usr/local/lib64 --enable-fpm --with-fpm-systemd ./config.nice.q ./configure --libdir=/usr/local/lib64 --enable-fpm --with-fpm-systemd --with-zlib --with-bz2 --enable-exif --with-openssl --with-mysqli --without-sqlite3 --without-pdo-sqlite make test ・RoundCubeMail vim program/lib/Roundcube/rcube_utils.php $variant = defined('INTL_IDNA_VARIANT_UTS46') ? INTL_IDNA_VARIANT_UTS46 : null; ・ExifTool https://exiftool.org/Image-ExifTool-13.32.tar.gz perl Makefile.PL make cpan[1]> install Time::Piece make test make install ・autoconf https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz ./configure --libdir=/usr/local/lib64 make make check make install ldconfig ・nasm https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.xz ./configure --libdir=/usr/local/lib64 make make test (damedame) ・ffmpeg https://ffmpeg.org/releases/ffmpeg-7.1.1.tar.xz ./configure --libdir=/usr/local/lib64 make make check make install ldconfig CFLAGS=-std=gnu17 CFLAGS=-std=gnu11 CFLAGS=-std=gnu17 cmake --preset=release -DCMAKE_POSITION_INDEPENDENT_CODE=ON .. n. その他ソフト入れ ※ なるったけtarballからインストールする。git cloneとかでsourceを持ってくることは出来るだけ避ける。やりだしたらキリがない。 ※ 重大な脆弱性の発見されたパッケージは、rpmを抜いて作り直す(これが目的)。 ※ 目標はできるだけ ./configure --libdir=/usr/local/lib64 make (make check or make testなど) make install と、全てデフォルト設定でインストールできる環境にしたいなあ。 まあ、、、そう簡単にはいかないわけですが。 ★ 基本的に、いったん「./configure」を行った後であれば「make distclean」で 再度ゼロから「./configure」を行うことができる。 ★ 何にせよ、sourceは「tar xvf ソースファイル名.tar.gz」で展開する。 ※ 何をするにしても、Perl(CPAN)と、きっとPython(pip)とRubyあたりは要るんだろうなあ。 ※ この手の言語系はmakeするかどうか悩みどころ。ここらへんやcoreutilや、、、とかやりだしたら、最後にゃカーネルはおろか自ディストロ、、、 ※ まぁカーネルに致命的な何かが見つかったら、素直にCentOS7を諦めます、、、。 ・ pcre/pcre2-devel # dnf install pcre-devel pcre2-devel ・ CPAN # dnf install cpan ・ apache-2.4.4 * apacheは2.4からaprが別梱包になったため、事前にインストールしなければならない。 cd /usr/local/src/apr-1.4.6 ./configure make make check make install rehash * もひとつ。apr-utilも。 cd /usr/local/src/apr-util-1.5.1 ./configure --with-apr=/usr/local/apr make make check make install rehash * 本番。 cd /usr/local/src/httpd-2.4.4 ※ パラメータ、特に前半は我が家都合なので気にしないで下さい。 ./configure --enable-expires --enable-headers --enable-info --enable-mime-magic --enable-rewrite --enable-usertrack --enable-vhost-alias --enable-dav --enable-so --enable-ssl --with-ssl=/usr/local/ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr make make install ※ Apache 2.2から2.4への変更は、ここからが地獄だった^^; ・ まず、とりあえずmod_perl。 http://www.momo-i.org/blog/2012/03/01/apache24x%E3%81%AE%E5%A4%96%E9%83%A8%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB.html にお世話になりました。で、mod_perl-2.0.7を組み込み。 ・ mod_sslでlibssl.soおよびlibcrypto.soが読めなかった。でもLD_LIBRARY_PATHに/usr/local/ssl/libを足すのもどうかと思い、とりあえず ln -s /usr/local/ssl/lib/libssl.so.x.x.x /usr/local/lib/libssl.so.x.x.x ln -s /usr/local/ssl/lib/libcrypto.so.x.x.x /usr/local/lib/libcrypto.so.x.x.x で誤魔化した。最低限これは何とかしたい。 ・ とりあえずhttpd.confに下記を足して誤魔化した。configの再作成は後日。 ----- ここから ----- LoadModule dir_module modules/mod_dir.so LoadModule mime_module modules/mod_mime.so LoadModule cgid_module modules/mod_cgid.so LoadModule unixd_module modules/mod_unixd.so LoadModule access_compat_module modules/mod_access_compat.so LoadModule log_config_module modules/mod_log_config.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule mime_module modules/mod_mime.so LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule ssl_module modules/mod_ssl.so LoadModule socache_dbm_module modules/mod_socache_dbm.so LoadModule setenvif_module modules/mod_setenvif.so AddDefaultCharset Shift_JIS ----- ここまで ----- ※ 上記は「ウチでは」なのは言うまでもない、、、。 ・ 忘れないうちに、モジュールを足した理由をメモ。 dir_module index.htmlをデフォルトで表示させる cgid_module cgi を動かす unixd_module /etc/passwd 関連処理をさせる access_compat_module Allow / Deny / Order を処理させる log_config_module CustomLog を処理させる userdir_module ~username を処理させる alias_module Alias / ScriptAlias を処理させる mime_module AddHandler とか AddType とか dav_module (WebDAVですが、、、今はもう使っていないからconfigから消すまでの間だけ、、、) dav_fs_module "Unknown DAV provider: filesystem" authz_core_module authn_core_module auth_basic_module authn_file_module authz_user_module この5つで .htpasswdとかが使えるようになる。 ※ めも ・ authn = authentication = 認証 ・ authz = authorization = 承認 ・ auth_basic : BASIC認証を行う ・ authn_core : AuthName / AuthType ・ authn_file : AuthUserFile ・ autnz_core : Require ・ authz_user : Require user いやまぁ確かに機能を細分化したらこうなるわなあ、、、。 ssl_module SSLを処理させるが、、、なんか文法が結構変わっている。 "SSLMutex file:/path/to/filename"が使えなかったりとか。 socache_dbm_module SSLSessionCache に dbm を使っているために足した setenvif_module BrowserMatch を処理させる。iPhoneテストサイトがあったんだった、、、。 AddDefaultCharset Shift_JIS www.getemono.comのトップページ(旧IIS風w)が文字化けしたため。 ・ apache-2.4.23 * 久しぶりにupdateしてみる。openssl-1.0.2jも入れたし。 * aprとapr-utilと、ついでにpcreもupdateしてみる。 * まずapr。 http://apr.apache.org/download.cgi より。 cd /usr/local/src/apr-1.5.2 ./configure make ※ checkを通すためにlo0にちょっとの間IPv6を喋ってもらう。 ifconfig lo0 inet6 plumb ifconfig lo0 inet6 ::1 up make check ※ またIPv6を寝させる。 ifconfig lo0 inet6 ::1 down ifconfig lo0 inet6 unplumb make install * 次にapr-util。 同じく、 http://apr.apache.org/download.cgi より。 cd /usr/local/src/apr-util-1.5.4 ./configure --with-apr=/usr/local/apr make make check make install * pcre (apacheに関係しているとは知りませんでした) http://www.pcre.org/ より。 cd /usr/local/src/pcre-8.39 ./configure --enable-utf --with-gnu-ld make make check make install * 本体のコンパイル。 ./configure --enable-expires --enable-headers --enable-info --enable-mime-magic --enable-rewrite --enable-usertrack --enable-vhost-alias --enable-dav --enable-so --enable-ssl --with-ssl=/usr/local/ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-pcre --with-mpm=worker ※ こちらでもOK? ./configure --enable-expires --enable-headers --enable-info --enable-mime-magic --enable-rewrite --enable-usertrack --enable-vhost-alias --enable-dav --enable-so --enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-pcre --with-mpm=worker ※ 「--with-mpm=worker」を足さないと動かなかった。なぜ、、、。 make make install * configとかは前に2.4.4にした際に苦労したので、今回はそのまま。 ・ apache-2.4.33 * とりあえず目的はOpenSSLの1.1.0hにすること。 * 殆ど2.4.23と変わらないが、OpenSSLは1.1.0になってから /usr/local/ssl をやめて /usr/local に入るようになったので、賢いapacheが自動的に /usr/local/ssl から拾ってくれるのを阻止するため、 --with-ssl=/usr/local を加える。そうすると1.1.0を使ってくれる。 ・ apache-2.4.46 * 2.4.33と同手順で成功 ・ Apacheも入ったことだし、そろそろLD_LIBRARY_PATHに相当するものを設定する。 cd /etc/ld.so.conf.d vim usr-local-lib64.conf /usr/local/lib64 /usr/lib64 /usr/local/lib /usr/lib ldconfig ※ (どこかにも書きましたが)今時もうmultilibは使わんでしょ。なので原則lib64ですがlibに64bitライブラリが入っていても動くように。 ・ glibc-2.42 ※ これ入れたかったんだ~w ※ なお、禁断の「/usr/local/lib64」に入れました。真似して壊れても知りませんw ※ 2.43は(多分)入れられない。構造体open_howの構造を変えちゃったもんだからいろんな人がコンパイルできなくなっているらしい、、、 wget https://ftp.gnu.org/gnu/glibc/glibc-2.42.tar.xz tar xvf glibc-2.42.tar.gz cd glibc-2.42 mkdir build cd build ../configure --prefix=/usr/local --libdir=/usr/local/lib64 --disable-sanity-checks make make check ※ いくつかのエラーは目を瞑るwww sudo make install reboot ※ 手順を見て判るように、この通り真似してやって動かなくなっても知りませんよ、、、私は結局まだ解決できていません、、、 ・ cmake-4.0.3 https://cmake.org/ より。 cd /usr/local/src/cmake-4.0.3 ***** まだまとまっていません *****