2023年8月14日 星期一

build apache http server 2.4.x rpm package on centos 7

目前系統上跑的是httpd-2.4.52,但在codeit上並沒有提供httpd-2.4.57讓我升版。

之前依習慣就自己下載tarball來編譯安裝,但這一次在做OpenSSH升版時想到可以用rpmbuild做rpm檔來裝。所以就想在httpd上也如法泡製。

1、下載檔案至rpmbuild的SOURCE目錄,我的目錄本來就有..可能之前就有玩過了..

為了保險,還是先做目錄:(先yum install rpm-build 然後還是要自己建目錄)

mkdir -p /root/rpmbuild/SOURCES

cd /root/rpmbuild/SOURCES

接著把檔案下載回來:

wget https://dlcdn.apache.org/httpd/httpd-2.4.57.tar.bz2

2、把apr及apr-util的rpm裝起來

3、把該裝的東西補一補:
yum install autoconf libuuid-devel lua-devel libxml2-devel wget rpm-build autoconf zlib-devel libselinux-devel libuuid-devel pcre-devel openldap-devel lua-devel libxml2-devel  openssl-devel apr-devel postgresql-devel mysql-devel sqlite-devel  unixODBC-devel nss-devel expat-devel mailcap libtool gcc-toolset-11-gcc
4、來做RPM檔,如果過程中有錯誤訊息,應該就是有東西沒有裝到。
像我在nm卡了一下,才發現是gcc-toolset-11-gcc沒有裝。
rpmbuild -tb httpd-2.4.57.tar.bz2
5、把rpm檔裝起來:
cd /root/rpmbuild/RPMS/x86_64
dnf localinstall httpd-2.4.57-1.x86_64.rpm httpd-devel-2.4.57-1.x86_64.rpm httpd-manual-2.4.57-1.x86_64.rpm
這樣就好了。

其實他也是用tarball幫你編譯安裝,但好處是你不用再考慮路徑的問題。
例如我在用tarball安裝時,bin檔如果沒有指定目錄,會裝在/usr/local/bin,但用rpm安裝,就會在/usr/bin 這樣日後要移除或升版的話,在管理時會輕鬆很多。






OpenSSH更新心得 (after upgrade couldn't auto login server without password)

 OpenSSH有資安問題,建議更新。


好,我更新。

更新之後,發現本來可以auto login的設備都不通了。

簡單,public key更新就好。

更新後也不行。

看了一下debug訊息,不接受RSA?合理,改用ed25519。

欸,還是不行。

試了一個小時,好吧,我先換回舊版......

剛看了說明,似乎用RSA key 長度 2048 以上可以,但...我累了。改天吧 XD

 
補充一下:在client看到的錯誤訊息是這個:no mutual signature algorithm

有趣的是,在server用/usr/sbin/sshd -d -p 2222 再從client測試竟然看不到明顯的錯誤訊息。

最後還是還是解決了,其實在client這樣下就可以了:

ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' myself@example.server.com

不過奇怪的是,在serer的sshd_config加PubkeyAcceptedKeyTypes +ssh-rsa 竟然沒有效...

原來是要在~/.ssh/config (只改該使用者) 或是在 /etc/ssh/ssh_config (改整台機器) 加上此設定才有效。

補充一下,用rpmbuild安裝輕鬆很多。
可以直接參考下文:
https://blog.csdn.net/m0_37682535/article/details/119254661