linux包管理

簡介

Linux安裝程序包分爲源碼包和二進制包(源碼編譯以後),源碼包安裝須要編譯,只有編譯了的源碼包,才能被解析;若編譯時出錯,運維人員難以解決;並且,源碼包安裝的時間較長;通常的源碼包格式爲「\*.tar.gz」,須要自行到官網下載。node

  • 源碼包通常包含文件linux

    • 源代碼
    • 配置和檢測程序(configure或者config)
    • 安裝說明(README)

零、RPM管理

強依賴性
www.rpmfind.net:查詢庫文件屬於的軟件包
二進制包和源碼包能夠同時安裝,可是隻能啓動一個
RPM通常採用默認路徑安裝,源碼包通常經過手動指定(通常爲/usr/local/src)
httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd:軟件包名
2.2.15:版本
15:軟件發佈次數
el6:軟件發行商
i686:適合的硬件平臺
RPM包安裝
rpm -ivh   #包全名   注意路徑
rpm -ivh  a.rpm b.rpm c.rpm   #同時安裝多個包
    --nodeps:不檢查依賴性安裝
    --replacefiles:替換文件安裝,由於某個文件已經存在而報錯,可使用此參數忽略
    --replacepkgs:替換軟件包,重裝軟件
    --force:強制安裝,--replacefiles和--replacepkgs綜合
    --test:測試安裝
    --prefix:指定安裝路徑
RPM包升級
rpm -Uvh 包全名
RPM包查詢
查詢的位置是/var/lib/rpm/
rpm -qa 包名    #是否安裝
rpm -qa |grep 包名    #列出全部包名稱相同的包
rpm -qi 包名    #列出已經安裝包詳細信息
rpm -qip 包全名    #列出未安裝包詳細信息
rpm -qil 包名    #軟件包中的文件列表
rpm -qf 系統文件名    #查詢文件系統屬於哪一個RPM   例:rpm -qf /bin/ls
rpm -qR 包名    #查詢軟件包所依賴的軟件包
RPM卸載
注意:卸載有依賴性,若是不按照依賴性卸載就會報錯
rpm -e 包名
可使用--nodeps,不檢測依賴性,可是這樣會致使其它軟件包沒法正常使用
RPM包校驗和數字證書
校驗:已安裝文件與/var/lib/rpm/目錄下的數據庫內容比較
rpm -V 已安裝的包名
rpm -Vf 系統文件名  #校驗是否被修改過
S:大小是否改變
M: 類型或者文件的權限是否改變
5:文件MD5校驗是否改變
D:設備的主從代碼是否改變
L:文件的路徑是否改變
U:所屬關係是否改變
G:所屬組是否改變
T:修改時間是否改變
上述校驗只是校驗了文件,若是RPM包自己被動過手腳,只能利用數字證書校驗
RPM包文件提取
cpio:文件與文件庫交互,問題是不能本身指定備份或者還原的文件是什麼,必須有其它命令告知
若是發現某個系統文件出了問題,能夠將這個問題文件提取出來進行修復
rpm2cpio 包全名 | cpio -idv . 文件的絕對路徑
rpm2cpio:將rpm包轉換爲cpio格式

誤刪系統命令修復
    一、從新安裝一遍
    二、提取文件,複製到對應的位置

例:誤刪/bin/ls
    一、查看ls屬於哪一個軟件包  rpm -qf /bin/ls
    二、模擬誤刪   mv /bin/ls /root/ 
    三、提取命令文件  rpm2cpio /mnt/cdrom/packages/cors...|cpio -idv ./bin/ls 
    四、複製到對應的位置  cp /root/bin/ls /bin/
RPM數據庫問題
若是判斷是RPM數據庫問題,就要基於光盤或者其餘源的來源處獲取獲得的SambaRPM文件進行檢查了
rm -f /var/lib/rpm/_db.*  #刪除RPM數據庫
rpm --rebuildddb   #重建數據庫
SRPM包
源碼形式發佈,再封裝成RPM包
格式:與RPM格式相同,只是多了一個「src」的標誌
使用rpmbuild管理,先將SRPM包解開,將源碼編譯成二進制文件,在將二進制文件從新打包成RPM包
一、安裝
    a、rpmbuild 參數 包全名
    --rebuild:編譯SRPM包,不會自動安裝,手動安裝
    --recompile:編譯SRPM+自動安裝
    b、*.spec安裝
        rpm -i SRPM包  解包
        rpm -ba /root/rpmbuild/SPEC/httpd.spec  在/root/rpmbuild中生成目錄,選擇對應的按照方式便可

1、yum在線管理

解決RPM安裝強依賴性問題
本質:安裝的仍是RPM包
yum源搭建
rpm -qa | grep yum    #是否安裝yum軟件

vim /etc/yum.repos.d/CentOS-Base.repo   #查看容器內容
  • 網絡yum源web

    • 配置文件:/etc/yum.re-pos.d/,擴展名必定是「\.repo」,即只要是「\.repo」纔會生效
