linux軟件包安裝與管理

一、RPM包簡介


    linux之所以那么強大,除了linux強大的內核,還有很大一部分取決于linux的軟件包,假想沒有軟件包,就一個內核在運行,人類需要和內核打交道是多么痛苦,但是聰明的人類發明了bash,通過bash,人就可以使用高級語言,和機器溝通,這其中的bash起始也是一個軟件包,當然linux除了bash還有各式各樣的包,幫助我們完成各種任務,這其中便涉及到程序的包管理。

           rpm包管理器(原名redhat package manager,后成為行業標準,命名為rpm package manager)。像是Fedora,centos,SuSE,等廠商的發行版都是使用rpm管理程序包管理器,rpm軟件包其實是預先編譯好的壓縮包,其中包括可執行程序、腳本,可以在安裝時檢查系統,硬件資源,操作系統版本,防止用戶錯誤安裝,但是大部分大軟件包會有依賴性,比如說,在安裝A軟件時有可能依賴于軟件B,B軟件又依賴如C軟件,為了知道軟件的依賴性,rpm在系統中建立了一個數據庫,記錄rpm的依賴性。

           dpkg:最早是debian linux社區開發出來的,debian衍生的版本,包括B2D,Ubuntu等都支持dpkg的包管理器


二、RPM包名字格式


   例如:httpd-devel-2.4.6-40.el7.centos.x86_64.rpm

 其中httpd-devel是包名,2是主版本號,2.6是此版本號,40是編譯次數(程序每次改動之后,重新編譯一次el7.centos是指發行版:企業版centos7系統),x86是硬件平臺,之所以要有硬件平臺是因為程序對不同的硬件優化以及設置都不一樣,所以要針對不同的硬件進行編譯(常見的平臺有i386:幾乎所有的x86平臺, i586, i686,x86_64:針對64cpu進行最佳編譯,noarch:和硬件無關的類型)。


三、RPM包管理


1 安裝:

       -i 安裝

       -v 顯示安裝過程的詳細信息,-vv 更詳細

       -h #表示安裝進度

       –test 測試安裝,不真正安裝

       –nodeps 忽略依賴關系

       –force 強制安裝


安裝示例:

   [root@centos7 ~]# rpm -ivh /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm 
   Preparing...                   ################################# [100%]
   Updating / installing...
   1:tree-1.6.0-10.el7                ################################# [100%]

2 升級:

-U 如果已經安裝,并且出現新版本則升級,如果沒有安裝則安裝最新版本的軟件包。

-F 單純升級,如果指定的軟件沒有安裝,則什么都不做

注:上面的U、F參數可以配合vh兩個參數使用,內核不建議使用升級選項來升級內核,因為一旦升級失敗,原來的內核也將不能使用。軟件也可以通過使用–oldpackage安裝上一個版本的軟件包。

      

3 卸載: 

        -e 卸載軟件包

        –nodeps 忽略依賴關系

        –test 測試卸載

       注:程序包的配置文件如果修改之后,卸載軟件默認是不刪除文件的,只是將配置文件改名為.rpmsave為后綴的文件

