一、软件包介绍
在Linux上可以安装各种程序,或称为软件包,Linux软件包分为三类:
分类 | 安装 | 特点 |
---|
rpm包 | 预先编译打包,安装简单 | 通常软件的稳定版本会被官方做成rpm包,软件版本可能偏低 | 源码包 | 手动编译打包,安装繁琐 | 软件版本丰富,可选择性强 | 二进制包 | 解压即可使用,安装简单 | 不能修改源代码 |
1、rpm包
在主流的linux系统上,多数软件的安装、升级、移除以及维护工作都是使用RPM软件包管理程序来完成的,那什么是RPM软件包呢?
RPM 是Red-Hat Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,
但是其原始设计理念是开放式的,通常软件的稳定版会被官方做成rpm,所以软件版本偏低。
2. rpm包格式
# 例1
abrt-python-doc-2.1.11-57.el7.centos.noarch.rpm
?
abrt-python-doc #软件包的名称?
2.1.11 #软件的版本 ?
57 #软件编译之后的发布的次数 ?
el7 #适合的操作系统的版本 ?
noarch #适用于不同版本的CPU ?
.rpm #后缀名
例2.
nginx-1.20.1-2.el7.x86_64
nginx: 软件包名
1.20.1: 版本号
2: 发布次数
el7: linux7 操作系统
x86_64: 硬件平台
.rpm : 后缀
3.rpm包使用平台
redhat centos redora suse
?
# 查看自己当前平台
[root@localhost ~]# uname -m
x86_64
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
4. 管理rpm包有两种命令
# 1、rpm命令:
需要自己找到rpm包,并且手动解决包的依赖性关系
ps:实际情况下,很难分辨缺少什么依赖包
# 2、yum命令:
相关rpm包事先都被存放于一个仓库里,仓库包含了所有的依赖包,所以yum按照可以帮我们解决依赖性问题
5.RPM包获取
- 本地的ISO镜像光盘(软件包可能存在版本偏低情况) : 挂载镜像有以下三种方式
方式1:
[root@localhost ~]# mount /dev/cdrom /opt/
?
方式2:
[root@localhost ~]# mount /dev/sr0 /opt/
?
方式3
[root@localhost ~]# mount -o loop /xxx.iso /opt # 先把镜像源传到本地
?
查看光盘里的rpm包
[root@localhost ~]# ls /opt/Packages/
- 自己去网上下载rpm包进行安装
1. 华为云开源镜像站:https:
2. epel源中下载?, redhat系列操作系统扩展软件包仓库
wget https:
3. 联网从yum仓库里获取rpm包 # yum的时候会自动解决依赖
二、安装
- 安装
rpm -ivh (本地rpm包全名,或目标源地址) (可以wget下载到本地或者直接放目标源地址?)
yum install (包名或包全名,或者远程目标地址) 如果跟全名,必须把包先下载到本地
-i:安装软件包
-v:显示安装过程
-h:显示安装进度条
- 卸载:
rpm -e <RPM包名或包全名>
yum remove 包名?
- 升级:
rpm -Uvh <RPM本地包全名,或远程目标源地址> (如果事先未按装,则相当于安装),?如果降级,需要先卸载高版本
yum update <包名,包全名,远程目标源地址> (如果本地事先未安装此包,不能升级)
升级时本地安装的包要比升级的版本低,如果降级,需要先卸载高版本。
直接跟包名,默认升级到最新版,跟包全名,需要把包先下载到本地。远程地址版本比升级的版本高
- 查询
1. rpm -qa #查询系统中安装的所有RPM软件包?
2. rpm -qa | grep php #检索系统中已经安装有关php的软件包
?
3. rpm -q (RPM包名) #查询指定软件包是否已安装
[root@localhost ~]# rpm -q python
python-2.7.5-90.el7.x86_64
4. rpm -qi <RPM包名> #查询系统中已安装包的描述信息
[root@localhost ~]# rpm -qi nginx
Name : nginx
Epoch : 1
Version : 1.20.1
Release : 2.el7
Architecture: x86_64
Install Date: Mon 19 Jul 2021 02:34:31 PM CST
Group : Unspecified
Size : 1766783
License : BSD
Signature : RSA/SHA256, Wed 02 Jun 2021 08:27:10 AM CST, Key ID 6a2faea2352c64e5
Source RPM : nginx-1.20.1-2.el7.src.rpm
Build Date : Wed 02 Jun 2021 08:24:16 AM CST
Build Host : buildvm-x86-14.iad2.fedoraproject.org
Relocations : (not relocatable)
Packager : Fedora Project
Vendor : Fedora Project
URL : https://nginx.org
Bug URL : https://bugz.fedoraproject.org/nginx
Summary : A high performance web server and reverse proxy server
Description :
Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
IMAP protocols, with a strong focus on high concurrency, performance and low
memory usage.
?
5. rpm -ql <RPM包名> #查询系统中已安装包里所包含的文件(包释放时都将文件释放到哪里)
[root@localhost ~]# rpm -ql python
/usr/bin/pydoc
/usr/bin/python
/usr/bin/python2
/usr/bin/python2.7
/usr/libexec/platform-python
/usr/share/doc/python-2.7.5
/usr/share/doc/python-2.7.5/LICENSE
/usr/share/doc/python-2.7.5/README
/usr/share/man/man1/python.1.gz
/usr/share/man/man1/python2.1.gz
/usr/share/man/man1/python2.7.1.gz
?
7. rpm -qc <RPM包名> #查询指定软件包的所有配置文件
[root@localhost ~]# rpm -qc nginx
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
8. rpm -qd <RPM包名> # 查询某个包安装的帮助文档
[root@localhost ~]# rpm -qd nginx
/usr/share/doc/nginx-1.20.1/CHANGES
/usr/share/doc/nginx-1.20.1/README
/usr/share/doc/nginx-1.20.1/README.dynamic
/usr/share/doc/nginx-1.20.1/UPGRADE-NOTES-1.6-to-1.10
/usr/share/man/man3/nginx.3pm.gz
/usr/share/man/man8/nginx-upgrade.8.gz
/usr/share/man/man8/nginx.8.gz
9. rpm -qf 文件路径 # 查询系统中指定文件或命令所属的软件包
[root@localhost ~]# rpm -qf /etc/passwd
setup-2.8.71-11.el7.noarch
[root@localhost ~]# rpm -qf `which nginx`
nginx-1.20.1-2.el7.x86_64
?10. yum provides [命令或文件路径] # 本地未安装的情况下也可以查询区别于rpm -qf
11. -p(参数) # 在上述选项的基础上加选项-p,就可以查看尚未安装的rpm包信息
[root@localhost ~]# rpm -e dos2unix # 先卸载一下,证明本地rpm数据库中没有该包信息?
[root@localhost ~]# rpm -qip /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
?
- 额外选项
--nomd5 # 不检验软件包的签名
--nodeps # 忽略依赖性安装软件,安装后软件有可能无法使用,最好是解决依赖性后再安装
[root@localhost ~]# rpm -e dos2unix --nodeps # 忽略依赖关系
--force # 强制安装软件包,只有安装和升级可以强制执行
二、yum管理rpm包
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
client---->ftp:http:file----->yum地址----->yum仓库(rpm包集合)
配置一个yum仓库,就是配置一个源(地址)----->指向互联网上的仓库
配置文件
[root@localhost yum.repos.d]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever # 缓存目录
keepcache=0 # 0表示不缓存,1表示开启缓存
debuglevel=2 # 调试级别
logfile=/var/log/yum.log # 日志路径
exactarch=1 # 检查平台是否兼容
obsoletes=1 # 检查包是否废弃
gpgcheck=1 # 检查来源是否合法,需要有制作者的公钥信息
plugins=1
installonly_limit=5 # 同时可以安装软件包个数为5 设为0或1表示不受限制
bugtracker_url=http:
distroverpkg=centos-release
# metadata_expire=90m # 每小时自动检查元数据
仓库 存放了一个所有相关软件包的一个文件夹 能作为yum仓库必必须具备两点: 1. 文件下涵盖所有的软件包 2. 该文件夹下必须要有一个文件记录了本文件夹下所包含软件包的依赖关系。
常用选项说明:
#仓库
yum repolist # 查询可用仓库
yum repolist all # 查看包括已启用或禁用的所有仓库状态 ?
# 关闭与启用仓库:本质:都是在修改repo文件中的enable的值 0 不启用 1 启用
yum-config-manager --disable epel #关闭仓库epel
yum-config-manager --enable epel #启用仓库epel ?
#查看
yum list #列出可用仓库中所有的软件包
yum list | less
yum grouplist #列出可用仓库中的软件组
yum list installed # 查询已经安装的
yum provides /usr/sbin/ifconfig #查询命令所属的软件包,可以不加路径,只写命令名字
与rpm -qf的区别在于可以查询未按装的命令,rpm -qf后面只能跟文件或命令的绝对路径
#安装
yum install httpd httpd-tools #加上-y选项可以变成非交互
yum groupinstall "开发工具" -y #安装软件组,一个软件组中包含了多个软件包
yum groups install "开发工具" -y #同上
yum localinstall # 安装本的rpm包,会自动查找当前系统上已有的仓库解决依赖关系
#卸载
yum remove httpd httpd-tools http* #卸载软件包
yum groupremove "开发工具" -y. #卸载软件组
yum groups remove "开发工具" -y #同上
?
#重装
yum reinstall httpd #不小心删除了配置文件的时,可以reinstall一下 ?
#更新
yum check-update # 检查可以更新的软件包 ?
yum update -y #更新所有软件包,包括内核,通常只在刚装完系统时执行
yum update httpd -y #更新某个软件包
#缓存
yum makecache #制作元数据缓存
yum clean all #清理元数据缓存
vim /etc/yum.conf #默认软件包下载安装后会自动删除
#设置keepcache=1 即开启了软件包缓存
#缓存目录为配置文件中指定的cachedir ?
#历史记录
yum history # 查看执行过的yum命令历史记录
yum history info ID号 # 查看具体某一条yum命令的详细信息
yum history undo ID号 # 撤销执行过的历史命令
?
# 关于安装需要注意: 无论yum安装的软件来自何方,yum时刻以自己仓库中的repodata存储的依赖关系为准,如果有多个仓库,就依次检索
#1、yum直接安装公网的rpm包, 会自动查找当前系统上已有的仓库解决依赖关系 yum install https:
#2、Yum直接安装本地的rpm包,会自动查找当前系统上已有的仓库解决依赖关系 yum localinstall -y /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
要使用yum前,需要准备一个yum源(我们也称为yum仓库),
这个可以是一个互联网上的仓库,也可以是本地自己搭建的仓库.仓库里面有什么呢?里面全部都是.rpm的软件包.一台linux,可以添加N多个yum源,
能搜索的软件包数量就是N个yum源之和.
系统常见yum源
1.自定义的本地源 ?
2.网络上的源头,如:base基础源、epel扩展源、与服务相关的源(官网)
wget -O /etc/yum.repos.d/CentOS-Base.repo http:
.配置第三方 yum 源(EPEL)
wget -O /etc/yum.repos.d/epel.repo http:
|