Centos7.5-軟件包的管理與安裝
- 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
-
- 編譯環境如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
[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-軟件包的管理與安裝