3 查詢:軟件的查詢要加必選選項-q

       -q 查詢軟件包,可以是全名,也可以是包名

              -a 查詢安裝的所有包。

              -f查詢某文件是由那個包安裝生成的

              -p 查詢沒有安裝的包的信息一般配合i使用

              -i 查詢包的簡要說明信息

              -c 查詢某程序的配置文件

              -l 查詢包安裝生成的文件列表

 查詢示例:

    [root@centos7 ~]# rpm -qi tree  //查詢軟件的詳細信息    
    Name        : tree
    Version     : 1.6.0
    Release     : 10.el7
    Architecture: x86_64
    Install Date: Mon 25 Jul 2016 05:21:38 PM CST
    Group       : Applications/File
    Size        : 89505
    License     : GPLv2+
    Signature   : RSA/SHA256, Fri 04 Jul 2014 01:36:46 PM CST, Key ID 24c6a8a7f4a80eb5
    Source RPM  : tree-1.6.0-10.el7.src.rpm
    Build Date  : Tue 10 Jun 2014 03:28:53 AM CST
    Build Host  : worker1.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://mama.indstate.edu/users/ice/tree/
    Summary     : File system tree viewer
    Description :
    The tree utility recursively displays the contents of directories in a
    tree-like format.  Tree is basically a UNIX port of the DOS tree
    utility.

 

    [root@centos7 ~]# rpm -qpi /mnt/cdrom/Packages/httpd-2.4.6-40.el7.centos.x86_64.rpm //查詢未裝包信息    
    Name        : httpd
    Version     : 2.4.6
    Release     : 40.el7.centos
    Architecture: x86_64
    Install Date: (not installed)
    Group       : System Environment/Daemons
    Size        : 9806197
    License     : ASL 2.0
    Signature   : RSA/SHA256, Wed 25 Nov 2015 10:41:23 PM CST, Key ID 24c6a8a7f4a80eb5
    Source RPM  : httpd-2.4.6-40.el7.centos.src.rpm
    Build Date  : Fri 20 Nov 2015 05:45:11 AM CST
    Build Host  : worker1.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://httpd.apache.org/
    Summary     : Apache HTTP Server
    Description :
    The Apache HTTP Server is a powerful, efficient, and extensible
    web server.

    [root@centos7 ~]# rpm -qc httpd //查詢程序的配置文件    
    /etc/httpd/conf.d/autoindex.conf
    /etc/httpd/conf.d/userdir.conf
    /etc/httpd/conf.d/welcome.conf
    /etc/httpd/conf.modules.d/00-base.conf
    /etc/httpd/conf.modules.d/00-dav.conf
    /etc/httpd/conf.modules.d/00-lua.conf
    /etc/httpd/conf.modules.d/00-mpm.conf
    /etc/httpd/conf.modules.d/00-proxy.conf
    /etc/httpd/conf.modules.d/00-systemd.conf
    /etc/httpd/conf.modules.d/01-cgi.conf
    /etc/httpd/conf/httpd.conf
    /etc/httpd/conf/magic
    /etc/logrotate.d/httpd
    /etc/sysconfig/htcacheclean
    /etc/sysconfig/httpd

4 校驗:查詢包安裝之后的文件發生的變化如果顯示ok則包生成的內容沒有發生變化。使用時用-V參數檢驗軟件包

       S: size  文件容量大小發生變化

       M: mode 文件的類型或文件的屬性是否發生變化

       5md5發生變化

       D: 裝置的主次代碼已經發生改變

       L: link 文件的路徑發生變化

       U: User owership 文件的屬主發生變化

       GGroup owership 文件的所屬組發生變化

       T: mtime文件的創建時間發生變化

    文件檢驗示例:

    [root@centos7 ~]# rpm -V vsftpd   //安裝完沒有做任何修改的軟件包檢測沒有任何輸出    
    [root@centos7 ~]# rpm -qc vsftpd  //檢查安裝產生配置文件
    /etc/logrotate.d/vsftpd
    /etc/pam.d/vsftpd
    /etc/vsftpd/ftpusers
    /etc/vsftpd/user_list
    /etc/vsftpd/vsftpd.conf 
    [root@centos7 ~]# touch /etc/vsftpd/vsftpd.conf //刷新文件的時間戳
    [root@centos7 ~]# rpm -V vsftpd   //再次檢查發現文件多了T屬性,表示時間改變,其他沒有改變
    .......T.  c /etc/vsftpd/vsftpd.conf
    [root@centos7 ~]# echo "">> /etc/vsftpd/vsftpd.conf //通過echo一個空行發現文件的大?。⊿),文件的MD5(5),文件的時間(T)發生改變
    [root@centos7 ~]# rpm -V vsftpd
    S.5....T.  c /etc/vsftpd/vsftpd.conf

   導入本地公鑰進行驗證: 

    [root@centos7 ~]#rpm --import  /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 (這是7本地密鑰),導入后就可以驗證包內容是否合法。

5rpm數據庫的建立:一旦rpm的數據庫丟失,重建后的數據庫將無法查詢到之前安裝的包數據庫文件存放位置:/var/lib/rpm/

–initdb -v –dbpath  如果存在就不建立文件,不存在就建立文件

–rebuilddb 無論數據庫文件時候存在都強制重建

四、YUM包管理:

