軟件包管理

軟件包的分類,主要有以下兩大類

   源碼包

   二進制包(rpm包,系統默認包)

rpm包由Redhat公司提出,被眾多linux發行版所采用。

優點:建立統一的數據庫文件,詳細記錄軟件包的安裝、卸載等變化信息,能夠自動的分析軟件包依賴關系。

查詢已安裝的rpm軟件信息:

格式:

    rpm -q[子選項] [軟件名]

用法:結合不同的子選項完成不同的查詢

 選項: 

   -qa:查詢已安裝的所有rpm軟件包列表

   -qi:查詢指定軟件的詳細信息

   -ql:查詢軟件包安裝的目錄、文件列表

   -qc:查詢某軟件包安裝后生成的所有配置文件

   -qd:查詢某軟件包安裝后生成的所有幫助文件

   -q –changelog:查詢某軟件包制作時隨版本變化的changelog信息

   -q –scripts:查詢某包安裝或卸載時執行腳本

示例:

rpm -q bash :查詢bash軟件,會顯示出bash這個軟件是由哪個包安裝以后才有的。

rpm -qa | grep bash :查詢是否已經安裝有bash軟件包

rpm -ql postfix :查詢postfix軟件包安裝的文件列表

-qf 可查詢文件或目錄屬于哪個rpm軟件生成的

格式:

   rpm -qf 文件名或目錄名

示例:

rpm -qf /usr/bin/vim :查詢vim文件屬于哪個rpm軟件

查詢未安裝的rpm包文件:

格式:

   rpm -qp[子選項] rpm包文件

用法:結合不同的子選項完成不同的查詢

選項:

  -qpi:查看該軟件的詳細信息

  -qpl:查看包內所包含的目錄、文件列表

示例:

   rpm -qpi ethtoo….rpm :查看該包的詳細信息

   rpm -qpl ethtool…rpm :查看該包內包含的目錄、文件列表

安裝及升級rpm軟件

格式:

   rpm [選項] rpm包文件

用法:不同的選項適用于不同的情況

選項:

   -i:安裝一個新的rpm軟件包

   -U:升級軟件、若未安裝,則進行安裝。

   -h:以“#”號顯示安裝的進度

   -v:顯示安裝過程中的詳細信息

   -F:更新某個軟件包,若未安裝,則放棄安裝。

   –force:強制安裝、升級指定的rpm軟件包

   –nodeps:在安裝或升級、卸載一個軟件包時,不檢查與其他軟件包的依賴關系,忽略依賴關系(不推薦使用)

   -qR:查詢軟件包的依賴性

   -qRp:查詢未安裝軟件包的依賴關系

卸載rpm軟件包

 格式:

    rpm -e 軟件名

示例:

   rpm -e links :卸載links這個軟件

rpm包的依賴關系:

樹形依賴:a-b-c 

解決辦法:把依賴包安裝上

環形依賴:a-b-c-a

解決辦法:一次性安裝這幾個包

模塊依賴:依賴于某個包中的某個程序

解決辦法:在查詢網站www.rpmfind.net中搜索這個程序所在的包,然后安裝就可以了。

解決軟件包的依賴關系

安裝有依賴關系的多個軟件時:  

       被依賴的軟件包需要先安裝

       可同時指定多個rpm包文件進行安裝

卸載有依賴關系的多個軟件時

       依賴其他程序的軟件需要先卸載

       可同時指定多個軟件名進行卸載

維護rpm數據庫:

當rpm數據庫受到破壞時,可重建數據庫

  rpm –rebuilddb 或者 rpm –initab

查詢二進制程序依賴的庫文件

 ldd /PATH/TO/BINARY_FILE

rpm包校驗:

格式:

   rpm -V 已安裝的包名

   -V:校驗指定rpm包中的文件

檢驗過程中輸出的內容信息解釋如下

    S:文件的大小是否改變

    M:文件的類型或文件的權限是否改變

    5:文件MD5校驗個是否改變(可看成是文件內容是否改變)

    D:設備的主從代碼是否改變

    L:文件的路徑是否改變

    U:文件的屬主是否改變

    G:文件的屬組是否改變

    T:文件的修改時間是否改變

rpm包的文件提取

作用:當誤刪除命令或者誤刪除某個rpm包中的文件時可以用次命令

格式: 

   rpm2cpio 包全名 | cpio -idv .文件絕對路徑

YUM

yum是通過分析rpm的標頭數據后,根據各軟件的依賴關系制作出有依賴關系時的解決方案,然后可以自動處理軟件的依賴性問題,以解決軟件安裝的依賴性問題。

yum的配置文件:

主配置文件: /etc/yum.conf 為各倉庫指向提供公共配置文件

