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

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

本節所講內容:

  • 8.1 使用rpm命令-安裝-檢視-解除安裝-rpm軟體包
  • 8.2 yum管理軟體包
  • 8.3 實戰tar原始碼包管理-srpm原始碼包安裝方法

1 軟體包的管理

軟體包的型別

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

8.1.1 rpm軟體包的管理

rpm包的獲取方式:

  • 1、Centos系統映象光碟
  • 3、比如安裝mysql、nginx軟體,我們可以去它的官方網站下載:http://www.mysql.com rpm包格式的說明

例1:[[email protected] ~]# 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 從本地安裝

[[email protected] ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
[[email protected] ~]# 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查詢功能 聯絡方式: 學神IT教育官方網站: http://xuegod.ke.qq.com 學神IT教育-Linux技術交流QQ群: 722287089 諮詢MK老師 QQ: 2659153446 用法:rpm -q(query) 常與下面引數組合使用

  • -a(all) 查詢所有已安裝的軟體包

  • -f(file)系統檔名(查詢系統檔案所屬哪個軟體包),反向查詢

  • -i 顯示已經安裝的rpm軟體包資訊,後面直接跟包名

  • -l(list) 查詢軟體包中檔案安裝的位置

  • -p 查詢未安裝軟體包的相關資訊,後面要跟軟體的命名

  • -R 查詢軟體包的依賴性 例:

    [[email protected] mnt]# rpm -q zsh —>查詢指定的包是否安裝 [[email protected] mnt]# rpm -qa —>查詢所有已安裝包 [[email protected] mnt]# rpm -qa | grep vim —>查詢所有已安裝包中帶vim關鍵字的包 [[email protected] ~]# which find #檢視find命令的路徑 /usr/bin/find [[email protected] ~]# rpm -qf /usr/bin/find #查詢檔案或命令屬於哪個安裝包 查詢已經安裝的rpm包的詳細資訊或作用 rpm -qi rpm包名 [[email protected] ~]# rpm -qi lrzsz

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

[[email protected] ~]# 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資料庫的一個模組
 [[email protected] mnt]# rpm -qpl  /mnt/Packages/zip-3.0-10.el7.x86_64.rpm  #檢視rpm安裝後,將生成哪些檔案

8.1.4 檢視軟體包內容是否被修改

rpm -V包名 rpm -Vf 檔案路徑 例:

[[email protected] ~]# which  find
/usr/bin/find
[[email protected] ~]# rpm -qf /usr/bin/find
findutils-4.5.11-5.el7.x86_64
[[email protected] ~]# rpm -Vf /usr/bin/find   #檢查具體檔案
[[email protected] ~]# echo aaa >> /usr/bin/find
[[email protected] ~]# rpm -Vf /usr/bin/find
S.5....T.    /usr/bin/find
[[email protected] ~]# 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包及安裝的檔案有沒有被黑客修改

[email protected] ~]# rpm -Va  > rpm_check.txt
 > # 這個> 表示標準輸出重定向。 將rpm -qa 輸出到螢幕上的資訊重定向到 rpm_check.txt 檔案中。

在檔案中加一下這個引數描述 注: 檢驗時參考了 /var/lib/rpm 目錄下的rpm資料庫資訊

8.1.5 rpm包解除安裝和升級

用法:rpm -e(erase) 包名

[[email protected] ~]# rpm -qa zsh
zsh-5.0.2-28.el7.x86_64
[[email protected] ~]# rpm -e zsh
[[email protected] ~]# 
[[email protected] ~]# rpm -qa zsh
  • 引數: --nodeps 忽略依賴,建議在解除安裝時不要用rpm去解除安裝有依賴關係的包,應該用yum

    [[email protected] ~]# rpm -e --nodeps lrzsz

升級:

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

8.1.6 解決rpm依賴關係:

[[email protected] ~]# 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 需要

解決:

[[email protected] ~]# rpm -ivh /mnt/Packages/mariadb-5.5.56-2.el7.x86_64.rpm 
[[email protected] ~]# rpm -ivh /mnt/Packages/perl-DBD-MySQL-4.023-5.el7.x86_64.rpm 
[[email protected] ~]# 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 聯絡方式: 學神IT教育官方網站: http://xuegod.ke.qq.com 學神IT教育-Linux技術交流QQ群: 722287089 諮詢MK老師 QQ: 2659153446 8.2.1 配置yum源 8.2.1.1 配置本地yum源

1、掛載映象: 先確定虛擬機器光碟機中有載入系統映象