1. yumrpm的一個前端工具,通過分析rpm的標頭數據后,根據各種軟件的依賴關系自動解決軟件的依賴性問題。假如rpm不能使用,yum也將不能使用,yum的工作模式是基于C/S的模式,就是說必須配置有一個文件服務器用來存放軟件和依賴關系的文件,當然也可以配置一個本地服務器的yum安裝源。配置本地yum客戶端需要指向服務器的/repodata/ 目錄的父目錄

 

2. repodata是一個目錄,里面包含了一個以 .xml結尾的文件,這個文件是yum索引文件,包含了rpm包的一些信息,比如依賴關系這些的。通過它用yum安裝才能在自動解決依賴關系。一般光盤里面會自帶有repodata目錄。如果沒有就手動生成了。方法:安裝createrepo包,這個你用rpm方式安裝。成功后執行createrepo -v /mnt/cdrom 來重建索引文件

 

/etc/yum.conf 全局倉庫的配置文件

 

 

3. yum客戶端配置:

 [root@centos7 msh]# cat /etc/yum.repos.d/local.repo

[local]   ===> 倉庫ID repositoryID)全局唯一

name=local  ===>描述性的信息

baseurl=file:///mnt/cdrom/  ===>最重要的地方支持http,file,ftp三種協議

enabled=1  ===>默認不寫為1

gpgcheck=1  ===>指定rpm包是否需要檢查合法性

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 ==>指定公鑰路徑也是三種URL  http 、httpsfile、ftp

 

4. yum相關命令:

 

1 yum-config-manager –disable  “repo_name”  對某一倉庫(repo_name)禁用

2 yum-config-manager –enable  “repo_name”  啟用某一倉庫

3 yum repolist  [all | enabled | disabled ]  顯示倉庫列表

4 yum list {available | installd | updates | }  glob_exp1 可以使用通配符列出各種安裝包

5)安裝和重裝包:

       yum install package … 支持安裝多個包

       yum reinstall package … 重新安裝程序包

       yum update package …  升級安裝程序包

       yum downgrade package.. 降級安裝包

       yum check-update 檢查可用的升級

6yum remove | erase package 卸載安裝包

7)查看程序包info

       yum info [package …] 查看包信息

       yum provides [package] 查看某文件是由那個程序提供的

    [root@cnode6_8 ~]# yum provides /usr/share/doc/HTML/sr/kioslave/http
    Loaded plugins: fastestmirror, refresh-packagekit, security
    Loading mirror speeds from cached hostfile
    kde-l10n-Serbian-4.3.4-5.el6.noarch : Serbian language support for KDE
    Repo        : base
    Matched from:
    Filename    : /usr/share/doc/HTML/sr/kioslave/http

8)清理構建緩存:

       yum clean all  //清理緩存

       yum makecache // 生成緩存

9)查看yum事務歷史:

       yum history  查看yum history

       yum history # 查看具體的第#yum信息

       yum history undo # 撤銷第#條操作

10)日志操作:

       /var/log/yum.log

11)包組管理:

       yum groupinstall group1… 包組安裝

       yum groupupdate group1… 包組更新

       yum groupremove group1… 包組卸載

       yum groupinfo  group1…  查看包組信息

12yum的命令行選項:

       -y 自動回答yes

       -q 靜默模式

13yumrepo配置文件中可以使用變量替代發行版等變量,部署大量服務器時可以使用統一的配置文件,對服務器進行yum配置

       示例:在yum服務器上有發行版67的兩個版本的yum源,在同時擁有rhel6rhel7的版本的服務器時配置文件:

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

       $arch: 平臺,i386,i486,i586,X86_64

       $basearch 基礎平臺;i386

 

服務器是分別共享的目錄:

http://server/centos/7/x86_64

http://server/centos/6/i384

 repo文件寫法:

http://server/centos/$releasever/$basearch/  //配置文件的baseurl這樣寫

 

四、源碼安裝:


1. 編譯安裝

1)執行configure腳本,之所以要執行configure腳本,是因為硬件,操作系統等比較多比較雜,針對不同的硬件配置信息等會不一樣,不一樣的發行版本操作系統也是會有許多差別,存放庫文件等的地方也會有很大的差別,軟件發行廠商會編寫configure 偵測程序,程序會針對不同的硬件和操作系統改變配置和做部分優化,然后生成makefile文件,供make調用進行編譯和安裝。軟件包解壓之后會產生許多的源碼文件和可執行文件,腳本,README,NOTICE,install等供編譯安裝時的幫助信息可供參考。configure –help可以看到執行configure時可以指定的參數,如 –prefix=/PATH  –sysconfdir=/PATH 兩個選項分別指定安裝路徑和配置文件存放的目錄,沒有指定則按軟件本身的默認路徑執行,在編譯安裝可能會報錯,可以按照報錯消息添加選項等安裝,直至configure執行成功。configure支持交叉編譯,就是說在本地給其他不同的硬件或操作系統執行編譯只需指定system type

