rpm及yum

庫文件

查看二進制程序所依賴的庫文件:

ldd /PATH/TO/BINARY_FILE

[root@localhost ~]# ldd /bin/bash

blob.png

管理及查看本機裝載的庫文件:

ldconfig

/sbin/ldconfig -p顯示本機已經緩存的所有可用庫文件

名及文件路徑映射關系

配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

緩存文件:/etc/ld.so.cache

 

程序包管理器:

功能:將編譯好的應用程序的各組成文件打包一個或幾個

程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作

1.包文件組成 ( 每個包獨有)

 RPM 包內的文件

 RPM 的元數據,如名稱,版本,依賴性,描述等

 安裝 或卸載時運行的腳本

2.數據庫( 公共)

 程序包名稱及版本

 依賴關系

 功能說明

 包安裝后生成的各文件路徑及校驗碼信息

 

搜索引擎:

http://pkgs.org

http://rpmfind.net

 

rpm包管理

CentOS 系統上使用rpm 命令管理程序包:

安裝、卸載、升級、查詢、校驗、數據庫維護

安裝:

rpm {-i|–install} [install-options] PACKAGE_FILE…

-v: verbose

-vv:

-h:  以# 顯示程序包管理執行進度

rpm -ivh PACKAGE_FILE …

 

 [install-options]

–test:  測試安裝,但不真正執行安裝;dry run 模式

–nodeps :忽略依賴關系

–replacepkgs | replacefiles

–nosignature:  不檢查來源合法性

–nodigest :不檢查包完整性

–noscipts :不執行程序包腳本片斷

   %pre: ; 安裝前腳本; –nopre

   %post: ; 安裝后腳本; –nopost

   %preun: ; 卸載前腳本; –nopreun

   %postun:  卸載后腳本; –nopostun

 

升級:

rpm {-U|–upgrade} [install-options]  PACKAGE_FILE …

rpm {-F|–freshen} [install-options]  PACKAGE_FILE …

   upgrade :安裝有舊版程序包,則“升級”

   如果不存在舊版程序包,則“安裝”

   freshen :安裝有舊版程序包,則“升級”

   如果不存在舊版程序包,則不執行升級操作

   rpm -Uvh PACKAGE_FILE …

   rpm -Fvh PACKAGE_FILE …

   –oldpackage :降級

   –force:

 

升級注意項:

(1)不要對內核做升級操作;Linux 支持多內核版本并存,因此對直接安裝新版本內核

(2)如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版  本的配置文件,而 把新版本的文件重命名

      (FILENAME.rpmnew)

 

包查詢

rpm {-q|–query} [select-options] [query-options]

[select-options]

  -a:  所有包 

  -f:  查看指定的文件由哪個程序包安裝生成

  [root@localhost ~]# rpm -qf /etc/issue

  centos-release-7-2.1511.el7.centos.2.10.x86_64

  應用場景:文件丟失,可通過相同系統機器查詢來源于哪個rpm包

  -p rpmfile :針對尚未安裝的程序包文件做查詢操作;

  [root@localhost ~]# rpm -qpl nginx-1.8.0-1.el6.ngx.x86_64.rpm

     blob.png

  –whatprovides CAPABILITY :查詢指定的 CAPABILITY 由哪個包所提供

  [root@localhost ~]# rpm -q –whatprovides bash   //誰提供了bash這個能力

  bash-4.2.46-19.el7.x86_64

  –whatrequires CAPABILITY :查詢指定的 CAPABILITY 被哪個包所依賴

  [root@localhost ~]# rpm -q –whatrequires bash  //誰依賴于bash

     blob.png

  rpm2cpio  包文件|cpio –itv 預覽包內文件

  [root@localhost ~]# rpm2cpio nginx-1.8.0-1.el6.ngx.x86_64.rpm |cpio -tv

    blob.png

  rpm2cpio  包文件|cpio –id “*.conf”釋放包內文件

  [root@localhost ~]# rpm2cpio nginx-1.8.0-1.el6.ngx.x86_64.rpm |cpio -idv 

  ./usr/share/nginx/html/index.html   //釋放需要的某個文件

  ./usr/share/nginx/html/index.html

 

 [query-options]

     –changelog :查詢rpm 包的changelog

     [root@localhost ~]# rpm -q –changelog tree

     blob.png

     -c:查詢程序的配置文件 configuration

     [root@localhost ~]# rpm -qlc bash

       blob.png

      -d:查詢程序的文檔  document

      [root@localhost ~]# rpm -qd tree

       blob.png

      -i: information

      [root@localhost ~]# rpm -qi tree

      blob.png

      -l:查看指定的程序包安裝后生成的所有文件;

      [root@localhost ~]# rpm -ql bash

      –scripts :程序包自帶的腳本片斷

      [root@localhost ~]# rpm -q –scripts bash

       blob.png

      -R:查詢指定的程序包所依賴的CAPABILITY;

      [root@localhost ~]# rpm -qR tree

      blob.png

      –provides:  列出指定程序包所提供的CAPABILITY;

      [root@localhost ~]# rpm -q –provides bash

      blob.png

 

