軟件包管理
Rpm管理
Rpm包命名規則:
Bind(name)-版本號-發行號.cpu架構.rpm
包之間:可能存在依賴關系,甚至循環依賴
解決依賴包管理工具:
yum:rpm包管理器的前端工具
apt-get:deb包管理器前端工具
zypper: suse上的rpm前端管理工具
dnf: Fedora 18+ rpm包管理器前端管理工具
查看二進制程序所依賴的文件
Ldd ?/path/to/binary_file
管理及查看本機裝在的庫文件
Ldconfig ??加載庫文件
/sbin/ldconfig ?-p 顯示本機已經緩存的所有可用庫文件
庫文件名及文件路勁映射關系
配置文件:/etc/ld.so.conf ??/etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache
數據庫(公共):/var/lib/rpm
獲取程序包的途徑:
(1) 系統發版的光盤或官方的服務器;
CentOS鏡像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
第三方組織:
Fedora-EPEL:
Extra Packages for Enterprise Linux
Rpmforge:RHEL推薦,包很全
Rpm命令:
安裝
rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
-i :install ,安裝
-v :查看詳細的安裝過程
-h :以#顯示程序包管理執行進度?
-vv :查看比-v更詳細的安裝信息
Install-options
–test :測試安裝,但不真正執行安裝
–nodeps:忽略依賴關系,進行安裝(可能會缺失一些機制,也可能安裝后不能使用)
–force: ?強制安裝
–replacefiles: 當文件已存在時,可以覆蓋安裝
–oldpackage:降級安裝。(不刪除原來的版本)
–nosignature:不檢查包來源合法性
–nodigest:不檢查包完整性
–noscripts:不執行程序包腳本
Rpm2cpio 包文件 |cpio -itv ???預覽包內文件
rpm2cpio tree-1.6.0-10.el7.x86_64.rpm | cpio ?-itv
Rpm2cpio 包文件 |cpio -id /path/to/ 指定釋放包內文件(丟失文件可以直接從包里釋放),可能會導致權限丟失,注意權限問題
rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -id ./usr/bin/tree
升級
-U ?–upgrade :如果安裝有舊程序包,則升級,沒有安裝就執行安裝
-F ?–freshen:如果安裝有舊程序包,則升級,沒有安裝就不升級
Rpm -Uvh ??PACKAGE_FILE
Rpm -Fvh ??PACKAGE_FILE
注意:
(1) 不要對內核做升級操作;Linux支持多內核版本并存,因此,對直接安裝新版本內核
(2) 如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留
卸載
Rpm ?-e ?PACKAGE_FILE
–nodeps:不檢查依賴,直接卸載
如果程序安裝之后,對配置文件進行修改,那么在卸載的時候,會自動對修改過的配置文件自動備份(多次卸載也只能保留一份)
查詢
Rpm ?-q ?PACKAGE_FILE ?查詢指定的包是否已經安裝
Rpm ??-q: ?vsftpd
-qa:查詢已安裝的所有包
Rpm -qa ?“*tre*” 可以使用通配符(建議使用引號)
-ql:查詢指定包安裝后生成的文件列表
Rpm -ql vsftpd
-qi:查詢指定包的說明信息
-qc:查詢指定包的安裝的配置文件
安裝在/etc/下的文件列表
-qd:查詢指定包安裝的幫助文件
安裝在 /usr/share/doc下的文件列表
–scripts:查詢指定包中包含的腳本(自身所帶的腳本)
–provides:列出指定程序包所提供的capability
-qR:查詢指定的程序包所依賴的capability
-qpl:查詢未安裝的文件包包含的文件列表
Rpm ?-qpl ??PACKAGE_NAME
Rpm -qf ?/PATH/TO/SOMEFILE:查詢指定的文件是由哪個rpm包安裝生成的
Rpm -qf ?/var/ftp/pub
–whatprovides capability:查詢指定的capability由哪個包提供
Rpm -q –whatprovides ?bash:bash這個能力是由哪個包提供
–whatrequires capability:查詢指定的capability被哪個包所依賴
Rpm -q –whatrequires bash
創建repodate : ?createrepo
數據庫重建
Rpm數據庫位置:/var/lib/rpm
Rpm –initdb :初始化
如果事先不存在數據庫,則新建,如果存在,則不做任何操作
Rpm –rebuilddb:重建已安裝的包頭的數據庫索引目錄,一定會重新建立
新建的rpm數據庫,沒有以前的安裝信息
校驗
Rpm -V PACKAGE_NAME
包來源合法性驗正及完整性驗正
Rpm -K PACKAGE_NAME
rpm -K|checksig rpmfile 檢查包的完整性和簽名
完整性驗正:SHA256
來源合法性驗正:RSA
公鑰加密
對稱加密:加密、解密使用同一密鑰
非對稱加密:密鑰是成對兒的
public key: 公鑰,公開所有人
secret key: 私鑰, 不能公開
導入所需要公鑰
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
CentOS 7發行版光盤提供:RPM-GPG-KEY-CentOS-7
rpm -qa “gpg-pubkey*”
卸載密匙
Rpm -e “gpg-pubkey*”
誤刪除rpm命令,恢復方法
掛載光盤,進入救援模式,進入光盤所在目錄/run/install/repo,輸入命令
Rpm -ivh RPM-XXXXX.rpm –root=/mnt/sysimage/ ??就可以安裝。
-root=/mnt/sysimage/ ?這里是真正的指向root所在目錄
Yum安裝
??方便的解決rpm包安裝時候的依賴性問題
Yum repo :存儲倉庫,存儲了眾多rpm包,以及包的相關元數據文件(放置于特定目錄repodata下)
構建yum倉庫 ?/etc/yum.conf.d/
Vim ?base.repo
[base] ?(倉庫表示,唯一,不能重復)
Name=base centos7.4 ??(描述信息)
Baseurl=file:///misc/cd/ ??(本地光盤)
http:// ???網絡地址
https:// ??網絡地址
ftp:// ??ftp地址
Gpgcheck=1(默認為1,開啟)| 0(關閉)
Enabled={0|1}是否啟用此yum倉庫,默認啟用(0為關閉,1為默認)
# gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-7(導入密匙,也可以手動導入)可選
清理yum緩存:yum clean all
查看yum緩存大?。篸u -sh /var/cache/yum/
清除/var/cache/yum/$basearch/$releasever緩存
構建緩存:?yum makecache?
?Yum命令用法
Yum ??options ??command ?| package
Yum 安裝:
Install(localinstall):安裝
Yum install vsftp
Reinstall:重新安裝
Update(localupdate):升級
Downgrade:降級
-y:自動回答為“yes”
-q:靜默模式
–disablerepo=repoidglob:臨時禁用此處指定的repo
–enablerepo=repoidglob:臨時啟用此處指定的repo
–noplugins:禁用所有插件
–nogpgcheck:禁止進行gpg check
檢查可用升級:?
yum check-update
v????卸載程序包:
yum remove | erase package1 [package2] […]
包組管理的相關命令:
yum groupinstall group1 [group2] […]
yum groupupdate group1 [group2] […]
yum grouplist [hidden] [groupwildcard] […]
yum groupremove group1 [group2] […]
yum groupinfo group1 […]
顯示倉庫列表
Yum ?repolist ?all (所有)| enabled | disabled
顯示程序包
Yum ?list {all |glob_exp1 }
Yum ?list { available | installed | updates }
包組管理的相關命令:
yum groupinstall group1 [group2] […] ?安裝組包
yum groupupdate group1 [group2] […] ??升級組包
yum grouplist [hidden] [groupwildcard] […] ?列出組包
yum groupremove group1 [group2] […] ?移除組包
yum groupinfo group1 […]
搜索:yum search string1 [string2] […]
以指定的關鍵字搜索程序包名及summary信息
Yum日志?: ?/var/log/yum.log
Yum歷史: ??yum ?history ??{undo | info | redo }
yum的repo配置文件中可用的變量:
$releasever: 當前OS的發行版的主版本號
$arch: 平臺,i386,i486,i586,x86_64等
$basearch:基礎平臺;i386, x86_64
$YUM0-$YUM9:自定義變量
?????可用的網絡yum源
阿里云repo文件:http://mirrors.aliyun.com/repo/
v?????CentOS系統的yum源
ü????????阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
v????EPEL的yum源:
ü????????阿里云: https://mirrors.aliyun.com/epel/$releasever/x86_64
搭建ftp作為yum源實例(用光盤)
ftp服務器配置:centos 7
關閉防火墻:systemctl stop firewalld
禁用防火墻:systemctl disable firewalld
修改SELINUX: vim /etc/selinux/config
SELINUX=premissive
關閉SELINUX: ?setenforce 0
查看selinux狀態:getenforce
安裝vsftp.rpm包: rpm ?-ivh ?vsftp(包名)
啟動vsftpd服務:systemctl ?start ?vsftpd
設為開機啟動:systemctl ?enable vsftpd
創建目錄:mkdir ?/var/ftp/pub/centos/{6,7}/os/x86_64 ?-pv
將centos7 光盤掛載:mount /dev/sr0 ?/var/ftp/pub/centos/7/x86_64/
將centos6光盤掛在:mount /dev/sr1 ?/var/ftp/pub/centos/6/x86_64/
建立yum源:vim ?/etc/yum.repo.d/base.repo
[base]
Name=ftp
Baseurl=ftp://服務器IP/pub/centos/$releasever/os/$basearch
Gpgcheck=0 (關閉gpg驗證)
在pc centos 6配置
關閉防火墻:service ?iptables ?stop
開機禁用防火墻:chkconfig ?iptables ?off
配置yum源:vim ?/etc/yum.repo.d/base.repo
[base]
Name=ftp
Baseurl=ftp://服務器IP/pub/centos/$releasever/os/$basearch
Gpgcheck=0 (關閉gpg驗證)
配置完成,記得清理yum緩存: yum ?clean all
下面就可以嘗試安裝rpm包了
編譯安裝httpd:
下載httpd源碼包:wget 鏈接地址
解壓源碼包:tar ?xvf ?PACKAGE_NAME
安裝包組 ?:yum groups install Development ?Tools
查看: cat README
查看configure幫助,了解一些需要獨立安裝的目錄:./configure –help
編譯安裝: ./configure ?–prefix=/app/httpd24 ?–sysconfdir=/etc/httpd24/ ?–enable=ssl
–enable-proxy-fcgi
看提示,補充安裝相應的包
yum install apr-devel apr-util-devel openssl-devel pcre-devel
Make安裝: make -j ?4 (-j 4:4核cpu同時進行安裝)
Make install
配置運行環境:vim?。痚tc/profile.d/httpd24.sh
PATH=/app/httpd24/bin:#PATH
Source /etc/profile.d/httpd24.sh
將man幫助放置于系統文件中:
Vim /etc/man_db.conf(centos7)
添加 ???MANDATORY_MANPATH ?????????????/app/httpd24/man
Vim /etc/man.config
添加 ???MANPATH /app/httpd22/man
啟動服務: Apachectl ?(start)
查看監聽端口 :ss -ntl ?(可以看到80端口已經打開)
修改http內容路徑: /app/httpd24/htdocs/index.html
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89248