一、rpm 软件包

1、简介

开源软件最初只提供了 .tar.gz 的打包的源码文件,用户必须自已编译每个想在 GNU/Linux 上运行的软件。用户急需系统能提供一种更加便利的方法来管理这些软件,当 Debian 诞生时,这样一个管理工具 dpkg 也就应运而生,可用来管理deb后缀的"包"文件。从而著名的 “package” 概念第一次出现在 GNU/Linux 系统中,稍后 Red Hat 才开发自己的 rpm 包管理系统

rpm 最早是由 redhat 开发出来,由于很好用,所以很多发行版也利用 rpm 来进行软件包的管理。RPM 全名 RedHat Package Manager ,最大的特点就是把需要安装的软件提前编译,打包,然后在 rpm 包里面存放了用以记录软件依赖关系的相关数据,当用户安装时,优先查看这些数据,如果系统满足数据要求就安装软件包,否则不能安装,安装完成后,将软件包相关信息记录到 rpm 自己的数据库中,便于查询和卸载等。所以说 rpm 的优点是方便安装,卸载,查询,缺点就是只能在指定的操作系统上使用,所以不同厂商的 rpm 包,甚至同一厂商不同版本操作系统的 rpm 包都不通用。

软件包中的文件分类
  • 二进制文件
  • 库文件
  • 配置文件
  • 帮助文件

软件包管理器功能:

将编译好的应用程序的各组成文件打包一个或几个程序包文件,利用包管理器可以方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作

主流的程序包管理器:

  • redhat:rpm文件, rpm 包管理器,rpm:Redhat Package Manager,RPM Package Manager
  • debian:deb文件, dpkg 包管理器

2、rpm 包的命名

dhcp-server-	4.3.6		-30			.el8		.x86_64		.rpm
软件名称	    	版本	 编译次数	 适用的系统	 适用的平台	后缀名

软件名	 就是软件包的名称
版本	 每次更新版本号都会改变,用来帮助用户判断软件包新旧的
编译次数	 也是帮助用户判断软件包新旧的
适用的系统 在哪个系统上可以安装,CentOS和rhel的多数软件包都是通用的
适用的平台 指的是硬件平台,比如如果你是32位的CPU就无法安装这个软件包

3、rpm 的使用

rpm包的相关文件一般都会放在对应的目录中,比如rpm包安装后

配置文件会放在/etc下

执行文件会放在/usr/bin下

链接库文件会放在/usr/lib下

帮助与说明文档会放在/usr/share/man和/usr/share/doc目录下

rpm -ivh dhcp-server-4.3.6-30.el8.x86_64.rpm 
-i							安装
-v							显示详细信息
-p, --package   查询/验证一个软件包
-h							显示安装进度
-e							卸载
-U							升级,如果系统中有低版本的就会升级,如果系统没有安装相应的包,则安装
-F							有条件的升级,会检测用户指定的软件包是否已安装到linux中
--nodeps				忽略软件包之间的依赖关系
--replacefiles	覆盖文件,忽略软件包之间的冲突的文件
--replacepkgs		修复,如果软件包已经有了,重新安装软件包
--force					强制,--replacepkgs --replacefiles 的缩写
--test					测试,不真正安装,只是判断下是否能安装
-q							查询指定的软件包是否安装
-qi							查看指定的软件包的信息,包括开发商,版本,说明
-ql							查看指定软件包中所包含的文件列表
-qc							查看指定软件包的配置文件
-qa							查看本机安装的所有包
-qf							查看一个文件归属于哪个已安装的软件包

二、YUM 软件仓库

1、简介

YUM(Yellow dog Updater, Modified)是一个基于 rpm 却更胜于 rpm 的管理工具,让你可以更轻松的管理 Red Hat Enterprise Linux 系统中的软件。你可以使用 YUM 来安装或卸载软件、也可以利用 YUM 来更新你的系统,更可以利用 YUM 来搜索一个尚未安装的软件。不管是安装、更新或者删除,YUM 都会自动的帮你解决软件间的依赖性问题。通过 YUM 会比单纯使用 rpm 来得更加方便。

