1. 程式人生 > >Centos7.5-軟件包的管理與安裝

Centos7.5-軟件包的管理與安裝

module alt sed 源碼安裝 img test 最新版本 官方網站 系統

本節所講內容:
- 8.1  使用rpm命令-安裝-查看-卸載-rpm軟件包
- 8.2  yum管理軟件包
- 8.3  實戰tar源碼包管理-srpm源碼包安裝方法

8.1 軟件包的管理

軟件包的類型

  • rpm二進制包------》已經使用GCC編譯後的
  • tar源碼包-----》需要編譯
  • RPM概述:RPM是RPM Package
    Manager(RPM軟件包管理器)的縮寫,這一文件格式名稱雖然打上了RedHat的標誌,但是其原始設計理念是開放式的,現在包括OpenLinux、SUSE以及Turbo
    Linux等Linux的分發版本都有采用,可以算是公認的行業標準了。

8.1.1 rpm軟件包的管理

rpm包的獲取方式:

  • 1、Centos系統鏡像光盤
  • 2、網站rpmfind.net
  • 3、比如安裝mysql、nginx軟件,我們可以去它的官方網站下載:http://www.mysql.com rpm包格式的說明

例1:[root@xuegod63 ~]# ls /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm

/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
zsh     -5.       0.         2-      28.                  el7.             x86_64.rpm 
軟件名 主版本號 次版本號  修訂 release(第幾次發布版本) 操作系統版本   軟件包是64位包 
#修訂指是的第幾次修改bug。   發布指的是:第幾次發布。 發布時,可能只是對軟件安裝的默認參數做了修改,而沒有其它改動。

8.1.2 安裝rpm軟件

RPM工具使用分為安裝、查詢、驗證、更新、刪除等操作
命令格式:rpm [參數] 軟件包
參數:

  • -i 是install的意思, 安裝軟件包
  • -v 顯示附加信息,提供更多詳細信息
  • -V 校驗,對已經安裝的軟件進行校驗
  • -h --hash 安裝時輸出####標記

互動:rpm使用時,什麽情況下使用軟件包全名,什麽時候使用軟件包名?

  • 全名:在安裝和更新升級時候使用
  • 包名:對已經安裝過的軟件包進行操作時,比如查找已經安裝的某個包,卸載包等 ,使用包名。它默認是去目錄/var/lib/rpm下面進行搜索。
    當一個 rpm 包安裝到系統上之後,安裝信息通常會保存在本地的 /var/lib/rpm/目錄下。

8.1.2.1 從本地安裝

