实战 tar 源码包管理 | srpm 源码包安装方法
示例:源码安装 Nginx (讲解源码安装示例)
Nginx 同 Apache 一样都是一种 WEB 服务器。基于 REST 架构风格,以统一资源描述符(Uniform
Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过HTTP 协议提供各种网络服务,在此阶段并不对 Nginx 重点讲解,只通过安装 Nginx 学会 tar 源码包安
装,在下阶段会有针对性的 Nginx 讲解。
(1) 编译环境如 gcc 和 gcc-c++编译器、make。
(2) 准备软件:nginx-1.12.2.tar.gz。
1. 部署 Nginx
在部署之前需要解决编译环境、Nginx 依赖关系。
# yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel
pcre: 支持正则表达式,地址重写 rewrite
2. 源码编译 3 部分: ./configure,make,make install
# tar xvf nginx-1.12.2.tar.gz #解压 Nginx 程序压缩包。
# cd nginx-1.12.2 #切换到解压后 Nginx 程序包目录。
3. 执行预编译(检测环境)并指定安装目录,使用 --prefix= 指定安装 Nginx 预编译时指定安装目录为/usr/local/nginx
# ./configure --prefix=/usr/local/nginx
# make -j 4 #编译 -j 4 表示同时开启开个核心进行编译
# make install #编译安装
详解源码安装 3 部分。
# ./configure
(1) 指定安装路径,例如 --prefix=/usr/local/nginx。
(2) 启用或禁用某项功能, 例如 --enable-ssl, --disable-filter --with-http_ssl_module。
(3) 和其它软件关联,例如--with-pcre。
(4) 检查安装环境,例如是否有编译器 gcc,是否满足软件的依赖需求。最终在当前目录下生成:Makefile
# make -j 4 #按 Makefile 文件编译,可以使用-j 4 指定 4 核心 CPU 编译,提升速度。
# make install #按 Makefile 定义的文件路径安装。
# make clean //清除上次的 make 命令所产生的 object 和 Makefile 文件。使用场景:当需要重新执行 configure 时,需要执行 make clean。
安装完,删除源码包
make uninstall
有时删除不干净,所以建议大家安装时,在 configure 步骤添加一个: --prefix 参数指定安装目录。
这样删除或备份时,直接对删除--prefix 指定的安装目录操作即可。
实战 2:源码编译出错的 5 个种完美解决方法
(1) 从 Windows 上传 extundelete 文件到 Linux,安装 xmanager v5 或者CRT
(2) 解压并安装 extundelet
[root@xuegod63 extundelete-0.2.4]# tar jxvf extundelete-0.2.4.tar.bz2
[root@xuegod63 ~]# cd extundelete-0.2.4
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm
[root@xuegod63 extundelete-0.2.4]# ./configure #检查系统安装环境
Configuring extundelete 0.2.4
configure: error: Can't find ext2fs library
1. 源码编译出错后,常见解决方法(共 5 种方法):
方法 1:# rpm -ivh ext2fs #进入本地YUM中查找ext2fs,按两下 tab 键。 一般情况,ext2fs 就是要安装的软件包的名字开头,如果存在自动补全。
方法 2:# ls *ext2fs* #有时查找软件包需要完整关键字。
方法 3:# ls *2fs* #有时查找软件包需要查找部分关键字。
方法 4: 上网查找下载相关 rpm 依赖包进行安装,如图 8-4 所示。
http://www.rpmseek.com/index.html
图 8-4 rpm 包下载站点
方法 5: 使用 Yum 去搜索。
# yum search ext2fs
安装库:
[root@xuegod63 Packages]# rpm -ivh e2fsprogs-libs-1.41.12-11.el6.x86_64.rpm
warning: e2fsprogs-libs-1.41.12-11.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...
########################################### [100%]
package e2fsprogs-libs-1.41.12-11.el6.x86_64 is already installed
互动:显示库已经安装,但是 configure 时又提示找不到。怎么办?
解决:安装了库,却显示找不到,这种情况:需要安装库的开发文件
#rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm
2. 扩展:技巧
查看 rpm 包安装后生成的文件:
[root@xuegod63 Packages]#rpm -qpl e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm | more
[root@xuegod63 extundelete-0.2.4]# make -j 4 #编译。
[root@xuegod63 extundelete-0.2.4]# make install #安装。
[root@xuegod63 extundelete-0.2.4]# ls /usr/local/bin/extundelete #查看安装后的文件。
/usr/local/bin/extundelete
总结,软件安装方法特点:
rpm+Yum:安装方便,软件版本低,稳定性好、管理方便,性能稍差。
源码编译安装:安装复杂,软件版本新,可以定制,稳定性稍差、管理稍差,性能好。
源码编译安装:主要是安装 LAMP 或 LNMP 架构时,需要用到。
安装.src.rpm 源码包的方法(了解)
srpm:Source RPM 的意思,也就是这个 RPM 档案里面含有原始码( Source Code )。
上传 lrzsz-0.12.20-27.1.el6.src.rpm 到 linux 的/root 目录。
# rpm -e lrzsz #先卸载软件包。
编译:
# rpmbuild --rebuild lrzsz-0.12.20-27.1.el6.src.rpm # 根 据 将src.rpm 中源码文件编译成可执行的二进制文件。
若顺利执行成功则会在 root 用户家目录下生成一个:/root/rpmbuild 目录。在/root/rpmbuild/RPMS/x86_64/目录下生成 lrzsz-0.12.20-27.1.el7.CentOS.x86_64.rpm 这个
rpm 文件。
# rpm -ivh rpmbuild/RPMS/x86_64/lrzsz-0.12.20-27.1.el7.CentOS.x86_64.rpm #安装。