ls /etc/yum.repos.d/   #查看yum目錄

image.png

  • 光盤yum源
CentOS-Media.repo  #光盤yum源模板文件

一、掛載光盤
二、修改其它yum源後綴,使得他們失效
三、修改CentOS-Media.repo文件
yum經常使用命令
yum list          #查詢全部可用軟件包列表
yum list 包名     #查詢yum源服務器中是否包還某個軟件包
yum search 關鍵字     #查詢yum源服務器中全部和關鍵字相同的軟件包
yum install -y 包名    #自動回答yes安裝
yum -y update  包名    #升級指定的軟件包
yum remove 包名    #軟件卸載,注意:卸載的時候必定要肯定軟件的依賴包不影響系統,不然會致使系統奔潰

yum grouplist  #查詢能夠安裝的軟件組
yum groupinfo 軟件組名   #查詢軟件組中包含的軟件
yum groupinstall 軟件組名   #安裝軟件組
yum groupremove 軟件組名   #卸載軟件組

2、源碼包管理

linux大多數源碼包都是用C語言編寫的,安裝源碼包,必需要有gcc編譯器
一、查看是否安裝gcc編譯器
    rpm -q gcc
二、查看make編譯器是否安裝
    rpm -qa make
源碼包安裝
  • 下載源碼包
  • 下載格式:常見的「.tar.gz」或者「.tar.bz2」
  • 保存源碼的位置:「/usr/src」:內核源碼;「/usr/local/src」:用戶下載的源碼
  • 刪除的時候直接找到安裝目錄刪除掉便可
一、下載軟件包
二、解壓縮
三、進入解壓目錄
四、./configure軟件配置檢查:①檢查硬件環境是否符合要求 ②自定義功能選項,例如安裝路徑等 ③將系統環境的檢測結果和定義好的功能選項寫入Makefile這個文件中
    注意:./configure不是系統命令,是源碼包自帶的檢測腳本,必須採用./configure執行
    ./configure --help:查看幫助  例:./configure--prefix=/usr/local/src/apache   #指定安裝目錄
五、make編譯:調用gcc編譯器,編譯Makefile中的內容,將源碼文件編譯爲二進制文件
六、make clean:清空編譯內容(非必須);若是在./configure或者make時報錯,從新編譯時,必定要先執行make clean
七、make install:安裝,真正的安裝過程,這個時會寫清楚安裝位置,能夠記錄下此內容,共卸載使用
補丁的生產與使用
升級時不須要卸載已經安裝好的文件,打個補丁,從新make一下便可
diff 參數 old new   #比較old與new文件的不一樣

diff -Naur old.txt new.txt > txt.patch   #比較兩個文件,而且生成補丁文件

patch -pn < txt.patch   #安裝補丁文件進行更新
    說明:補丁文件是要打入舊文件的,可是當前所在的目錄不必定和補丁文件中記錄的目錄匹配,須要使用「-pn」來同步兩個目錄,
          即:「-pn」取消補丁文件中記錄的目錄的「/」 例:/root/test/old.txt  「-p2」:test/old.txt
          
make:從新編譯打過補丁的文件
make install:從新安裝
patch -R < txt.patch    #還原補丁
注意:①給舊文件打補丁依賴的不是新文件,是補丁文件,因此即便新文件刪除也無關 ②補丁文件中記錄的目錄和你當前所在的目錄是須要經過「-pn」來同步的

3、函數庫管理

本質:SDK
位置:/usr/lib;內核調用的函數庫:/lib/modules
分類
靜態函數庫——「\*.a」:優勢——不須要外部數據,能夠直接執行;缺點——編譯生成的文件較大,升級困難
動態函數庫——「\*.so」:優勢——沒有整合到程序中,文件小,升級方便;缺點——易出現問題
安裝函數庫
ldd -v 可執行文件名   #查看調用的函數庫
例:ldd -v /bin/ls    #查看ls調用的函數庫


導入新的函數庫
    一、將函數庫複製到/usr/lib目錄中  cp *.so /usr/lib/
    二、修改函數庫的配置文件  vi /etc/ld.so.conf
    三、寫入函數庫所在的目錄(默認/usr/lib/已經被識別) include ld.so.conf.d/*.conf /usr/lib/
    四、idconfig命令從新讀取/etc/ld/.so.conf至緩存中
    五、ldconfig -p:列出緩存中的函數庫

4、腳本程序包管理

很少見,常見的是一些硬件的驅動
一、安裝Webmin
    a、tar -zxvf webmin-1.610.tar.gz
    b、cd webmin-1.610
    c、./setup.sh

5、推薦

Linux底層模塊和自帶軟件,推薦使用RPM安裝,例:gcc、GUI、開發庫等,手工定製的軟件推薦yum安裝
服務器上的應用程序,推薦源碼安裝,例:apache、DNS、Mail等
軟件卸載時,不推薦yum卸載,容易卸載了某個依賴,致使系統奔潰
相關文章
相關標籤/搜索