[root@xuegod63 ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
[root@xuegod63 ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
/bin/zsh

8.1.2.2 從網上下載直接安裝centos epel擴展源

例:

rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm   
#安裝centos epel擴展yum源。 註:epel源是對centos7系統中自帶的 base源的擴展。

8.1.3 rpm查詢功能

Linux架構師高薪入口:

1.學神IT教育官方網站:http://xuegod.ke.qq.com

2.10年行業資深老鳥MK:QQ2659153446

3.加入Linux技術交流QQ群:722287089,即可獲得以下福利:

①定期分享免費學習資料與視頻(工具+筆記+拓展實戰)
②10年行業資深老鳥在線答疑:技能+實戰+項目分享+高薪就業
③有機會免費領取Linux雲計算集群架構師4冊書籍
用法:rpm -q(query) 常與下面參數組合使用

  • -a(all) 查詢所有已安裝的軟件包
  • -f(file)系統文件名(查詢系統文件所屬哪個軟件包),反向查詢
  • -i 顯示已經安裝的rpm軟件包信息,後面直接跟包名
  • -l(list) 查詢軟件包中文件安裝的位置
  • -p 查詢未安裝軟件包的相關信息,後面要跟軟件的命名
  • -R 查詢軟件包的依賴性
    例:

    [root@xuegod63 mnt]# rpm -q zsh --->查詢指定的包是否安裝
    [root@xuegod63 mnt]# rpm -qa --->查詢所有已安裝包
    [root@xuegod63 mnt]# rpm -qa | grep vim --->查詢所有已安裝包中帶vim關鍵字的包
    [root@xuegod63 ~]# which find #查看find命令的路徑
    /usr/bin/find
    [root@xuegod63 ~]# rpm -qf /usr/bin/find #查詢文件或命令屬於哪個安裝包
    查詢已經安裝的rpm包的詳細信息或作用 rpm -qi rpm包名
    [root@xuegod63 ~]# rpm -qi lrzsz

針對沒有安裝的RPM包,要加參數: -p

[root@xuegod63 ~]# rpm -qpi /mnt/Packages/php-mysql-5.4.16-42.el7.x86_64.rpm 
。。。
Summary     : A module for PHP applications that use MySQL databases  #php使用mysql數據庫的一個模塊
 [root@xuegod63 mnt]# rpm -qpl  /mnt/Packages/zip-3.0-10.el7.x86_64.rpm  #查看rpm安裝後,將生成哪些文件

8.1.4 查看軟件包內容是否被修改

rpm -V包名
rpm -Vf 文件路徑

例:

[root@xuegod63 ~]# which  find
/usr/bin/find
[root@xuegod63 ~]# rpm -qf /usr/bin/find
findutils-4.5.11-5.el7.x86_64
[root@xuegod63 ~]# rpm -Vf /usr/bin/find   #檢查具體文件
[root@xuegod63 ~]# echo aaa >> /usr/bin/find
[root@xuegod63 ~]# rpm -Vf /usr/bin/find
S.5....T.    /usr/bin/find
[root@xuegod63 ~]# rpm -V findutils   #檢查包
S.5....T.    /usr/bin/find

註:如果出現的全是點,表示測試通過
出現下面的字符代表某測試的失敗:

  • 5 — MD5 校驗和是否改變,你也看成文件內容是否改變
  • S — 文件長度,大小是否改變
  • L — 符號鏈接,文件路徑是否改變
  • T — 文件修改日期是否改變
  • D — 設備
  • U — 用戶,文件的屬主
  • G — 用戶組
  • M — 模式 (包含許可和文件類型)

? — 不可讀文件
再後面的c 文件名,它表示的是文件類型

  • c 配置文件

  • d 普通文件

g 不該出現的文件,意思就是這個文件不該被這個包所包含

  • l 授權文件(license file)

  • r 描述文件

互動: 查看系統中所有的rpm包及安裝的文件有沒有被***修改

root@xuegod63 ~]# rpm -Va  > rpm_check.txt
 > # 這個> 表示標準輸出重定向。 將rpm -qa 輸出到屏幕上的信息重定向到 rpm_check.txt 文件中。

在文件中加一下這個參數描述
註: 檢驗時參考了 /var/lib/rpm 目錄下的rpm數據庫信息

8.1.5 rpm包卸載和升級

用法:rpm -e(erase) 包名

[root@xuegod63 ~]# rpm -qa zsh
zsh-5.0.2-28.el7.x86_64
[root@xuegod63 ~]# rpm -e zsh
[root@xuegod63 ~]# 
[root@xuegod63 ~]# rpm -qa zsh
  • 參數: --nodeps 忽略依賴,建議在卸載時不要用rpm去卸載有依賴關系的包,應該用yum

    [root@xuegod63 ~]# rpm -e --nodeps lrzsz

升級:

[root@xuegod63 ~]# rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm    #因為升級時會有一些依賴包要解決。 所以一般我們使用yum update 包  來升級。

8.1.6 解決rpm依賴關系:

[root@xuegod63 ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm 
警告:/mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY

錯誤:依賴檢測失敗:

mariadb(x86-64) = 1:5.5.56-2.el7 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
    perl-DBD-MySQL 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要

解決:

[root@xuegod63 ~]# rpm -ivh /mnt/Packages/mariadb-5.5.56-2.el7.x86_64.rpm 
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/perl-DBD-MySQL-4.023-5.el7.x86_64.rpm 
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm 
8.2  YUM的使用
  • yum(全稱為 Yellow dog Updater,
    Modified)是一個前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關系,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。yum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔而又好記

    YUM:解決依賴關系問題,自動下載軟件包,它是基於C/S架構
    C=client S=ftp\http\file
    Linux架構師高薪入口:

1.學神IT教育官方網站:http://xuegod.ke.qq.com

2.10年行業資深老鳥MK:QQ2659153446

3.加入Linux技術交流QQ群:722287089,即可獲得以下福利:

①定期分享免費學習資料與視頻(工具+筆記+拓展實戰)
②10年行業資深老鳥在線答疑:技能+實戰+項目分享+高薪就業
③有機會免費領取Linux雲計算集群架構師4冊書籍

8.2.1 配置yum源

8.2.1.1 配置本地yum源

1、掛載鏡像:
先確定虛擬機光驅中有加載系統鏡像

[root@xuegod63 Packages]# mount /dev/cdrom /mnt/ 
[root@xuegod63 Packages]# ls /mnt/

2、配置yum源文件:

[root@xuegod63 ~]# vim /etc/yum.repos.d/centos7.repo   #必須以.repo結尾,插入以下內容
[centos7]
name=CentOS7
baseurl=file:///mnt
enable=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

註:

[centos7]               #yum源名稱,在本服務器上唯一的,用來區分不同的yum源           
name= CentOS7           #對yum源描述信息
baseurl=file:///mnt #yum源的路徑,提供方式包括FTP(ftp://...)、HTTP(http://...)、本地(file:///...                                                   光盤掛載目錄所在的位置)
enabled=1               #為1,表示啟用yum源;0為禁用
gpgcheck=0              #為1,使用公鑰檢驗rpm包的正確性;0為不校驗
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  #指定進行rpm校驗的公鑰文件地址

8.2.1.2 網絡yum源

Centos 7 配置網絡yum源
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo 

http://mirrors.aliyun.com/repo/Centos-7.repo
#wget 下載文件 ,-O 將wget下載的文件,保存到指定的位置,保存時可以重新起一個名字,或者直接寫一個要保存的路徑,這樣還用原來的文件名。
查看:

[root@xuegod63 yum.repos.d]# vim /etc/yum.repos.d/CentOS-Base.repo
找到這一條:baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/

註:$releasever系統的版本的值等於

[root@xuegod63 ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core) 
$basearch 等於:x86_64

排錯: 如果下載Centos-7.repo後,不用能
解決:打開阿裏雲鏈接:http://mirrors.aliyun.com/centos/ 找到centos7最新版本號,如:

然後執行:sed進行全文替換

[root@localhost ~]# sed -i  ‘s/$releasever/7.4.1708/g‘ /etc/yum.repos.d/CentOS-Base.repo
[root@localhost ~]# yum clean all    #清空一下yum緩存
[root@localhost ~]# yum list         #查看列表

8.2.2 yum使用

yum常用操作:

[root@xuegod63 ~]#  yum install -y httpd   #安裝軟件包, -y 直接安裝 
[root@xuegod63 ~]#  yum -y update    #升級軟件包,改變軟件設置和系統設置,系統版本內核都升級
[root@xuegod63 ~]#  yum -y upgrade   #升級軟件包,不改變軟件設置和系統設置,系統版本升級,內核不改變
[root@xuegod63 ~]#  yum -y update  # 不加任何包,表示整個系統進行升級
[root@xuegod63 ~]#  yum info  httpd    #查詢rpm包作用  
[root@xuegod63 ~]#  yum provides /usr/bin/find  #查看命令是哪個軟件包安裝的  
[root@xuegod63 ~]#  yum -y remove  包名    #卸載包 
[root@xuegod63 ~]#  yum search keyword   #按關鍵字搜索軟件包

yum報錯,註意的幾個小問題:

  • 1、確定光盤是否鏈接,光盤是否掛載
  • 2、配置文件中格式是否正確,字母,符號有沒有少寫,掛載點和配置文件中設置的是否一致
  • 3、網絡源需要聯網,操作和RPM類似,只是會自動安裝依賴項。

    8.2.3 yum安裝開發工具軟件包組

  • #yum grouplist #查看有哪些軟件包組

    語法:yum groupinstall GROUPNAME
    yum grouplist #顯示中文,如果想變成英文,則執行以一下命令
    [root@bogon Packages]# echo $LANG
    zh_CN.UTF-8
    [root@bogon Packages]#LANG=en_US.UTF-8
    yum grouplist
    [root@localhost Packages]# yum grouplist

測試:

[root@xuegod63 ~]# yum remove gcc  -y    #卸載開發工具軟件組中的gcc包
[root@xuegod63 ~]# yum groupinstall ‘Development tools‘  -y  #安裝開發工具軟件包組,安裝這組軟件包時,把gcc再安裝上了

8.3 實戰tar源碼包管理-srpm源碼包安裝方法

8.3.1 源碼安裝nginx

    1. 編譯環境如gcc和 gcc-c++編譯器,make
    1. 準備軟件 : nginx-1.12.2.tar.gz

部署Nginx

# yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel

pcre: 支持正則表達式,地址重寫rewrite
開始安裝

源碼編譯3把斧:./configure  , make  ,make install
[root@xuegod63 ~]# tar xvf nginx-1.12.2.tar.gz
[root@xuegod63 ~]# cd nginx-1.12.2
[root@xuegod63 ~]#./configure  --prefix=/usr/local/nginx
[root@xuegod63 ~]#  make -j 4
[root@xuegod63 ~]#  make install

3. 詳解源碼安裝3把斧

./configure

  • a. 指定安裝路徑,例如 --prefix=/usr/local/nginx
  • b. 啟用或禁用某項功能, 例如 --enable-ssl, --disable-filter
    --with-http_ssl_module
  • c. 和其它軟件關聯,例如--with-pcre
  • d. 檢查安裝環境,例如是否有編譯器gcc,是否滿足軟件的依賴需求
  • 最終生成:Makefile

    #make -j 4 #按Makefile文件編譯,可以使用-j 4指定4核心CPU編譯,提升速度 # make install #按Makefile定義的文件路徑安裝 # make clean //清除上次的make命令所產生的object和Makefile文件。使用場景:當需要重新執行configure時,需要執行make clean

8.3.2 刪除源碼包:

安裝完,刪除:

make  uninstall   

有時刪除不幹凈,所以建議大家安裝時,在configure步驟添加一個: --prefix 參數。這樣刪除或備份時,直接對刪除--prefix指定的安裝目錄操作就可以了。

8.3.3 實戰2:源碼編譯出錯的5個種完美解決方法

從windows上傳extundelete文件到linux,安裝xmanager  v5   或者CRT
解壓並安裝extundelet
[root@xuegod63 extundelete-0.2.4]# tar jxvf extundelete-0.2.4.tar.bz2 
[root@xuegod63 ~]# cd extundelete-0.2.4
[root@xuegod63]# rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm 
[root@xuegod63 extundelete-0.2.4]# ./configure   #檢查系統安裝環境
Configuring extundelete 0.2.4
configure: error: Can‘t find ext2fs library

源碼編譯出錯後,常見解決方法:
共5種方法

  • 方法1:[root@xuegod63 Packages]# rpm -ivh ext2fs^C #按兩下tab鍵。
    一般情況,ext2fs就是要安裝的軟件包的名字開頭。如果存在 自動補全
  • 方法2:[root@xuegod63 Packages]# ls ext2fs #查找完整關鍵字
  • 方法3:[root@xuegod63 Packages]# ls 2fs #查找部分關鍵字
  • 方法4: 終極大招 http://www.rpmseek.com/index.html
  • 方法5: 使用yum去搜索

    [root@xuegod63 Packages]# yum search ext2fs

安裝庫:

[root@xuegod63 Packages]# rpm -ivh e2fsprogs-libs-1.41.12-11.el6.x86_64.rpm 
warning: e2fsprogs-libs-1.41.12-11.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                                                            ########################################### [100%]
    package e2fsprogs-libs-1.41.12-11.el6.x86_64 is already installed
  • 互動:這裏顯示庫已經安裝,但是configure時又說找不到。怎麽辦?
  • 解決:安裝了庫,卻顯示找不到。 這種情況: 需要安裝庫的開發文件

    [root@xuegod63]# rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm

擴展:技巧
查看rpm包安裝後生成的文件:

[root@xuegod63 Packages]#rpm -qpl e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm | more
[root@xuegod63 extundelete-0.2.4]# make  -j 4  
[root@xuegod63 extundelete-0.2.4]# make install  #安裝
[root@xuegod63 extundelete-0.2.4]# ls /usr/local/bin/extundelete   #查看安裝後的文件
/usr/local/bin/extundelete

總結,軟件安裝方法特點:

  • rpm+yum:方便,軟件版本低。穩定性好、管理方便。性能稍差。 源碼編譯安裝:麻煩,軟件版本新,可以定制。穩定性稍差、管理稍差。性能好。
    源碼編譯安裝:主要是安裝LAMP或LNMP 架構時,我們會用

8.3.4 安裝.src.rpm源碼包的方法(了解)

srpm: Source RPM 的意思,也就是這個 RPM 檔案裏面含有原始碼( Source Code )。

上傳lrzsz-0.12.20-27.1.el6.src.rpm 到linux的/root目錄 
[root@xuegod63 ~]# rpm -e lrzsz  #先卸載軟件包

編譯:
[root@xuegod63 ~]# rpmbuild --rebuild lrzsz-0.12.20-27.1.el6.src.rpm #根據將src.rpm中源碼文件編譯成可執行的二進制文件。
若順利執行成功則會在root用戶家目錄下生成一個:/root/rpmbuild目錄。
在/root/rpmbuild/RPMS/x86_64/目錄下生成lrzsz-0.12.20-27.1.el7.centos.x86_64.rpm這個rpm文件。

#rpm -ivh rpmbuild/RPMS/x86_64/lrzsz-0.12.20-27.1.el7.centos.x86_64.rpm   #安裝

Linux架構師高薪入口:

1.學神IT教育官方網站:http://xuegod.ke.qq.com

2.10年行業資深老鳥MK:QQ2659153446

3.加入Linux技術交流QQ群:722287089,即可獲得以下福利:

①定期分享免費學習資料與視頻(工具+筆記+拓展實戰)
②10年行業資深老鳥在線答疑:技能+實戰+項目分享+高薪就業
③有機會免費領取Linux雲計算集群架構師4冊書籍
微信公眾號:
技術分享圖片
MK老師微信號:
技術分享圖片
總結:

  • 8.1 使用rpm命令-安裝-查看-卸載-rpm軟件包
  • 8.2 yum管理軟件包
  • 8.3 實戰tar源碼包管理-srpm源碼包安裝方法

Centos7.5-軟件包的管理與安裝