天天看點

rpm,srpm,yum的整理

軟體包管理器

 1、打包成一檔案:二進制程式,庫檔案,配置檔案,幫助檔案

 2、生成資料庫,追蹤所安裝的每一個檔案

軟體包管理器的核心功能:

 1、制作軟體包;

 2、安裝、解除安裝、更新、查詢、校驗;

--------------------------------rpm

rpm指令:

 rpm:

  資料庫: /var/lib/rpm

 rpmbuild:SRPM:其提供的軟體内容并沒有被編譯,它提供的是代碼源,需要自己通過編譯。

安裝的時候RPM與SRPM需要注意的問題

 1、軟體安裝的環境必須與打包時的環境需求一緻或相當;

 2、需要滿足軟體的依賴屬性需求;

 3、反安裝時需要特别小心,最底層的軟體不可先删除,否則可能造成整個系統的問題,

  則此時需要的步驟、用SRPM

 先将該檔案以RPM管理的方式編譯,此時SRPM會被編譯成為RPM檔案;

 然後将編譯完成的RPM檔案安裝到Linux系統中

  檔案格式 檔案名格式  直接安裝與否 内含程式類型 可否修改參數并編譯

  RPM   XXX.rpm   可    已編譯   不可

  SRPM  XXX.src.rpm  不可   未編譯的源代碼 可

RPM的優點

 1、RPM内含已經編譯過的程式與設定檔案等資料,可以讓使用者免除重新編譯的困擾

 2、RPM在被安裝之前,會先檢查系統的硬碟容量、作業系統版本,可避免檔案被錯誤安裝

 3、RPM檔案本身提供軟體版本資訊、依賴屬性軟體名稱、軟體用途說明、軟體所含檔案等資訊,以便與了解軟體

 4、RPM管理的方式使用資料庫記錄RPM檔案的相關參數,便于更新、删除、查詢與驗證

 1、安裝(install):

  rpm -i /PATH/TO/PACKAGE_FILE

   -h:以#顯示進度:每個#表示2%

   -v:顯示詳細安裝

   -vv:顯示更詳細的過程

  rpm -ivh /PATH/TO/PACKAGE_FILE

      rpm -vih rp-pppoe-3.5-32.1.i386.rpm

   --nodeps:忽略依賴關系

   --replacepkgs:重新安裝,替換原有安裝;

   --force:強行安裝,可以實作重裝或降級;

      在沒有網絡的情況下,想用CD光牒來安裝,那麼就需要

       挂載CD光牒,使用: mount /dev/cdrom /media

       找出檔案的實際路徑:find /media -name 'pam-devel*'

       測試此軟體是否有依賴性:rpm -ivh pam-devel... --text

       直接安裝:rpm -ivh pam-devel...

       解除安裝CD光牒:umount /dev/cdrom

 2、查詢 (query)

  rpm -q PACKAGE_NAMEPACKAGE_NAME

  rpm -qa:查詢已經安裝的所有包

  rpm -qi PACKAGE_NAME:查詢指定包的說明資訊;

  rpm -ql PACKAGE_NAME:查詢指定安裝包後生成的檔案清單;

  rpm -qc PACKAGE_NAME:查新指定包安裝的配置檔案;

  rpm -qd PACKAGE_NAME:查新指定包安裝的配置檔案;

  rpm -q --scripts PACKAGE_NAME:查詢指定包中包含的腳本

  rpm -qf /PATH/TO/SOMEFILE:查新指定的檔案是由哪個rpm包安裝生成的

  如果某rpm包尚未安裝,我們需查詢器說明資訊、安裝以後會生成的檔案;

  rpm -qpi /PATH/TO/PACKAGE_FILE i軟體包的資訊

  rpm -qpl /PATH/TO/PACKAGE_FILE l軟體包的清單

     rpm -qa  <==已安裝軟體

     rpm -q[licdR]  <==已安裝的軟體

     rpm -qf 存在于系統上的某個檔案名

     rpm -qp[licdR]未安裝的某個檔案名

 3、更新

  rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE:如果裝有老版本的則更新,否則安裝

  rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果裝有老版本的則更新,否則退出

   --oldpackage:降級

 4、解除安裝

  rpm -e PACKAGE_NAME 

   --nodeps

     找出與pam有關的軟體名稱,并删除

      rpm -qa | grep pam

      rpm -e pam

 5、校驗

  rpm -V PACKAGE_NAME檢查檔案是不是被非法改變過的

 6、重建資料庫

  rpm

   --rebuilddb:重建資料庫,一定會重建立立;

   --initdb:初始化資料庫,沒有才建立,有就不用建立;

 7、檢驗來源合法性,及軟體包完整性;

  加密類型:

   對稱:加密解密使用同一對密鑰

   公鑰:一對兒密鑰,公鑰,私鑰;公鑰隐含于私鑰中,可以提取出來并公開出去

   單向:

   /etc/pki/rpm-gpg/

    rpm -K /PATH/TO/PACKAGE_FILE

    dsa,gpg:驗證來源合法性,也即驗證簽名:可以使用 --nosignature略過此項

    sha1,md5:驗證軟體包完整性;可以使用--nodigest,略過此項

    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:導入密鑰檔案