[[email protected] Packages]# mount /dev/cdrom /mnt/ 
[[email protected] Packages]# ls /mnt/

2、配置yum原始檔:

[[email protected] ~]# 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源
[[email protected] ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo 

#wget 下載檔案 ,-O 將wget下載的檔案,儲存到指定的位置,儲存時可以重新起一個名字,或者直接寫一個要儲存的路徑,這樣還用原來的檔名。 檢視:

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

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

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

排錯: 如果下載Centos-7.repo後,不用能

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

[[email protected] ~]# sed -i  's/$releasever/7.4.1708/g' /etc/yum.repos.d/CentOS-Base.repo
[[email protected] ~]# yum clean all    #清空一下yum快取
[[email protected] ~]# yum list         #檢視列表

8.2.2 yum使用

yum常用操作:

[[email protected] ~]#  yum install -y httpd   #安裝軟體包, -y 直接安裝 
[[email protected] ~]#  yum -y update    #升級軟體包,改變軟體設定和系統設定,系統版本核心都升級
[[email protected] ~]#  yum -y upgrade   #升級軟體包,不改變軟體設定和系統設定,系統版本升級,核心不改變
[[email protected] ~]#  yum -y update  # 不加任何包,表示整個系統進行升級
[[email protected] ~]#  yum info  httpd    #查詢rpm包作用  
[[email protected] ~]#  yum provides /usr/bin/find  #檢視命令是哪個軟體包安裝的  
[[email protected] ~]#  yum -y remove  包名    #解除安裝包 
[[email protected] ~]#  yum search keyword   #按關鍵字搜尋軟體包

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

  • 1、確定光碟是否連結,光碟是否掛載

  • 2、配置檔案中格式是否正確,字母,符號有沒有少寫,掛載點和配置檔案中設定的是否一致

  • 3、網路源需要聯網,操作和RPM類似,只是會自動安裝依賴項。 8.2.3 yum安裝開發工具軟體包組

  • #yum grouplist #檢視有哪些軟體包組

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

測試:

[[email protected] ~]# yum remove gcc  -y    #解除安裝開發工具軟體組中的gcc包
[[email protected] ~]# 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
[[email protected] ~]# tar xvf nginx-1.12.2.tar.gz
[[email protected] ~]# cd nginx-1.12.2
[[email protected] ~]#./configure  --prefix=/usr/local/nginx
[[email protected] ~]#  make -j 4
[[email protected] ~]#  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
[[email protected] extundelete-0.2.4]# tar jxvf extundelete-0.2.4.tar.bz2 
[[email protected] ~]# cd extundelete-0.2.4
[[email protected]]# rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm 
[[email protected] extundelete-0.2.4]# ./configure   #檢查系統安裝環境
Configuring extundelete 0.2.4
configure: error: Can't find ext2fs library

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

  • 方法1:[[email protected] Packages]# rpm -ivh ext2fs^C #按兩下tab鍵。 一般情況,ext2fs就是要安裝的軟體包的名字開頭。如果存在 自動補全

  • 方法2:[[email protected] Packages]# ls ext2fs #查詢完整關鍵字

  • 方法3:[[email protected] Packages]# ls 2fs #查詢部分關鍵字

  • 方法5: 使用yum去搜索

    [[email protected] Packages]# yum search ext2fs

安裝庫:

[[email protected] 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時又說找不到。怎麼辦?

  • 解決:安裝了庫,卻顯示找不到。 這種情況: 需要安裝庫的開發檔案

    [[email protected]]# rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm

擴充套件:技巧 檢視rpm包安裝後生成的檔案:

[[email protected] Packages]#rpm -qpl e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm | more
[[email protected] extundelete-0.2.4]# make  -j 4  
[[email protected] extundelete-0.2.4]# make install  #安裝
[[email protected] 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目錄 
[[email protected] ~]# rpm -e lrzsz  #先解除安裝軟體包

編譯: [[email protected] ~]# 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   #安裝

聯絡方式: 學神IT教育官方網站: http://xuegod.ke.qq.com 學神IT教育-Linux技術交流QQ群: 722287089 諮詢MK老師 QQ: 2659153446 微信公眾號: 在這裡插入圖片描述 MK老師微信: 在這裡插入圖片描述 總結:

  • 8.1 使用rpm命令-安裝-檢視-解除安裝-rpm軟體包
  • 8.2 yum管理軟體包
  • 8.3 實戰tar原始碼包管理-srpm原始碼包安裝方法