程序包管理器
在未发布RPM(红帽软件包管理器)之前,想在Linux安装软件只能通过获取源码包的方式安装,相当麻烦费心。
获取程序包的途径
互联网上提供的软件,可能存在后门,存在安全隐患,插件
正确的途径
- 操作系统发行版本光盘
- 文件服务器
支持多个协议并且能够自动识别
1 | ftp:// |
- 镜像站点
1 | http://mirrors.aliyun.com |
- epel,提供centos众多额外的第三方包,可信任的第三方软件包组织
1 | https://mirrors.aliyun.com/epel/7/x86_64/Packages/m |
- 搜索引擎
1 | http://www.rpmfind.net/linux/mageia/distrib/7/x86_64/media/core/release |
软件依赖关系
说明
必须解决依赖关系软件才能正常工作。
软件包管理可以将管理员从无休止的兼容问题中释放。
- rpm软件包在安装时,由作者定义依赖关系。
- yum工具可以自动搜索依赖关系,并执行安装。
查询方式
rpm命令
语法
1 | rpm [options] [package_file] |
参数
1 | -i 表示安装 |
1 | #其它参数可以通过查询 |
缺点
还是需要用户手动解决软件依赖关系
自动解决依赖关系软件包管理器
Yum工具
yum
( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum是采用C-S架构的。
Yum仓库
yum软件仓库
可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安装到系统。
yum仓库,存储了众多软件包,以及相关的元数据文件。
yum仓库可以存在多个,自动选择软件最新的,以及有限选择离我们最近的。
如何写一个仓库文件
1 | [base] |
Yum客户端
1 | /etc/yum.conf #为所有仓库提供公共配置 |
1 | [root@localhost ~]# cat /etc/yum.conf |
yum命令
通过配置文件指定仓库地址
1 | /etc/yum.repos.d/*.repo |
语法
1 | yum [options] COMMAND |
参数
man yum #可以查看更详细的手册
yum –help #常用参数等
1 | install 向系统中安装一个或多个软件包 |
源代码编译安装
无论是rpm命令或者yum命令,都是安装二进制格式的程序包,是别人编译好的。
可能存在的问题:别人编译好的rpm包,可能版本过低,不适合当前需求。
yum和编译安装的区别
yum的优缺点
yum是自动取yum源中寻找rpm包下载且安装自动解决依赖,自动指定安装路径,无需人为干预;
适合初学者,不需要考虑依赖关系即可安装使用大部分软件;
功能由rpm包控制,这个rpm包是别人编译好的,版本可能较低,功能受限,存在漏洞;
yum自动安装的软件不能自定义软件的路径、功能,机器数量较多,与后期维护成本较大
编译安装优缺点
可以手动下载最新源代码,按照指定需求设置参数、指定安装路径,拓展第三方工功能,更加灵活;
无法自行解决依赖关系,对新手不友好
建议方法
yum和编译安装结合使用,能够最大程度解决问题
编译三部曲
环境准备
1 | #gcc、make开发工具 |
Centos7安装Server Platform Development可能会报不存在!可以先跳过不安装
1 | Warning: group Server does not exist. |
演示源文件准备(以nginx为例)
Nginx
1 | https://nginx.org/download/nginx-1.23.1.tar.gz |
下载
1 | wget https://nginx.org/download/nginx-1.23.1.tar.gz |
解压缩
1 | tar -zxvf nginx-1.23.1.tar.gz |
查看文件
1 | [root@localhost ~]# ls nginx-1.23.1 |
第一曲
执行脚本
configure
文件cd /nginx-1.23.1 切换到解压文件夹下运行
此处演示放在/root/nginx目录下
1 | ./configure --prefix=/root/nginx |
针对C、C++代码,进行编译安装,需要指定配置文件Makefile
,需要通过configure
脚本生成;
通过选项传递参数,指定启用特性,安装路径等,执行时会生成Makefile;
整个过程会检查依赖的外部环境
报错
如果出现pcre
报错,请执行命令安装
1 | yum install pcre-devel -y |
解决后,又出现zlib
报错,请执行命令安装
1 | yum install zlib zlib-devel -y |
第二曲
参阅文献
Linux中make, make install命令分别是什么,用法?
linux中make是用来编译的,它从Makefile中读取指令,然后编译。
make的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能。
make是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。
第三曲
执行make install
开始安装软件到./configure <目录> 指定的安装路径
此时,我们已经完成了nginx软件的安装,我们可以在指定的安装目录下
找到sbin
文件夹,里面即是nginx的启动文件。
启动
1 | /root/nginx/sbin/nginx |
我们可以将启动命令直接写入PATH中,这样就可以直接使用nginx执行
在全局配置文件夹中写入nginx.sh文件
1 | vi /etc/profile.d/nginx.sh |
内容为命令所在目录与PATH的拼接
1 | PATH=/root/nginx/sbin:$PATH |
重新登录后生效,可以直接使用nginx执行
1 | logout |
1 | nginx |