YUM包含下列几项组件:

  • YUM 下载源:如果把所有RPM文件放在某一个目录中,这个目录就可称为“YUM下载源(YUM Repository)”。你也可以把YUM下载源,通过HTTP、FTP等方式分享给其他计算机使用;当然,你也可以直接使用别人建好的YUM下载源来取得需安装的软件。
  • YUM 工具:YUM 提供了一个名为 yum 的命令,你可以使用 yum 来使用 YUM 提供的众多功能。
  • YUM插件:YUM 还允许第三方厂商(3rd Party)开发 YUM 的插件(Plug-in),让用户可以任意的扩充 YUM 的功能,比如说有的插件可以帮助选择最快的yum源
  • YUM 缓存:YUM 运行时,会从 YUM 下载源获得软件信息与文件,并且暂存于本机的硬盘上。这个暂存的目录,称为“YUM缓存(YUM cache)”。缓存目录为/var/cache/yum

2、yum 的使用

(1) yum 源配置

#由于yum有下载源这个东西,所以我们在使用yum之前需要告诉它去什么地方获取这些软件包,也就是说需要先配置一个yum源
cd /etc/yum.repos.d/
#在CentOS 7中yum的下载源配置文件统一都放到/etc/yum.repos.d/目录下,在这个目录中有些默认的下载源
#不使用这些自带的下载源,想配置一个自己的下载源,让yum使用光盘镜像里的软件包,为了避免干扰,我们把这些自带的下载源都放到一个目录里
mkdir repos
mv *.repo repos
#建立自己的下载源配置文件
vim server.repo

[server-BaseOS]			  yum源的名称
name=server-BaseOS		完整名称
enabled=1				      是否启用
gpgcheck=1				    是否检查rpm包的数字签名
baseurl=file:///mnt/  下载源地址
#将光盘挂载到指定位置
mount /dev/cdrom  /mnt/		
#Ps:CentOS 8 中的软件包存放在光盘根目录的 BaseOS和AppStream目录中,如使用CentOS 8为了保证需要的软件包能正确安装我们配置了两个yum源,这两部分内容你可以放到一个文件里,也可以分别放在两个文件中
#以上就是yum源配置文件

#构建yum 缓存
cd /mnt
rpm --import *K*	#导出 gpg KEY 文件到当前系统
yum clean all			#清除本地 yum 缓存
yum makecache			#重建本地 yum 缓存

(2) 定制本地 yum 仓库

(1)缓存指定包
#开启 yum 配置文件的keepcache 功能,不清空下载过的软件包
sed -i '3 s#0#1#' /etc/yum.conf
yum makecache			#修改配置文件后需要重新缓存
#之后可以直接安装你需要的安装包

(2)同步源到本地
wgetw  -O /etc/yum.repos.d/aliyun.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum install yum-utils -y		#提供reporsync服务
yum repolist								#查看yum源仓库标识
reposync -r base -p /mnt    #同步base目录到本地
#注意:部分互联网yum源不支持同步


#收集缓存下来的 rpm 包
#将 /var/cache/yum/x86_64/7/ 下缓存下来的 rpm 包移动到自动义目录下
mkdir /mnt/myrepo


#从光盘镜像中安装createrepo工具
yum install createrepo

#利用createrepo工具生成软件包之间的依赖关系数据文件
cd /mnt/myrepo
createrepo -v ./
#生成之后,会出现 repodata 目录

#建立针对此目录的下载源配置文件
vim /etc/yum.repos.d/myrepo.repo
[myself]
name=packages
enabled=1
gpgcheck=0
baseurl=file:///mnt/myrepo

yum clean all			#清除本地 yum 缓存
yum makecache			#重建本地 yum 缓存
#之后尝试从本地源安装软件

(3) yum 常用命令

