軟件包管理–rpm、yum

rpm軟件包管理,rpm命令的使用。yum命令使用,yum源的搭建,網絡yum源的搭建方法。編譯安裝http

軟件包管理

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

http://mirrors.163.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

(1)
燕李鵬燕李鵬
上一篇 2017-12-03
下一篇 2017-12-03

相關推薦

  • 馬哥教育網絡班20期+第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who root     pts/0        2016-06-23&nb…

    Linux干貨 2016-06-29
  • Python內置數據結構——集合set

    集合 定義 set翻譯為集合 collection翻譯為集合類型,是一個較大的概念 set是一個可變的、無序的、不重復的元素組成的集合 set的元素要求必須可以hash,目前已學的不可hash的類型只有list、set 元素不可以索引 set可以迭代 set的初始化 set_1 =set() #表示定義一個空集合set_1 set_1 =set(iterab…

    Linux干貨 2017-10-03
  • bash腳本入門之變量、運算、條件測試

    概述     腳本編程能力是作為運維工程師不可或缺的一項基本技能,各種系統的運維,如果完全靠命令行一條一條命令來執行,工作效率可想而知,而腳本卻可以將完成一定功能的各個命令依據一定的流程控制,邏輯判斷去完成某種功能,提升工作效率。本章就簡單介紹一些linux下的bash腳本編程的基礎入門知識,具體內容分為以下幾個方面:…

    Linux干貨 2016-08-12
  • N22-第三周作業

    列出當前系統上所有已經登錄的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# w |cut -d ' ' -f1 |sort -u lucy root USER 2.取出最后登錄到當前系統的用戶的相關信息。 [root@localhost ~]# last -1 root   &nbs…

    Linux干貨 2016-08-28
  • 有關腳本的一些使用及其注意事項

    1,shell 腳本 格式要求:首行shebang機制                  #!/bin/bash       &n…

    2017-08-05
  • Nginx 編譯安裝

    Nginx (“engine x”) 是一個高性能的 HTTP 和 反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服 1、Apache服務器和nginx的優缺點: Apache具有很優秀的性能,而且通過模塊可以提供各種豐富的功能。 1)首先Apache對客戶端的響應是支持并發的 ,運行httpd這個daemon進程之后,它會同時產生多個子進程/…

    Linux干貨 2017-02-06
欧美性久久久久