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軟體包的管理
- 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
-
- 編譯環境如gcc和 gcc-c++編譯器,make
-
- 準備軟體 : 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原始碼包安裝方法