各倉庫自定義: /etc/yum.repos.d/*.repo 為每一個倉庫提供特有的配置

倉庫文件解釋

 倉庫文件應以.repo結尾,每個repo配置文件中可以配置一至多個倉庫

 [main] :提供公共的配置信息

 [倉庫id]:對于當前系統的yum來講,此倉庫id用于唯一標識此倉庫指向,必須唯一

 name:當前倉庫的描述信息

 baseurl:指明倉庫的訪問路徑

路徑支持類型

 ftp服務:ftp://SERVER/PATH/TO/REPOSITORY

 http服務:http://SERVER/PATH/TO/REPOSITORY

 本地目錄:file:///PATH/TO/REPOSTIROY

enabled={1|0}:當前倉庫是否開啟,1開啟,0關閉,默認不寫為開啟

gpgcheck={1|0}:是否對程序包校驗,1開啟,0關閉,默認不寫為開啟

gpgkey= :指明校驗文件的路徑

yum的使用

格式:

  yum [選項] [命令] [包名…]

常用命令:

   install :安裝

   update :升級

   downgrade :降級

   check-update:檢查可用升級

   remove:卸載,所有依賴于正卸載的程序包的程序包會被一并卸載

   reinstall:重新安裝

   search 關鍵字:根據關鍵字搜索軟件包

   list:列表查看

   info:查看簡要信息

   provides:查看某特性是由哪個軟件包所提供的

   chean all:清理本地緩存

   groupinstall:安裝包組

   groupupdate:升級包組

   grouplist:列表查看包組

   groupremove:卸載包組

   groupinfo:查看包組信息

   history:查看yum事物歷史

   help:幫助信息

注意:安裝、查詢、卸載時只需提供包名即可,安裝時如果某包在不同的倉庫中有多個不同的版本,默認會安裝最新的,如果要安裝指定版本,就要指明install 包名-版本

yum命令的可選項:

-y:自動回答yes

–disablerepo=:臨時禁用在配置文件中配置并啟用的某個倉庫

–enablerepo=臨時啟用指定的某倉庫

–nogpgcheck:禁止做包校驗

yum中的變量

  這些變量用來保存當前平臺的相關信息,這些常用的變量有以下這些:

①:$raleasever:當前OS發行版的住版本號;例如:Centos6.6 x86_64,主板吧號為6

②:$arch:平臺 例如:i386 i486

③:$basearch:基礎平臺,例如:i686,i586,i486,i386的基礎平臺同為i386

例如:

   在yum的配置文件中定義的baseurl路徑為baseurl=http://repo.abc.com/centos/$relrasever/$basearch 且當前的系統

為Centos6.6 x86_64,實際路徑就為http://repo.abc.com/centos/6/x86_64

制作本地yum源

使用本地yum源的方式有兩種:

1、直接使用光盤做為yum源,僅限本機使用

2、創建本地yum倉庫,然后使用http或者ftp等方式向外提供yum倉庫

使用光盤作為yum源的做法

 先掛載光盤,例如:mount /dev/sr0 /media/cdrom

 在/etc/yum.repos.d目錄下新建以.repo結尾的倉庫文件,內容如下

 [bash]

 baseurl=file///meida/cdrom

 gpgecheck=0

 這是最簡單的創建方法

創建本地yum源

1、首先安裝createrepo程序包

2、確定repository的輸出方式:

  a.本地輸出:提供一個放置rpm包的本地路徑;

   file類型

  b.網絡輸出:提供一個服務器.ftp或者http服務

   ftp服務:

        先安裝vsftpd程序包

        文件放置在/var/ftp/pub目錄中

        啟動服務

   http服務:

        先安裝httpd程序包

        文件放在/var/www/html目錄中

        啟動服務

在準備好的目錄中導入rpm包文件

對此目錄執行createrepo命令生成repository目錄

完成

源碼編譯安裝程序:

使用源碼包編譯安裝的優點

    可獲得最新的軟件版本,及時修復bug

    根據用戶需要,靈活定制軟件功能

應用場合:

    安裝較新版本的應用程序時

    當前安裝的程序無法滿足需要時

    需要為應用程序添加新的功能時

Tarball封包

     .tar.gz和.tar.bz2格式的居多

完整性校驗:

     計算MD5校驗和,并與官方提供的值相比較,判斷是否一致

格式:

   md5sum 源碼包、

源代碼組織格式:

  多文件:文件中的代碼之間很有可能存在跨文件依賴關系

確認源碼包的編譯環境

1、編譯開發工具包組:

          Development tools

          Server Platform Development

          Desktop Platform Development

          Debug Tools

2、被依賴的程序包的開發組件

①編譯安裝被依賴的程序

②安裝相關程序的名稱中包含devel的子包

項目管理工具:make

編譯時可能需要按特定的次序進行編譯,此時,一般會用到項目管路工具對其進行管理;

構建工具會調用合適的編譯器,并根據配置文件makefile中定義的次序對源代碼文件進行編譯

注意:1、每個項目的程序員開發完成某版本之后,會使用autoconf為程序代碼生成一個腳本文件:configure

    功能:此腳本會收集當前系統上的開發環境中所依賴各組件的版本、特性,并檢查所依賴的環境是否能滿足,最后會根據Makefile.in文件         生成一個makefile文件

    2、每個項目的程序員開發完成某版本之后,會使用autoconf為程序代碼生成一個makefile模板文件,即Makefile.in

編譯安裝源碼包流程:

                 下載源碼安裝包文件

                     ↓

                  步驟1:tar解包

             用途:解壓釋放源碼包到指定的目錄

                     ↓

                  步驟2:./configure配置,生成makefile文件

             用途:設置安裝目錄、安裝模塊等選項

                     ↓

                  步驟3:make編譯

             用途:生成可執行的二進制文件

                     ↓

                  步驟4:make install安裝

             用途:復制二進制文件到系統,配置應用環境

                     ↓

                 測試、應用及維護軟件

步驟1:解包

    可以根據自己的需求把解壓后的包放在任何地方,當習慣上將軟件包釋放到/usr/src目錄中

 解包后的源碼包文件位置:/usr/src/軟件名-版本號/目錄中

步驟2:配置

    使用源碼目錄中的.congfigure腳本

    執行./configure –help 可查看幫助信息

    常用的配置項:

     –help:查看幫助信息

     –prefix:指定默認安裝路徑,默認為/usr/local目錄下

     –sysconfdir:指定配置文件安裝路徑

     –with-CAPABILITY:依賴的程序包

     –without-CAPABILITY:不依賴的程序包

     –enable-FEATURE:啟動某個特性

     –disable-FEATURE:禁用某個特性

     system types:指明系統類型(交叉編譯才會用到)

            

步驟3:編譯

    執行make命令 (執行make命令還是在解壓后的這個目錄中)

    執行make命令有時也會出現問題,例如:某個函數不滿足要求等等

    執行make命令時可加上“-j”選項,-j[n],n代表cpu核心數,表示幾個核心同時編譯

步驟4:安裝

    執行make install命令

完成

注意:前幾步普通用戶可執行,建議使用普通用戶身份進行,最后一步根據安裝路徑的指定,可能會用到管理權限。

程序的運行環境:

將所定義的二進制程序安裝路徑加入到$PATH變量中去

在/etc/profile.d/目錄中的*.sh文件中添加 PATH=$PATH:二進制程序安裝路徑

linux系統會在特定路徑下為應用查找所依賴的庫文件:/lib64,/lib,/usr/lib64,/usr/lib 自己編譯安裝的程序提供的庫文件有可能不在系統搜索路徑中,解決辦法:

編輯/etc/ld.so.conf.d/*.conf文件,添加新庫文件搜索路徑到此,每行一個

執行ldconfig命令,重新生成庫映射緩存ld.so.conf

此命令的常用選項有:

    -v:顯示命令執行過程的詳細信息

    -p:打印當前系統ld.so.cache中已經緩存的所有庫文件目錄及庫文件映射列表

復制所有新生成的頭文件至/usr/include目錄中

創建鏈接(以apache為例)

ln -sv /usr/local/apache/include /usr/include/httpd

ln -sv /usr/local/apache/include/* /usr/include

修改man的配置文件/etc/man.config文件中使用MANPATH指令指向的路徑,讓其識別新的幫助信息。


 

原創文章,作者:ZJM,如若轉載,請注明出處:http://www.www58058.com/39105

(0)
ZJMZJM
上一篇 2016-08-25
下一篇 2016-08-25

相關推薦

  • Bash的&&,||邏輯運算

    Bash的&&,||邏輯運算 bash里的true和false并不是我們通常所認為的0和1。 true和false是shell的內置命令,返回邏輯值。 $?是一個特殊的變量,存放有上一個程序的結束狀態。 在shell里面,把0作為程序是否成功結束的標志。 例如: $ true$ echo$?0$ false$ echo$?1 有時候,下一條命…

    Linux干貨 2016-04-11
  • 學習宣言

    生命太過于短暫,今天放棄了明天不一定能得到。

    Linux干貨 2016-10-27
  • Linux入門 及Basics基礎

    二進制: 0, 1 5大部件: CPU:計算器、控制器 Memory: 存儲器(內存) 編址存儲單元陣列 輸入設備/輸出設備:I/O 鍵盤: VGA: 輔助存儲器 網卡 編程: 低級語言:匯編(微碼編程) 高級語言:JAVA, C++, C, Scala, Python 轉件: 時序復用: 計算機:硬件+軟件 硬件:開發,制造 軟件:編寫,編譯 OS: Op…

    Linux干貨 2016-08-08
  • N22-第七周作業

    1、創建一個10G分區,并格式為ext4文件系統;   (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;   (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; 在擴展分區/dev/sda4下新建一個10G的分…

    Linux干貨 2016-10-25
  • 22期第四周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost tuser1]# cp   -r    /etc/skel/   /ho…

    Linux干貨 2016-09-08
  • nfs和samba服務

    nfs:      nfs: Network File System                      #網絡文件系統      nis:Network Information Se…

    Linux干貨 2017-04-27
欧美性久久久久