一.RPM 基本介绍
1.什么是 rpm 包
- RPM全称 RPM Package Manager 的缩写(软件包管理器), 由红帽开发
- 在主流的Linux系统上,多数软件的安装, 升级, 移除及维护工作都是有RPM软件包管理程序来完成的
2.rpm包格式
3.软件包分类
分类 |
安装 |
特点 |
二进制包 |
编译好的,解压即可使用,直接可执行 |
不能修改源代码 |
rpm包 |
预编译的软件包,安装程序 |
通常是稳定版本的软件被做成RPM,版本较低 |
源码包 |
需要手动编译打包,安装比较繁琐 |
软件版本丰富,可选择性强 |
4.查看操作系统版本
🌵通常使用的平台
#(redhat, centos, suse, Fedora...)
🌵查看操作系统版本
# cat /etc/redhat-release
🌵查看内核版本
# uname -r
# uname -a
5.管理rpm包的两种方式
🌵需要自己找到 "rpm" 包
🌵并且手动解决依赖性关系
🌵"rpm" 包都放置在一个库里面
🌵库里面包含了所有的依赖关系
5.rpm包的来源
🌵通过"wget"或者"curl"下载
# wget -O httts://xxxxxxxxxx.x86_64.rpm
# curl -o httts://xxxxxxxxxx.x86_64.rpm
🌵挂载本地的 "ISO" 镜像文件(三种方式)
1.# mount /dev/sr0 /opt
2.# mount /dev/cdrom /mnt
3.从别人的光盘或者U盘上拷一个现成的文件,再或者在自己机器上插一块系统盘,将其内容做成一个镜像文件
# dd if=/dev/sr0 of=/root/iso/centos7.iso
# mount -o loop /root/iso/contos7.iso /opt (用一个光盘文件虚拟成设备来挂载)
🌵取消挂载
# umount [挂载点/源]
# umount -l [挂载点/源]
二.RPM命令使用
1.安装rpm包
-i |
安装rpm包 |
-v |
显示安装详细信息 |
-h |
显示安装进度 |
--force |
强制重新安装 |
--nodeps |
忽略依赖关系 |
🌵安装一个软件,需要指定软件包的路径
[root@shawn etc]# rpm -ivh /opt/Packages/zip-3.0-11.el7.x86_64.rpm
🌵如果软件包存在,"--force"会强制再次安装(会显示升级)(不推荐,可能会造成不兼容)
[root@shawn etc]# rpm -ivh --force /opt/Packages/zip-3.0-11.el7.x86_64.rpm
🌵安装一个软件包往往需要依赖包,"--nodeps"可以忽略依赖包(不推荐,会造成命令无法运行)
[root@shawn etc]# rpm -ivh --nodeps /opt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
2.卸载rpm包
卸载软件包时会有许多的依赖包需要卸载,如果依赖包是系统所必须的就不推荐卸载,会造成系统崩溃
当然也可以忽略依赖包, "--nodeps"选项就可以,但不推荐
# rpm -e [软件包名]
[root@shawn etc]# rpm -e zip
3.升级rpm包
"-U" : 如果老版本不存在直接全新安装, 老版本存在就用新版本替代
🌵先到网上下载一个软件包的两个版本,(new and old)
# 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
🌵先安装低版本
[root@shawn etc]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
🌵再安装高版本会报错无法成功!
[root@shawn etc]# rpm -ivh zabbix-agent-4.2.9-1.el7.x86_64.rpm
🌵使用选项"--force"强制进行安装,会出现两个版本,不可取
[root@shawn etc]# rpm -ivh --force zabbix-agent-4.2.9-1.el7.x86_64.rpm
🌵通过"-U"选项,自动把低版本的软件包卸载,再安装新版本
[root@shawn etc]# rpm -Uvh zabbix-agent-4.2.9-1.el7.x86_64.rpm
4.查询rpm包
-q |
查看指定软件包是否安装 |
-qa |
查看系统中已安装的rpm软件包列表 |
-qi |
查看指定软件的详细信息 |
-ql |
查看指定软件包安装产生的目录, 文件列表 |
-qc |
查询指定软件包的配置文件 |
-qf |
查看文件或目录属于哪个rpm软件 |
- "-p" 表示查看一些未安装的软件包信息,与以上选项连用,示例:
-qip |
查询未安装的rpm软件包的详细信息 |
-qlp |
查询未安装的软件包安装后会产生哪些文件 |
🌵查看"zlib"是否安装
[root@shawn ~]# rpm -q zlib
🌵通过"grep"过滤出已经安装的软件包中的某几个
[root@shawn ~]# rpm -qa | grep "htt*"
🌵查看一个已安装"zlib的软件的详细信息
[root@shawn ~]# rpm -qi zlib
🌵查看一个已安装软件"zlib"的产生的文件及目录
[root@shawn ~]# rpm -ql zlib
🌵查看已安装软件"httpd"的配置信息
[root@shawn ~]# rpm -qc httpd
🌵查看一个文件或目录属于那一个软件包
[root@shawn ~]# rpm -qf /usr/bin/vim
[root@shawn ~]# rpm -qf /etc/httpd/conf.d/welcome.conf
🌵查看一个未安装的软件会产生的目录和文件
[root@shawn etc]# rpm -qlp /opt/Packages/zip-3.0-11.el7.x86_64.rpm
🌵查看一个未安装软件的相关信息
[root@shawn etc]# rpm -qip /opt/Packages/zip-3.0-11.el7.x86_64.rpm
三.YUM基本介绍
1.什么是yum
YUM (全称为Yellow dog Updater, Modified)
是一个在Fedora和RedHat以及Centos中的Shell前端软件包管理器
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装
可以"自动处理依赖性关系",并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装
2.什么是yum源
- yum源就是一个软件仓库,存放了所有软件包的一个文件夹
- yum源必须具备的两个条件
1.文件下涵盖所有的软件包
2.该文件夹下必须要有一个记录了本文件夹下所包含软件的依赖关系的文件
3.yum源种类
1."base"基础源
2."epel"扩展源
3.某一个软件包它官网提供的源
将一个文件夹做成yum源(两种方式)
🌵方式一:1.采集一系列的软件包放入一个本地目录
2.使用命令 "createrepo [目录路径]" 制作软件包的依赖关系
🌵方式二:挂载已经有的镜像或者光盘:
1.# mount /dev/sr0 /opt
2.# mount /dev/cdrom /mnt
3.# mount -o loop xxx.iso /opt (将一个镜像文件直接u,与"cp"类似)
四.YUM常用命令
1.查看yum源(软件仓库)
yum repolist #查询可用yum源(软件仓库)
yum repolist all #查看所有仓库及状态(包括禁用和启用的)
🌵使用命令关闭某个仓库(也可以直接修改".repo"结尾文件里的"enable"值,"0"不启用,"1"启用)
yum-config-manager --disable epel #关闭仓库epel
yum-config-manager --enable epel #启用仓库epel
2.查看软件包
yum list #查看可用仓库中所有的软件包(可以使用管道查看一些你想要的软件)
yum grouplist #查看可用仓库中的所有软件组
yum provides ifconfig #查看命令所属的软件包(可以使用绝对路径)(与"rpm -qf"类似,但rpm必须使用绝对路径)
3.安装软件包
yum install httpd zip -y #可以同时安装多个软件包,"-y"是非交互式
yum install http* -y #安装所有以"http"开头的软件包
yum groupinstall "开发工具" -y #安装软件组,一个软件组里包含了多个软件
yum groups install "开发工具" -y #与上面效果一样
4.卸载软件包
yum remove http* -y #卸载以"http"开头的软件
yum groupremove "开发工具" -y #卸载这个软件组
yum groups remove "开发工具" -y #同上
5.重装
yum reinstall http* -y #不小心删掉了配置文件是可以使用
6.更新
yum check-update #查看可以更新的软件包
yum updtae -y #更新所有软件包,包括内核(一般用于刚安装完后,以后更新会造成不稳定)
yum update http* -y #更新指定的软件包
7.源数据缓存(yum拓展知识)
🌵yum元数据缓存:
1.指的将yum仓库的元数据缓存下来,下次安装时省去了检索过程,安装速度可以加快
2.yum makecache #制作软件元数据缓存(就是一个检索表,加快检索速度)
3.yum clean all #清除软件元数据缓存
🌵yum软件包缓存:
1.开启软件包缓存,从网络源下载安装完的安装包不在删除,而是缓存到本地
2.缓存软件包配置文件"/etc/yum.conf"
3.默认软件包安装过后会自动删除,在配置文件中设置"keepcache=1"则会自动缓存软件包
4.缓存的目录在配置文件中"cachedir"进行指定
8.yum命令历史记录
yum history #查看执行过的yum历史命令
yum history info [ID号] #查看指定一条yum命令的详细信息
yum history undo [ID号] #撤销执行过的命令
五.源码包编译安装
1.什么是源码包
- 源码包指的是开发编写好的程序源代码, 但并没有将其编译为一个能正常使用的工具
2.为什么要使用源码包
- 版本丰富,可选择性强
- 部分软件官网只提供源码包, 需要自行编译并安装
3.源码包优/缺点
- 优: 可以自行修改源代码, 定制自己需要的相关功能(并且新版本优先更新的就是源码包)
- 缺: 相对 rpm 和 yum 安装比较复杂, 标准化实施比较困难
4.编译安装过程
- 下载源代码安装包文件(一般是 .tar.gz文件)
- 预先安装好编译安装依赖的库
- 使用 tar 进行解包
- 使用 --prefix 进行指定安装目录, 模块,生成 makefile 等
- 使用 make && make install 进行编译安装
- 安装完成后可以设置一个软连接,然后测试一下
5.源码编译安装示例
1.可以通过浏览器下载传到虚拟机
2.也可以直接使用"wget"命令
# wget http://nginx.org/download/nginx-1.18.0.tar.gz
# yum groupinstall "开发工具" -y
# yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel
# yum install gcc gcc-c++ autoconf automake make
# tar -xvf nginx-1.18.0.tar.gz -C /tmp
# cd /tmp/nginx-1.18.0
🌵使用"--prefix"指定安装目录,并生成"maskfile"
# ./configure --prefix=/usr/local/nginx-1.18.0
- 将"makefile"文件编译成可执行的二进制的文件,并安装到对应目录
# make
# make install
🌵以上可以合成一步来操作
# make && make install
# ln -s /usr/local/nginx-1.18.0/* /soft/nginx
🌵启动"nginx"服务
# /soft/nginx/sbin/nginx
1."./configure --prefix=xx路径"
--prefix=/Path :指定安装路径
--enable-ssl, --disable-filter, --with-http_ssl_module :启用或禁用某项功能
--with-pcre=/root/pcre-8.31 :和其他软件关联
2.如果在编译安装这个环节出现错误,一般是因为所需要的支持库缺失
先使用 "make clean" 命令清理以前编译产生的"垃圾"(*.o目标文件)
在安装好所需要的依赖库,安装好后再从新操作一遍,从解压后面开始
六.制作本地yum源
1.yum源配文件路径
# /etc/yum.repos.d/
2.先下载好制作依赖关系文件"repodata"的工具"createrepo"
# yum createrepo -y
3.将收集好的一堆rpm软件包放置在一个文件夹下"/root/cccc"
4.使用"createrepo"命令制作一个"repodata"
# createrepo /root/cccc
🌵制作好的文件也会放在"/root/cccc"里面
3.进入yun源配置文件路径将原先存在的系统默认的源备份一下
4.创建一个仓库文件并写入信息就完成了
# cd /etc/yum.repos.d/
# mkdir /bak
# mv *.repo bak/
# vim local.repo (文件名自定义,但必须以"repo结尾")
[local] #仓库名
name="This is a local repo" #描述信息
baseurl=file:///root/cccc #依赖关系指定路径,也可以是网络源(http://, ftp://共享文件)
enabled=1 #设置开机启动
gpgcheck=0 #检查安装的rpm是否合法,"0"表示不检测
七.制作共享源
将自己的yum源共享给别人
1.服务端配置
# systemctl stop firewalld (关闭防火墙)
# systemctl disable firewalld (开机不启动)
# vim /etc/selinux/config (关闭selinux,设置完重启)
修改"SELINUX=disabled"设置开机不启动
# yum install vsftpd -y (安装)
# systemctl start vsftpd (开启)
# systemctl enable vsftpd (开机启动)
# systemctl status vsftpd (查看状态)
🌵可以使用网络源以及本地源,这里不做赘述
🌵为了方便,我使用本地镜像里的yum源,创建好文件将其挂载
# mkdir /var/ftp/centos7
# mount /dev/sr0 /var/ftp/centos7
2.客户端配置
# systemctl stop firewalld (关闭防火墙)
# systemctl disable firewalld (开机不启动)
# vim /etc/selinux/config (关闭selinux,设置完重启)
修改"SELINUX=disabled"设置开机不启动
🌵重启后"ping"一下服务端的IP地址
# ping 192.168.12.178 (保证能通信)
🌵先将本地的yum源备份一下放到"bak"文件夹
# cd /etc/yum.repos.d/ (先进入到yum源目录下)
# mkdir ./bak (创建一个系统yum源备份文件夹)
# mv ./*.repo ./bak (将所有系统yum源移入 bak)
🌵制作配置文件
# vim ftp.repo (必须以"repo"结尾)
[ftp_repo] #源名
name="This is a ftp_repo" #描述信息
baseurl=ftp://192.168.12.178/centos7 #指定服务端地址及共享目录
enable=1 #设置开机启动
gpgcheck=0 #不检查签名