Linux软件包管理
软件包的类型
Windows
.exe
.msi
绿色免安装包
Linux
可执行安装包
Redhat
rpm
Debian
deb
源码包 (需要编译安装)
二进制包 (免安装包)
1.RPM基本概述
1.什么是rpm?
RPM全称 RPM Package Manager 缩写,由红帽开发用于软件包的安装升级卸载与查询
缺点
1.早期功能较少,无法定制,无法满足企业的需求;现在的功能足以满足大部分的需求
2.复杂的依赖关系 (装A 后 B也要装 卸载B之前 要卸载A)
仓库安装解决RPM的依赖关系
2.rpm包名组成部分?
RPM包命名以-将软件分成了若干部分 bash-4.2.46-28.el7.x86_64.rpm
3.如何获取rmp包
我们先通过虚拟机加载镜像,然后在linux中执行 mount /dev/cdrom /mnt ,此时你会在 /mnt/Packages 目录下看到很多rpm的包文件。那么就可以开始rpm包管理之旅
2.RPM管理功能
1.安装功能
使用rpm命令安装软件包, 需要了解如下参数:
-i: 安装
-v: 详细信息
-h: 安装进度
--test: 测试是否能够安装成功
--force: 强制重新安装
--nodeps: 忽略依赖关系
安装软件包, 需要指定软件包绝对路径
rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm rpm -ivh /mnt/Packages/vsftpd-3.0.2-27.el7.x86_64.rpm
在软件包所在目录下可以不指定绝对路径
cd /mnt/Packages/ [root@server Packages]# rpm -ivh zsh-5.0.2-34.el7.x86_64.rpm
测试一个软件包是否能在该系统上安装
# rpm -ivh --test /mnt/Packages/vsftpd-3.0.2-27.el7.x86_64.rpm
如果软件包存在, 强制再次安装
# rpm -ivh --force /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
安装samba服务需要依赖其他组件, 使用--nodeps可重新强制安装
# rpm -ivh --nodeps /mnt/Packages/samba-4.10.4-10.el7.x86_64.rpm
2.查询功能
查看指定软件包是否安装
rpm -q rpm -q vsftpd 查看vsftpd这个rpm包是否安装
查看系统中已安装的所有RPM软件包列表
rpm -qa rpm -qa | grep ftp 模糊查找系统已安装的rpm包
查看已安装软件的详细信息
rpm -qi rpm -qi vsptpd 查看vsftpd软件包的相关信息
查询已安装软件包所安装的目录、文件列表
rpm -ql rpm -ql vsptpd 查看rpm包所安装的文件
查询已安装软件包的配置文件
rpm -qc rpm -qc vsptpd 查看rpm包相关的配置文件
查询已安装软件包的帮助文档
rpm -qd
查询文件或目录属于哪个RPM软件
rpm -qf 查询配置文件或命令来自于哪个rpm包 rpm -qf /etc/vsftpd/vsftpd.conf rpm -qf /usr/sbin/vsftpd
查询未安装的软件包信息
rpm -qip 查询未安装的rpm包详细信息 rpm -qlp 查询未安装的软件包会产生哪些文件 rpm -qpl /mnt/Packages/python3-3.6.8-13.el7.x86_64.rpm rpm -qpi /mnt/Packages/python3-3.6.8-13.el7.x86_64.rpm
3.升级功能
rpm -U 如果老版本不存在则全新安装,如果存在有新版即升级
wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm
1.先安装低版本
rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
2.尝试安装高版本(会出现错误)
rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
3.使用升级的方式,完美解决替换
rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm
4.卸载功能
卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
先查询,后卸载
rpm -qa | grep sh 先查询 rpm -e zsh 后卸载
5.RPM包校验
软件相关的数据库存放于 /var/lib/rpm 目录
rpm -V vsftpd
S.5....T. c /etc/pam.d/vsftpd
.......T. c /etc/vsftpd/ftpusers
S.5....T. c /etc/vsftpd/vsftpd.conf
.M....... /var/ftp/pub
S //文件的容量大小是否被改变
M //文件的类型或者文件的属性是否被修改
5 //MD5这一种指纹加密的内容已经不同
D //装置的主/次代码已经改变
L //路径已经被改变
U //文件的所属主已被修改
G //文件的所属组已被修改
T //文件的创建时间已被改变
3.yum基本概述
1.什么是yum
Yum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载 .rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装。(PS: YUM是生产最佳实践)
2.YUM源是什么
要成功的使用 YUM 工具安装更新软件或系统,就需要有一个包含各种 rpm 软件包的repository(软件仓库),这个软件仓库我们习惯称为 yum 源。(可以是本地源、网络源)
3.YUM源配置实例
yum源的选择 Base源 1.系统光盘 2.线上镜像站 EPEL源 1.线上镜像站 第三方源 nginx、zabbix、mysql 由第三方官网提供 小众镜像站 少
需求1:部署Base源
1.将默认的所有repo文件都注释掉
mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/{*.repo,/bak/}
2.从线上镜像站获取Base库文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
备注:如果是非阿里云的产品,将下载的仓库文件关于aliyuncs的行都删除
进行缓存
yum makecache
需求2:部署epel源
aliyun:
从线上镜像站获取epel库文件
默认系统是国外源,需要替换为国内的源 #wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
扩展源,有很多软件在基本源中没有 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2)Nginx官方源
比如在学习Nginx时需要使用官方的yum源来安装
yum 仓库配置文件的配置项 #vim /etc/yum.repos.d/nginx.repo [nginx] #仓库名 name=nginx repo #仓库的描述,可有可无,如果没有,仓库名就是描述 baseurl=http://nginx.org/packages/centos/7/$basearch/ #仓库的路径,可以通过http\https\ftp\file:// gpgcheck=0 #密钥校验,0关,1开(默认,建议关闭) enabled=1 #密钥的路径,只有gpgcheck=1才会触发该行配置
1.确认是否挂在在mnt目录下 mount /dev/cdrom /mnt
2.备份.repo配置文件 mkdir -p /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
3.编写yum 仓库配置文件 [root@localhost ~]# cat /etc/yum.repos.d/local.repo [cdrom] //仓库名 name=cdrom //命名 baseurl=file:///mnt //路径 enabled=1 //仓库开关 默认打开 gpgcheck=0 //密钥校验 默认打开 0关 1开 我们一般都关
4.查看是否存在yum本地仓库配置文件 yum repolist
3)yum 操作实例
1.查询软件包
列出软件仓库中可用的软件
# yum list
进行模糊查找
# yum list|grep ftp
列出软件包详情
# yum info ftp
列出已经安装和所有可使用的软件组
# yum groups list # yum grouplist
列出yum源可用的软件仓库
# yum repolist
列出全部yum源可用和禁用的仓库
# yum repolist all
查看这个文件或命令属于哪个包
# yum provides /etc/my.cnf # yum provides cd
2.安装软件包
安装软件只需要给出软件名称
# yum install traceroute
安装过程中分析依赖关系后, 直接安装, 无需交互
# yum install php -y
安装本地的rpm包, 如果有依赖关系, 会自动从软件仓库中下载所需依赖
# yum localinstall /mnt/Packages/bind-9.11.4-16.P2.el7.x86_64.rpm
安装网络上rpm包
# yum install http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
安装一整个组的软件
# yum groups install Development tools Compatibility libraries Base Debugging Tools
重新安装软件
# yum reinstall vsftpd
3.更新软件包
对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级
# yum check-update
更新软件
# yum update -y python
如下的执行很危险,这代表更新整个系统所有的软件,包括内核
#yum update -y
4.删除软件包
删除该软件包,不会删除依赖, 但是我们尽可能不要使用删除软件操作
# yum install -y samba # yum erase -y samba # yum remove -y samba
5.yum 缓存
缓存yum源软件仓库
#yum makecache
6.Yum历史记录
查看历史执行Yum命令
#yum history
使用第三方安装Nginx
关闭防火墙
systemctl stop firewalld
永久关闭防火墙
systemctl disable firewalld
启动nginx服务
systemctl start nginx
停止nginx服务
systemctl stop nginx
显示端口 nginx 端口80 未显示80表示已关闭
ss -lntp
卸载Nginx
yum remove nginx
源码安装Nginx
配置基础环境
1.下载lszsz wget
yum install -y lrzsz wget
2.从nginx官方下载源码包 将源码包拖入命令行
可以直接用鼠标拖动,或者使用rz 回车,把文件上传到Linux
3.解压源码包
tar xf nginx-1.20.2.tar.gz
4.移动至nginx目录下
cd nginx-1.20.2
源码包安装三步骤
1)配置
创建目录 将源码包统一管理
mkdir -p /app (此时已经在cd nginx-1.20.2目录下)
./configure --prefix=/app/nginx \ 配置文件
第一个报错 checking for C compiler ... not found ./configure: error: C compiler cc is not found yum -y install gcc gcc-c++
第二个报错 ./configure: error: the HTTP gzip module requires the zlib library. yum install -y zlib-devel
第三个报错 ./configure: error: the HTTP rewrite module requires the PCRE library. yum -y install pcre-devel
./configure --prefix=/app/nginx
2)编译
make
3)编译安装
make install
进入 cd /app/nginx 目录下
ls 显示目录
进入cd sbin/
运行 ./nginx
查看80端口 ss -lntp | grep 80