Loading

软件管理

软件管理

1 RPM介绍

RPM是Red-Hat Package Manager(红帽软件包管理器)的缩写,一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.rpm扩展名的文件。

如下图,是一个rpm包,它由这几个部分组成:软件名称,版本号,发布次数,平台,扩展名。

版本号4.2.46中,4代表大版本号,2代表小版本号,46是修正次数,每次发布都会自增。

x86_64代表64位架构。

image

2 使用RMP包安装升级卸载

RPM包是已经编译打包的文件,安装起来也不难,简单的一个命令即可安装。

如果你使用虚拟机,那么你可以挂载操作系统镜像,然后执行:

mount /dev/cdrom /mnt

mnt路径下的Packages内就是系统镜像自带的一些rpm包。

以下列出了rpm命令进行安装软件的常用参数。

选项 描述
-i 安装rpm
-v 显示安装详细信息
-h 显示安装rpm进度
–force 强制重新安装
–nodeps 忽略依赖关系

安装本地软件包,需要指定软件包绝对路径。(软件包在当前目录不需要绝对路径)

rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm

如果软件包存在, 强制再次安装

rpm -ivh --force /mnt/Packages/tree-1.5.3-3.el6.x86_64.rpm

rpm安装某些包时,会出现安装不上的问题,原因是rpm包之间有依赖关系。使用nodeps可以忽略依赖关系安装:

rpm -ivh --nodeps  /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm

以上都是本地挂载镜像安装。rpm还可以联网安装,指定一个远程地址即可 。

# 远程url安装
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
# 升级用U
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.8-1.el7.x86_64.rpm

卸载rpm包使用-e选项,注意卸载时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包。

# 卸载zabbix-agent
rpm -e zabbix-agent
# 查询zabbix-agent
rpm -q zabbix-agent

3 查询已安装的rpm包

下面列出了查询常用的选项:

选项 描述
rpm -q 查看指定软件包是否安装(常用)
rpm -qa 查看系统中已安装的所有RPM软件包列表
rpm -qi 查看指定软件的详细信息
rpm -ql 查询指定软件包所安装的目录、文件列表(常用)
rpm -qc 查询指定软件包的配置文件(只有etc下的配置文件)
rpm -qf 查询文件或目录属于哪个RPM软件
rpm -qip 查询未安装的rpm包详细信息
rpm -qlp 查询未安装的软件包会产生哪些文件

举例

#查询vsftpd这个rpm包是否安装
rpm -q vsftpd

#模糊查找系统已安装的rpm包
rpm -qa |grep ftp

#查询vsftpd软件包的相关信息
rpm -qi vsftpd

#查询rpm包所安装的文件
rpm -ql vsftpd

#查询rpm包相关的配置文件
rpm -qc vsftpd

#查询配置文件或命令来自于哪个rpm包(只能查已经安装过的)
rpm -qf /etc/vsftpd/vsftpd.conf # 查看这个配置文件是
rpm -qf /usr/sbin/vsftpd
rpm -qf /usr/sbin/ifconfig 
# 想看未安装的
yum provides vim

#查询未安装的软件包会产生哪些文件
rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

#查询未安装的软件包会产生哪些文件
rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

4 yum介绍

介绍完rpm,你会发现它有一个缺点,那就是无法处理依赖。有依赖就不能安装和卸载,非常麻烦。

yum解决了该问题。Yum是RedHat以及CentOS中的软件包管理器,能够通过互联网下载.rpm包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装。这里有一个yum源的概念:要使用yum工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),仓库可以是本地仓库,也可以是网络仓库。这个软件仓库我们习惯称为 yum 源。

要使用yum首先要有源。/etc/yum.repos.d/目录下存放的xxx.repo文件就是yum源。

yum repolist # 该命令可以查看现在有多少源
yum repolist all # 查看所有源,被禁用的也列出来

5 yum换源

默认情况使用的是官方源(下图是bfsu的镜像源)

image

如果使用yum安装软件,提示不存在,那么可以考虑换源。换成阿里开源镜像站的yum源:

实际上就是下载阿里的CentOS-Base.repo /etc/yum.repos.d/,比如centOS7的基本源

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

image

另外还有扩展源,为什么要装扩展源,因为有很多软件在基本源中没有。

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

除了配置阿里yum源之外,学习nginx时可能要使用官方的yum源来安装。

搭配gzip的应用

之前我们提到过gzip有一个使用场景。比如我们现在配置了阿里云的yum扩展源,里面已经有nginx了,但是版本比较旧。想要最新版本的nginx,就只能去官网配置yum源。但是,两个配置会优先使用扩展源,即使配置了官方源可能也不会生效。此时就可以利用gzip的特性,快速关闭和启用配置文件。

cd /etc/yum.repos.d/
gzip *

我们把所有的yum源全部打包成.gz文件,原文件也被删除,现在yum就没有可用的源了。

然后配置nginx官方源

vim /etc/yum.repos.d/nginx.repo
# 新建一个文件nginx.repo

复制以下内容粘贴

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

现在可以使用yum安装最新版本的nginx

yum install nginx

安装完之后,再使用gzip解压

gzip -d *

6 源码安装

源码包指的是开发编写好的程序源代码,但并没有将其编译为一个能正常使用的工具。yum安装十分简单,但是有些包可能没有收录,如果yum安装不上可能就需要去软件官网下载源码安装。源码安装还有一个好处,那就是可以获取到最新的包,并且可以自行修改软件源码。

6.1 获取源码包

一般来说软件包都可以在官网下载,比如nginx、mysql、python等等。以安装nginx为例,去官网下载安装包。

wget http://nginx.org/download/nginx-1.21.4.tar.gz

6.2 编译安装

解压

tar -zxf nginx-1.21.4.tar.gz

进入目录,编译安装

cd nginx-1.21.4
./configure # 并不是所有的安装文件都有configure文件,可以先ls查看
make install prefix=/usr/local/nginx

配置nginx环境变量,并使环境变量生效

echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> /etc/bashrc
source /etc/bashrc

查看nginx版本号

nginx -v

如果出现版本号就说明已经安装完毕了。常用命令如下:

# 命令
nginx  # 启动服务
nginx -v # 查看版本
nginx -t  # 查看nginx的默认配置文件的安装位置
nginx -s reload # 重新加载服务
nginx -s stop  # 重启
nginx -s stop # 停止

6.3 报错信息处理

一般报错都是nginx依赖的模块没有安装,对应安装即可。

checking for C compiler ... not found ./configure: error: C compiler cc is not found 
# yum -y install gcc gcc-c++ make

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
# yum install -y pcre-devel

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-
http_gzip_module option, or install the zlib library into the
system, or build the zlib library statically from the source with
nginx by using --with-zlib=<path> option. 
# yum -y install zlib-devel

./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL 
library into the system, or build the OpenSSL library statically
from the source with nginx by using --with-openssl=<path> option.
# yum -y install openssl-devel

想要省事,就直接把依赖先安装好。

yum install -y gcc gcc-c++ make pcre-devel zlib-devel openssl-devel

总结一下安装流程:

image

7 几种安装方式比较

分类 安装方式 特点
rpm包 命令安装 优点:安装简单;缺点:软件版本偏低,需要手动解决依赖,有些包可能没有收录
yum包 命令安装 优点:安装简单,自动解决依赖;缺点:软件版本偏低,有些包可能没有收录
源码包 手动编译安装 优点:软件版本最新;缺点:安装繁琐
posted @ 2021-11-20 01:39  yyyz  阅读(78)  评论(0编辑  收藏  举报