天天看點

軟體包管理

軟體包的組成

1、二進制程式

   /bin,/sbin        系統啟動(不允許脫離根)

   /usr/bin,/usr/sbin        系統提供基本功能(RHEL6中不允許脫離根)

   /usr/local/bin,/usr/local/sbin        三方軟體

2、配置檔案(單檔案,單檔案在内部分割為多個片段)

   /etc

   /etc/httpd/

3、庫檔案(多個軟體共有的功能,被組成一個獨立功能子產品,隻能被其他程式調用執行)

   /lib,/usr/lib

   路徑定義        /etc/ld.so.conf/etc/ld.so.conf.d/*.conf

   頭檔案(對庫檔案的說明,如何去調用本庫)        /usr/include

   靜态庫多個功能放入一個庫檔案中,程式在編譯時候把整個庫檔案包含至程式中。

   動态庫不同程式調用相同功能,複制動态庫副本至自己的記憶體空間中。

4、幫助檔案

   手冊頁        /usr/share/man(/etc/man.config)

   文檔           /usr/share/doc

軟體包管理工具

Debian    dpkg(資料庫記錄安裝生成檔案的相關資訊)    deb

RedHat    rpm(資料庫記錄安裝生成檔案的相關資訊)     rpm    标準的軟體管理格式

rpm格式的軟體包命名格式

   name-[subname|devel]-version-release.arch.rpm

   name         名字

   subname    一個軟體包為了管理友善,在制作rmp包時候,可以劃分為多個功能相對獨立的rpm包

   devel         被其他軟體包以來的庫檔案和頭檔案(其他軟體依賴于此主包,需要裝此devel包)

   version      {major(質的飛躍).minor(改變一些功能).release(修正bug更新檔)}

   release{     軟體包制作者發型版本号.[系統平台号]}

   arch          二進制程式有格式(編譯器自身會在軟體編譯時對軟體在特定平台上運作做優化)

                   32bit (i386,i486,i586,i686)

                   64bit  (x86_64)

                   noarch(文本檔案,根平台沒關系)

前段工具

rpm --->  yum

dpkg --->  aptget

Linux上軟體包的安裝途徑

1、rpm包

   rmp指令

   yum指令

2、源碼包

   編輯安裝

3、編譯好的二進制包壓縮包

   解壓後配置使用

rmp包中包含的内容

   要安裝的檔案

   要執行的腳本

       pre          安裝之前

       post        安裝完成

       preun      解除安裝之前

       postun    解除安裝之後

軟體管理功能

安裝        (依賴的包叫做能力)

       rpm  -i           PK1 PK2 PK3 ...

              -v           詳細資訊

              -h           進度

             --test       測試是否可以安裝

             --nodeps     忽略依賴關系

             --replacepkgs    重新安裝

             --force        無視沖突

解除安裝

       rpm  -e      PK_name PK2_name ...

               --nodeps    忽略依賴關系(其他軟體包依賴于它的時候不讓解除安裝)

更新

       rpm  -F     無old,則不new

               -U     無old,則安裝new

               -v

               -h

               --oldpackage    降級

               注意:核心不應該更新安裝,核心允許多版本并存,可直接安裝多個不同版本核心

查詢

       rpm  -qPK_name

               -qa    目前系統上所有已經安裝的軟體包

               -qi    查詢軟體包的相關資訊

               -ql    列出此rpm包安裝之後在系統上生成那些檔案

               -qf    查詢此檔案是由哪個軟體包生成的

               -qc    檢視此軟體包有哪些配置檔案

               -qd    檢視此軟體包有那些文檔

               -q    --scripts        檢視軟體包腳本

               -qp    檢視尚未安裝rpm的軟體資訊(支援上述選項)

校驗    檢查某rpm包安裝生成的檔案有沒有被非法修改過

       rpm  -V   PK_name

                      S.5....T不改變用.  該表表示出來

                      S file Size differs

                     M Mode differs (includes permissions and file type)

                     5 MD5 sum differs

                     D Device major/minor number mismatch

                     L readLink(2) path mismatch

                     U User ownership differs

                     G Group ownership differs

                     T mTime differs

              -K    PKG    檢查軟體包簽名(或者發行CD光牒)

                                需要公鑰/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

              --import    導入公鑰

             -K    --nodigest          不檢查單項加密相關内容sha1 md5

                     --nosignature    不檢驗簽名gpg dsa

             rpm包簽名:提取特征碼,附加在軟體包上,官方使用自己的私鑰加密此特征碼

             驗證簽名

                           用官方的公用解密這段被加密的特征碼,得到可靠的官方特征碼

                           自己再使用同樣的單項加密提取軟體包特征碼。并比較和官方特征碼是否一緻。

       rpm資料庫        /var/lib/rpm

                       --initdb             重新初始化丢失的庫

                       --rebuilddb       重建,無論事先是否存在

yum

   RPM

   rpm databas/var/lib/rpm

yum    自動解決依賴關系

   x--->y

   x         依賴哪些包

   y         安裝情況

   yum    如何解決依賴關系

   repository    倉庫    yum源    repodata

rmp    每一個rpm包依賴于其他的那些capacity,是rpm包的制作者指定的

         就算沒有定義rpm指令也可以識别。

yum    配置檔案指定找相應的yum倉庫,已經安裝多少個,多少為安裝

         下載下傳未安裝包到本地緩存,安裝完成

         倉庫在本地某目錄

               file:///

         倉庫在遠端伺服器

               ftp:///

               http:///

         rpm包

         repodata/            自由包含此目錄為其子目錄的路徑,才可以用作yum源

         repomd.xml         保留時間戳校驗值

         primary.xml.gz     目前yum倉庫内每個rpm包名字和彼此間依賴關系

                                    每個rpm包能夠安裝生成的檔案

         filelists.xml.gz      所有rpm包包含的安裝生成的檔案的檔案清單

         other.xml.gz        額外資訊,主要包含rpm包的changelog

         comps-rhel5-server-core.xml    包組

yum配置

   /etc/yum.conf    主配置檔案    全局配置

   /etc/yum.repos.d/*.repo    分片配置檔案    分段配置

   /etc/yum/pluginconf.d/    插件目錄

   [repo]

   name=My Date Base

   baseurl=file:///var/yumrepo/Server

   baseurl=ftp://192.168.0.254/pub/Server

       baseurl=ftp://USERNAME:[email protected]/pub/Server

   enabled={0|1}

   gpgcheck=1

   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

yum指令

   repolist

   list             {installed|available|updates|all}

   clean         {expire-cache|packages|headers|metadata|dbcache|all}

           /var/cache/yum

                           中繼資料

                           rpm包

   grouplist    列出包組

   groupinfo "GROUP_NAME"    檢視包組資訊

   info zsh    檢視包資訊

   search KETWORD     模糊查詢

   whatprovides FILE    某檔案是由哪個rpm包生成

   installPKG_NAME     安裝

   removey<--x            解除安裝

   update                     更新

   groupinstall "NAME"        安裝包組

   groupremovec "NAME"    解除安裝包組

   localinstall         使用yum源安裝;如果不是CD光牒導讀作者公鑰或者不檢查簽名

   reinstall             重新安裝

   check-update    檢查有哪些可用于更新的包

yum的選項指令

       -y        自動回答為yes

       -nogpgcheck

建立本地yum源

       1、先安裝 yum install createrepo(建立yum源指令)

       2、createrepo 路徑目錄

createrepo

       -g支援包組定義

yum    進階用法

軟體包源碼編譯安裝

source code --> binary

編譯安裝需要事先安裝“開發環境”

Development Tools

Development Libraries

X Software Development

c/c++

   ./configure

           Makefile.in--->makefile (autoconf automake)

       -prefix=制定安裝路徑

      --sysconfdir制定配置檔案的安裝路徑

二進制程式        /usr/local/apache/bin        在PATH中添加此路徑

庫檔案管理        /usr/local/apache/lib         如何讓系統識别此庫

                       /lib /usr/lib                        系統預設庫檔案路徑

導出庫檔案路徑

第一種方法      

    /etc/ld.so.conf

第二種方法

   1、建立檔案/etc/ld.so.conf.d/*.conf

                        并将目前軟體的庫檔案所在的目錄添加至此新檔案

   2、# ldconfig [-v] 通知系統重新讀取庫

                       /etc/ld.so.cache并儲存至緩存中

頭檔案管理

       /usr/include        系統預設頭檔案目錄

       /usr/local/apache/include        如何讓系統識别頭檔案

       # ln -s  /usr/local/apache/include /usr/include/apache

       或者使用cp 也可以

手冊頁檔案

       /etc/man.config

       /usr/local/apache/man

       MANPATH /usr/local/apache/man

       如果隻是臨時使用一次

       man -M /usr/local/apache/man httpd

      注意:一般情況下都要導出庫和頭檔案

make-->makefile

make install

大多數源程式都會自帶檔案 INSTALL README

perl

   perl Makefile.PL

   make

   make install

本文轉自 ftmoonfans  51CTO部落格,原文連結:http://blog.51cto.com/soulboy/1265966