總結:經過兩天的研究,終于解決了問題,特來記錄以下,心情有些不能自已,真是學無止境!
一、問題的引入:
操作:mail發送郵件失敗
結果:找不到libmysqlclient.so.18
二、問題的分析
剛開始有點懵逼,跟mysql怎麼扯上關系,這個後續再講,既然找不到此檔案--->
分析1:開始思考是不是特定目錄中沒有此檔案?
于是在系統中找此檔案(下面是硬碟查找,比較慢,但是最準确!)
find / -name libmysqlclient* ---->稍微模糊一點的查詢(用到統配符!)
結果:發現果然沒有libmysqlclient.so.18,但是卻有libmysqlclient.so.20(圖檔略)
--------------------------------------------分割線1--------------------------------------------------------------------------
分析2:在虛拟機測試發現可以發送郵件(很納悶),發現有libmysqlclient.so.18,libmysqlclient.so.20是怎麼産生的?
原因:把系統自帶的mariadb-libs-5.5.35-1.el7.x86_64解除安裝了,安裝mysql最新版(libmysqlclient.so.20),導緻mail指令找不到libmysqlclient.so.18有關
嘗試1:
(1) 通過scp把相應的libmysqlclient.so.18檔案複制過來(/usr/lib64/mysql)
(2) ldconfig -v | grep mysql --->檢視mysql有關的庫的所在位置---->當時未操作此步驟(無從得之)
(3) mail -s “title” kiosk ---->發現此時沒有錯誤(上面的問題解決了),但是郵件沒有發送出去,/var/log/maillog也沒有相應的資訊!
在此過程中:引申出檔案庫(後續報道)的相關問題---->ldconfig的含義!條條道路通羅馬,還是度娘給力(差點想放棄!)
嘗試2:靈感來源
(1)在編譯的MYSQL目錄中找到相應的軟體包mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
特點:該rpm包提供了必要的libmysqlclient.so.18檔案等,向下相容!
查詢與mysql有關的程式包:rpm -qa |grep mysql --->發現沒有此包
(2)安裝軟體包mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
安裝前:預查詢該rpm提供的安裝檔案(知道幫我們預設幹了啥)
rpm -pql mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
(3)安裝
rpm -ivh mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
(4)測試
mail -s "title" kiosk ------>發現此時沒有錯誤,但是郵件沒有發送出去,/var/log/maillog也沒有相應的資訊!
補充:重新開機了mysqld服務也沒有作用!
(5)補充 rpm -qf mysql-x86_64.conf
mysql-community-libs-5.7.23-1.el7.x86_64(最新的)
mysql-community-libs-compat-5.7.23-1.el7.x86_64(相容的)
----------------------------------------------------------------------------------------------------------------------
分析3:開始轉換思路,往大的方面思考--->度娘linux學習-mail發送郵件(mail不能發郵件)
關鍵的一句話:mail發送郵件,預設調用的是sendmail
(1) 測試是否有此服務---> systemctl start sendmail.service
結果:Failed to start sendmail.service: Unit not found.----->系統就沒有安裝此服務!
(2) 安裝---->先挂載---->為了解決依賴性問題---->通過yum安裝
yum install -y sendmail
(1/2):procmail-3.22-35.el7.x86_64.rpm ----->依賴
(2/2): sendmail-8.14.7-4.el7.x86_64.rpm ----->目标
(3) 檢視狀态----->systemctl status sendmail.service
提示資訊:
● sendmail.service - Sendmail Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/sendmail.service; enabled; vendor preset: disabled)
Active: inactive (dead)
(4)開機自啟并檢視狀态
systemctl enable sendmail.service
systemctl status sendmail.service
(5)此時mail發送成功
(6) 檢視sendmail指令的來源安裝包--->rpm -qf /sbin/sendmaile
postfix-2.10.1-6.el7.x86_64(原來就有的)
sendmail-8.14.7-4.el7.x86_64(安裝此軟體新增的)
三、問題的解決
在linux中,郵件的發送所用的服務時postfix---->檢視此服務是fail(郁悶)
二者的沖突