2 make  根據makefile 預設工作進行編譯,只有編譯成功后才能執行下一步工作

3make install : make根據編譯好的二進制文件安裝到響應的目錄

2. 安裝后的配置:

1 將二進制程序目錄導入至PATH 環境變量中:就可以在任意目錄執行安裝文件的二進制程序

2 導入庫文件路徑:

       編輯/etc/ld.so.conf.d/NAME.conf 添加新的庫文件所在的目錄至此文件當中,讓系統重新生成緩存:

       ldconfig -v

3)導入頭文件:因為在系統之中,頭文件是存放在/usr/loca 目錄下面,想要讓安裝的軟件包頭文件可以讓系統使用,可以將安裝的頭文件在/usr/local 目錄下面單獨建立一個目錄用戶存放該軟件的頭文件,或者建立一個軟連接指向安裝的軟件的頭文件目錄以httpd為例:

 

   [root@cnode6_8 include]# ln -sv /usr/local/http2/include/  /usr/include/httpd
    `/usr/include/httpd' -> `/usr/local/http2/include/'

4)導入man幫助手冊

    rhel6man配置文件/etc/man.config

    rhel7配置文件:/etc/man_db.conf

    通過在man配置文件當中添加軟件的man路徑,可以將軟件的man幫助添加到man中方便查詢

 

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

(0)
jack_cuijack_cui
上一篇 2016-08-24
下一篇 2016-08-24

相關推薦

  • 第二周博客作業

    1.linux上的文件管理類命令都用哪些,其常用的使用方法及其相關示例演示。 常用命令有:cp, mv, rm 復制命令:cp cp [OPTION]… [-T] SOURCE DEST                 cp [OPTION]… SOURC…

    Linux干貨 2016-06-23
  • LINUX系統文件類型分類

    使用LINUX過程中,時常會對文件進行操作。但是linux中文件究竟有哪些分類呢?今天讓我們大家來總結一下吧! 概述:         linux文件可以分為五種類型,分別為:普通文件、目錄、字符設備或塊設備、套接口文件、符號鏈接文件。下面詳細介紹這幾種文件。 1 普通文件[root@lo…

    Linux干貨 2017-07-22
  • N22-第六周作業

    1、復制/etc/rc.d/init.d/functions文件至/tmp目錄,將/tmp/functions文件中 的以至少一個空白字符開頭的行的行首加# ~]# cp /etc/rc.d/init.d/functions /tmp~]# vim /tmp/functions %s@^[[:space:]]\+@#@g 2、復制/boot/grub/gru…

    Linux干貨 2016-10-17
  • 初識Linux

    在這篇文章中你講看到如下內容: 1.       計算機的組成及功能; 2.       Linux發行版之間的區別和聯系; 3.       Linux發行版的基礎目錄及功用規定…

    Linux干貨 2016-12-01
  • Linux進程管理

    一、程序與進程           1、程序         程序是為了達到特定的目的,可以被計算機運行并且由命令代碼組成的語句序列。       &…

    Linux干貨 2015-05-14
  • HAProxy初探及簡單案例_Net21_第二周

    前言 隨著互聯網業務的迅猛發展,大型電商平臺和門戶網站對系統的可用性和可靠性的要求越來越高,高可用集群、負載均衡集群成為一種熱門的系統架構解決方案。在眾多的負載均衡解決方案中,有基于硬件的負載均衡設備,例如F5、Big-IP等,也有基于軟件的負載均衡產品,如LVS、Nginx以及本文介紹的HAProxy等。在軟件的負載均衡產品中,又分為兩種實現方式,分別是基…

    Linux干貨 2016-07-22

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-26 11:18

    文章對rpm包管理器總結的很詳細i,如果能有一些操作性的實驗性的東西在文章中會是的文章更加啊豐滿哦。

欧美性久久久久