卸載

rpm {-e|–erase} [–allmatches] [–nodeps] [– noscripts] [–notriggers] [–test] PACKAGE_NAME .

 

包來源合法性驗正及完整性驗正:

   完整性驗正:SHA256

   來源合法性驗正:RSA

公鑰加密:

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

   非對稱加密:密鑰是成對兒的

       public key: 公鑰,公開所有人

       secret key: 私鑰,不能公開

導入所需要公鑰:

   rpm -K  rpmfile 檢查包的完整性和簽名

   [root@localhost ~]# rpm -K nginx-1.8.0-1.el6.ngx.x86_64.rpm

   nginx-1.8.0-1.el6.ngx.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: 

   (MD5) PGP#7bd9bf62)  

   rpm –import  /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

   CentOS 7 發行版光盤提供: RPM-GPG-KEY-CentOS-7

 

 

rpm數據庫

數據庫重建:  /var/lib/rpm

rpm {–initdb|–rebuilddb}

   initdb:  初始化

   如果事先不存在數據庫,則新建之

   否則,不執行任何操作

   blob.png

   rebuilddb :重建

   無論當前存在與否,直接重新創建數據庫

 

yum 客戶端配置文件:

/etc/yum.conf :為所有倉庫提供公共配置

/etc/yum.repos.d/*.repo :為倉庫的指向提供配置

倉庫指向的定義:

   [repositoryID]

   name=Some name for this repository

   baseurl=url://path/to/repository/

   enabled={1|0}

   gpgcheck={1|0}

   gpgkey=URL

   enablegroups={1|0}

   failovermethod={roundrobin|priority}

   默認為:roundrobin ,意為隨機挑選;

   cost= 默認為1000

 

[base]

name=CentOS-$releasever – Base

baseurl=http://10.1.0.1/cobbler/ks_mirror/7/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

enabled=1

 

生成庫

yum-config-manager –add-repo= http://172.16.0.1/cobbler/ks_mirror/CentOS-X- x86_64/

yum-config-manager –disable “ 倉庫名" 禁用倉庫

yum-config-manager –enable “ 倉庫名”

 

顯示倉庫列表:

repolist [all|enabled|disabled]

blob.png

顯示程序包:

   yum list [all | glob_exp1] [glob_exp2] […]

   yum list {available|installed|updates} [glob_exp1]  […]

   blob.png

安裝程序包:

   install package1 [package2] […]

   reinstall package1 [package2] […] 

 

升級程序包:

update [package1] [package2] […]

downgrade package1 [package2] […] ( 降級)

檢查可用升級:

check-update

卸載程序包:

remove | erase package1 [package2] […]

 

查看程序包information: :

   info […]

    blob.png

查看指定的特性( 可以是某文件) 是由哪個程序包所提供:

   provides | whatprovides feature1 [feature2] […]

   blob.png

清理本地緩存:

   clean [ packages | metadata | dbcache | expire-cache |  rpmdb | plugins | all ]   

   du -sh /var/cache/yum   137M

   yum clean all  再看占用量變小了

構建緩存:

   makecache

    blob.png     

搜索:search string1 [string2] […]

   以指定的關鍵字搜索程序包名及summary 信息

   blob.png

查看指定包所依賴的capabilities: :

   deplist package1 [package2] […]

   blob.png

查看yum 事務歷史:

   history [info|list|packages-list|packages-info|summary|addon-info|redo|undo| rollback|new|sync|stats]

   yum history

   yum history info 2  //查看某步的信息

   yum history undo 2  //重新執行某步

   yum history new  // 清空history記錄

   blob.png

    blob.png

    blob.png

   blob.png

   blob.png

    blob.png

日志:/var/log/yum.log

 

安裝及升級本地程序包:

   * localinstall rpmfile1 [rpmfile2] […]

    ( 用install 替代)

   * localupdate rpmfile1 [rpmfile2] […]

    ( 用update 替代)

包組管理的相關命令:

    groupinstall group1 [group2] […]

    groupupdate group1 [group2] […]

    grouplist [hidden] [groupwildcard] […]

    groupremove group1 [group2] […]

    groupinfo group1 […]

 

如何使用光盤當作本地yum 倉庫:

(1)掛載光盤至某目錄,例如/media/cdrom

    # mount /dev/cdrom /media/cdrom

(2)創建配置文件

    [CentOS7]

    name=

    baseurl=

    gpgcheck=

    enabled=

 

 yum 的命令行選項:

    –nogpgcheck :禁止進行gpg check

    -y:  自動回答為“yes”

    -q :靜默模式

    –disablerepo=repoidglob :臨時禁用此處指定的repo

    –enablerepo=repoidglob :臨時啟用此處指定的repo

    –noplugins

 

yum倉庫

yum 的repo 配置文件中可用的變量:

    $releasever:  當前OS 的發行版的主版本號

    $arch:  平臺,i386,i486,i586,x86_64等 等

    $basearch :基礎平臺;i386

    $YUM0-$YUM9: 自定義變量

實例:

    http://server/centos/$releasever/$basearch/

    http://server/centos/7/x86_64

    http://server/centos/6/i384

創建yum 倉庫:

createrepo [options] <directory>

 

baseurl=ftp://mirrors.magedu.com/repos/$releaserver/$basearch  //根據系統版本自適應

 

centos6

cd /misc

cd cd

epel文件中添加

[cdrom]

baseurl=file:///misc/cd   自動掛載

gpgcheck=0

 

lftp 10.1.0.1

cd pub/Sources/7.x64

mget *

mv *.rpm /root/repodb

cd /root/repodb

createrepo .  創建倉庫

epel文件中添加

[lftp]

baseurl=file:///root/repodb

gpgcheck=0

blob.png

 

 

誤刪rpm命令的恢復方法

光盤啟動,進入救援模式,開shell

centos6

bash-4.1#

mdkir /mnt/cdrom

mount /dev/cdrom /mnt/cdrom

centos7

rpm -ivh Packages/rpm-r4.11.3.rpm –root=/mnt/sysimage

 

 

 

程序包編譯

源代碼–> 預處理–> 編譯(gcc)–> 匯編–> 鏈接–>

C 代碼編譯安裝三步驟:

 1./configure: :

  (1)通過選項傳遞參數,指定啟用特性、安裝路徑等;執 行時會參考用戶的指定以及makefile.in 文件生成makefile

  (2)檢查依賴到的外部環境

 2.make :根據makefile 文件,構建應用程序

 3.make install: 復制文件到相應路徑

開發工具:

   autoconf:  生成configure 腳本

   automake :生成Makefile.in

 

編譯C 源代碼:

前提:提供開發工具及開發環境

開發工具:make, gcc等 等

開發環境:開發庫,頭文件

glibc :標準庫

yum groupinstall "Development Tools"

 

第一步:configure 腳本

   選項:指定安裝位置、指定啟用的特性

   –help:  獲取其支持使用的選項

   選項分類:

        安裝路徑設定:

        –prefix=/PATH:  指定默認安裝位置, 默認為/usr/local/

        –sysconfdir=/PATH :配置文件安裝位置

    Optional Features:  可選特性

        –disable-FEATURE

        –enable-FEATURE[=ARG]

   Optional Packages:  可選包,

        –with-PACKAGE[=ARG], 依賴包

        –without-PACKAGE,

第二步:make

第三步:make install

 

安裝后的配置:

(1)二進制程序目錄導入至PATH 環境變量中;

  編輯文件/etc/profile.d/NAME.sh

  export PATH=/PATH/TO/BIN:$PATH

(2)導入庫文件路徑

  編輯/etc/ld.so.conf.d/NAME.conf

  添加新的庫文件所在目錄至此文件中;

  讓系統重新生成緩存:

  ldconfig [-v]

(3)導入頭文件

  基于鏈接的方式實現: ln -sv

(4)導入幫助手冊

  編輯/etc/man.config|man_db.conf 文件 ,添加一個MANPATH

 

實戰

編譯安裝apache 2.2, 并啟動此服務

(1)bunzip2 httpd-2.2.29.tar.bz2

   tar xf httpd-2.2.29.tar

(2)./configure –prefix=/usr/local/http2 –sysconfdir=/etc/http2

(3)make && make install

(4)vim /etc/man_db.conf  添加

   MANDATORY_MANPATH         /usr/local/http2/man

    此時可以用man幫助

(5)/usr/local/http2/bin/apachectl start

(6)netstat -tnlp|grep 80 查看80端口是否在線

    blob.png 

(7)telnet localhost 80 試是否能夠連接

   如果不行,iptables -F 清空防火墻鏈路規則

(8)links 訪問apache服務

    blob.png

    blob.png

 

 

 

 

 

 

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

(0)
victorycommandervictorycommander
上一篇 2016-08-28 21:59
下一篇 2016-08-29 08:44

相關推薦

  • linux基礎2

    linux基礎2

    Linux干貨 2018-03-18
  • Linux文件系統

      文件系統是一個邏輯上的概念,本身與磁盤沒有什么關系,它是一個外圍性永久存儲設備,我們知道,計算機共有五大部件,存儲設備是一種,內存是個臨時性質的存儲設備,無論是關機還是斷電,存在里面的數據都會消失,我們需要一個永久性存儲的設備,來彌補內存只是臨時存儲性。   對于Linux來說,其哲學思想之一就是一切皆文件,我們L…

    Linux干貨 2016-11-11
  • httpd 2.2(Apache Web服務器)

    apache (Web服務器) 簡介: Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。    Apache HTTP服務器是一個模塊化的服…

    Linux干貨 2016-03-30
  • Linux百科

    百度百科摘

    Linux干貨 2018-03-26
  • 安裝RPM包 rpm與yum工具的使用

    1.認識yum與rpm工具.                 在windows下安裝一個軟件很輕松,只要雙擊.exe的文件,安裝提示連續 “下一步” 即可,然而linux系統下安裝一個軟件似乎并不那么輕松了,因為我們不是在圖形界面下。所以你要學會如何在linux下安裝一…

    Linux干貨 2016-08-26
  • 壓縮及解壓工具

    通過算法壓縮數據,時間換空間。文本文件的壓縮比更大,二進制文件的壓縮比較小。 壓縮工具占用cpu時鐘。 compress/uncompress .Z gzip/gunzip .gz bzip2/bunzip2 .bz2 壓縮比比gz大但是也沒取代gz xz/unxz .xz 壓縮比大,現在較流行。 zip/unzip .zip 歸檔工具,既能歸檔又能壓縮 t…

    Linux干貨 2016-08-21
欧美性久久久久