yum install 插件名称		#插件配置文件存放位置/etc/yum/pluginconf.d/xxx.conf
#插件的启用和停用,修改/etc/yum/pluginconf.d/xxx.conf文件中的enabled字段 1=启用 0=停用

yum [OPTIONS...] COMMAND [ARGVS...]
-y							        如果遇到问题,代替回答yes
--installroot=/path			指定软件包安装的根目录

yum clean all		#清除yum缓存
yum list				#查看软件包
yum grouplist		#查看有哪些可用组
yum info dhcp-server			#查看dhcp-server这个包的信息   	
yum search dhcp-server		#搜索dhcp-server这个软件包
yum install dhcp-server -y	#安装dhcp-server软件包	
yum groupinstall '系统工具' -y	   #安装一组软件包           
yum remove dhcp-server -y			 #删除一个软件包	
yum groupremove '系统工具' -y		#删除一组软件包

(4) 使用 EPEL

#本次使用 清华源 
EPEL(Extra Packages for Enterprise Linux)是由Fedora Special Interest Group维护的Enterprise Linux(RHEL、CentOS)中经 常用到的包。

下面以CentOS 7为例讲解如何使用本镜像站的epel镜像。

首先从CentOS Extras这个源(https://mirrors.tuna.tsinghua.edu.cn/help/centos/)里安装epel-release:

yum install epel-release
修改/etc/yum.repos.d/epel.repo,将mirrorlist和metalink开头的行注释掉。

接下来,取消注释这个文件里baseurl开头的行,并将其中的http://download.fedoraproject.org/pub替换成https://mirrors.tuna.tsinghua.edu.cn。

可以用如下命令自动替换:(来自 https://github.com/tuna/issues/issues/687)

sed -e 's!^metalink=!#metalink=!g' \
    -e 's!^#baseurl=!baseurl=!g' \
    -e 's!//download\.fedoraproject\.org/pub!//mirrors.tuna.tsinghua.edu.cn!g' \
    -e 's!http://mirrors!https://mirrors!g' \
    -i /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing.repo
修改结果如下:(仅供参考,不同版本可能不同)

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
运行 yum update 测试一下

三、源码编译安装

1、简介

在linux系统中,很多新版本的软件包的更新都会优先提供tar包版本的,然后各linux厂商拿到这个tar包之后再给自己的操作系统提供官方的rpm或者dpkg类型的软件包,而这种tar工具打包的软件包我们一般称之为源码包,在这些源码包中一般包含有,程序源代码文件,配置文件(configure),安装使用说明(INSTALL,HOWTO,README)

tar包源码包如何安装简单的流程就是

  • 获取软件包
  • 解压文件
  • 检查当前系统是否满足软件包安装需求
  • 使用gcc进行编译,生成主要的二进制文件
  • 将二进制文件安装到主机

案例:源码安装一个nginx软件

#下载并解压 nginx 软件包
wget http://nginx.org/download/nginx-1.19.3.tar.gz 
tar xf nginx-1.19.3.tar.gz

#预配置
#configure命令:检查当前系统是否满足软件包安装需求,这步的主要目的:
– 检查环境是否满足安装条件 依赖解决
– 指定安装方式 配置文件 命令文件 各种文件放哪里 开启模块功能【内置模块 三方模块】
– 指定软件安装在那里
yum -y install gcc pcre-devel zlib-devel	#安装依赖
cd nginx-1.19.3/ 
./configure --prefix=/usr/local/nginx 	#--prefix=   指定软件安装到哪个目录 

#make命令:使用gcc进行编译,生成主要的二进制文件
make -j4		#-j 指定几个cpu一起编译 -j4 那就是4个一起干活,默认一个干活,这样速度更快 
make install	#将二进制文件安装到主机

#验证
ls /usr/local/nginx/ 
/usr/local/nginx/sbin/nginx 	#启动服务

ps -ef | grep nginx
#打开虚拟机浏览器输入:http://localhost 查看