srpm

RPM安裝:SRPM.其提供的軟體内容并沒有被編譯,它提供的是代碼源,需要自己通過編譯。

  二進制格式:

  源程式-->編譯-->二進制格式

   有些特性是編譯標明的,如果編譯時未標明此特性,将無法使用

   rpm包會落後于源碼包,甚至落後很多

 定制:手動編譯安裝

 編譯環境,開發環境

 開發庫,開發工具,  

 C,C++:

  gcc:GNU C Complier,C

  g++:

  make:項目管理工具,

   makefile:定義了make(gcc,g++)按何種次序去編譯這些源程式

  automake,-->makefile.in -->makefile

  autoconf,-->configure配置目前檔案如何編譯

  make install

  編譯安裝的三步驟:

  前提:準備開發環境(編譯環境)

  安裝"Development Tools"和"Development Libraries"

  #tar      //解壓縮

  #cd  //cd到目前目錄

  # ./configure腳本

    --help

    --prefix=/path/to/somewhere指定安裝路徑

    --sysconfdir=/PATH/TO/CONFFILE_PATH指定配置檔案路徑

     功能:1、讓使用者標明編譯特性;2、檢查編譯環境,

  #make

  #make install

  #tar xf tengine-1.4.2.tar.gz

  #cd tegnine-1.4.1

  # ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf

  #/usr/local/tengine/sbin/ngix

  解決nginx沒法直接運作,先編輯vim /etc/profile  然後加進去PATH=$PATH:/usr/local/tengine/sbin/ngix

   然後重讀   source /etc/profile或者重新登入

  netstat -tnlp可以檢視 其為web80端口

   可以在浏覽器打開相應位址打開相應的網頁

    編輯網頁檔案,可以cd /usr/local/tengine/  cd html/ ls  其為index.html

     然後vim編輯

 編譯好軟體包以後,如果想将其安裝到非預設路徑下  

  1、修改PATH環境變量,以能夠識别此程式的二進制檔案路徑

   修改/etc/profile檔案

   在/etc/profile.d/目錄中建立一個以.sh為名稱字尾的檔案,在裡面定義export PATH=$PATH:/path/to/somewhere

  2、預設情況下,系統搜尋庫檔案的路徑/lib,/usr/lib;要增添額外搜尋路徑:

   在/etc/ld.so.conf.d/目錄中建立以.conf為字尾名的檔案,而後把要增添的路徑直接寫至此檔案中;

   #ldconfig:通知系統重新搜尋庫檔案

    -v:顯示重新搜尋庫的過程

  3、頭檔案:#include 輸出給系統

   預設:/usr/include

   增添頭檔案搜尋路徑,可以使用連接配接進行;

    /usr/local/tengine/include/  /usr/include/

    兩種方式:

    ln -s /usr/local/tengine/include/* /usr/include/或

    ln -s /usr/local/tengine/include  /usr/include/tengine

  4、man檔案路徑:預設安裝在--prefix指定的目錄下的man目錄;/usr/share/man

    1、man -M /PATH/TO/MAN_DIR COMMAND

    2、在/etc/man.config中添加一條MANPATH

----------------------------------------------------yum

rpm --> yum           yum:rpm能力

  解決rpm的依賴關系

 yum倉庫中的中繼資料檔案:

  primary.xml.gz

   所有RPM包的清單

   依賴關系

   每個RPM安裝生成的檔案清單

  filelists.xml.gz

   目前倉庫内所有RPM包的所有檔案清單;

  other.xml.gz

   額外資訊,RPM包的修改日志;  

  repomd.xml

   記錄的是上面三個檔案的時間戳和校驗和;

 yum install zsh

 comps*xml:RPM包分組資訊

 如何為yum定義repo檔案

  [Repo_ID]

  name=Description

  baseurl=

   ftp://

   http://

  enabled={1|0}允許1  不允許0

  gpgcheck={1|0}

  gpgkey=路徑

 yum [options] [command] [package ...]

  -y:自動回答yes

  --installroot=/some/path:将軟體安裝在/some/path中而不是預設路徑

  --nogpgcheck不做檢查

  list:清單

   支援glob

   all

   available:可用的,倉庫中有尚未安裝的

   installed:已安裝的

   updates:可用的更新

  clean:清理緩存

   packages

   headers

   metadata

   dbcache

  repolist:顯示repo清單及其簡要資訊

   enabled:預設

   disabled

  install:安裝

   yum install PACKAGE_NAME

  update:更新

   update_to:更新為指定版本

   yum list updates <==一定要是updates

  remove|erase:解除安裝

  info:詳細資訊

  provides| whatprovides:檢視指定的檔案或特性是由哪個包安裝生成的

  groupinfo

  grouplist

  groupinstall

  groupremove

  groupupdate

 CD光牒建立yum

 /media/cdrom/{Sever,VT,Cluster,ClusterStorage}

本文轉自 陳延宗 51CTO部落格,原文連結:http://blog.51cto.com/407711169/1156530,如需轉載請自行聯系原作者