Linux—源码安装包管理

发布时间 2024-01-02 15:57:02作者: 赵九思

Linux源码安装包管理

1. 源码包基本概述

在linux环境下面安装源码包是比较常见的, 早期运维管理工作中,大部分软件都是通过源码安装的。那么安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件。

源码包的编译用到了linux系统里的编译器,通常源码包都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它就可以把C语言变成可执行的二进制文件。所以如果你的机器上没有安装gcc就没有办法去编译源码。可以使用yum -y install gcc来完成安装。

2. 源码包的好处

  • 自定义修改源代码
  • 定制需要的相关功能
  • 新版软件优先更新源码

3. 源码包的获取

官方网站, 可以获得最新的软件包
Apache官方网站
Nginx官方网站
Mysql官方网站

4. 源码包分类

  • 源码格式(需要编译安装)
  • 二进制格式(解压后可以直接使用)

5. 源码包的安装

编译需要编译环境,开发环境,开发库,开发工具。
常用的编译环境有c、c++、perl、java、python5种
c环境的编译器:gcc(GNU C Complier)
c++环境的编译器:g++
make:c、c++的统一项目管理工具,编译时有可能调用gcc也有可能调用g++。使用makefile文件定义make按何种次序去编译源程序文件中的源程序

源码安装三部曲(常见):
第一步: ./configure(定制组件)

1.指定安装路径,例如 --prefix=/opt/nginx-1.12
2.启用或禁用某项功能, 例如 --enable-ssl
3.和其它软件关联,例如--with-pcre
4.检查安装环境,例如是否有编译器 gcc,是否满足软件的依赖需求
5.检测通过后生成Makefile文件

第二步: make

1.执行make命令进行编译, 可以使用-j指定CPU核心数进行编译
2.按Makefile文件进行编译, 编译成可执行二进制文件
3.生成各类模块和主程序

第三步: make install

1.按Makefile定义好的路径拷贝至安装目录中

上面介绍的源码三部曲不能百分百通用于所有源码包, 也就是说源码包的安装并非存在标准安装步骤,但是大部分源码安装都是类似的步骤

建议:
拿到源码包解压后,然后进入到目录找相关的帮助文档,通常会以INSTALL或者README为文件名

5.1 configure脚本的功能

  • 让用户选定编译特性
  • 检查编译环境是否符合程序编译的基本需要

5.2 编译安装注意事项

  • 如果安装时不是使用的默认路径,则必须要修改PATH环境变量,以能够识别此程序的二进制文件路径;

    • 修改/etc/profile文件或在/etc/profile.d/目录建立一个以.sh为后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
  • 默认情况下,系统搜索库文件的路径只有/lib,/usr/lib

    • 增添额外库文件搜索路径方法:
      • 在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中。此时库文件增添的搜索路径重启后有效,若要使用增添的路径立即生效则要使用ldconfig命令
    • ldconfig:通知系统重新搜索库文件
  • 头文件:输出给系统

    • 默认:系统在/usr/include中找头文件,若要增添头文件搜索路径,使用链接进行
  • man文件路径:安装在--prefix指定的目录下的man目录

    • 默认:系统在/usr/share/man中找man文件。此时因为编译安装的时候不是安装到默认路径下,如果要查找man文件则可以使用以下两种方法:
      • man -M /path/to/man_dir command
      • 在/etc/man_db.conf文件中添加一条MANPATH

5.3 源码包编译实例

nginx源码包安装

//1.开发工具准备
[root@zsl opt]# dnf groups mark install -y "Development Tools"
Last metadata expiration check: 0:07:47 ago on Thu 14 Jul 2022 03:00:09 PM CST.
Dependencies resolved.
===========================================================================================
 Package              Architecture        Version               Repository            Size
===========================================================================================
Installing Groups:
 Development Tools                                                                        

Transaction Summary
===========================================================================================

Complete!
//2.下载源码包(源码包一定要上官方站点下载,其他站点不安全)
[root@zsl opt]# wget http://nginx.org/download/nginx-1.22.0.tar.gz

//3.解压源码包,并进入相应目录
[root@zsl opt]# tar xf nginx-1.22.0.tar.gz 
[root@zsl opt]# cd nginx-1.22.0

//4.配置相关的选项,并生成Makefile
[root@zsl nginx-1.22.0]# ./configure --prefix=/usr/local/nginx  --with-http_ssl_module

//5.编译并安装
[root@zsl nginx-1.22.0]# make
[root@zsl nginx-1.22.0]# make install

//关闭防火墙命令
[root@zsl ~]# systemctl stop firewalld
[root@zsl ~]# setenforce 0

nginx源码编译报错信息处理

//解决方案
[root@zsl nginx-1.22.0]#dnf -y install gcc gcc-c++ make

//解决方案
[root@zsl nginx-1.22.0]#yum install -y pcre-devel

//解决方案
[root@zsl nginx-1.22.0]#yum -y install zlib-devel

//解决方案
[root@zsl nginx-1.22.0]# ./configure --prefix=/usr/local/nginx  --with-http_ssl_module

//解决方案
[root@zsl nginx-1.22.0]#dnf install -y openssl openssl-devel

Apache源码包安装

//1.开发工具准备
[root@zsl opt]# dnf groups mark install -y "Development Tools"
Last metadata expiration check: 0:07:47 ago on Thu 14 Jul 2022 03:00:09 PM CST.
Dependencies resolved.
===========================================================================================
 Package              Architecture        Version               Repository            Size
===========================================================================================
Installing Groups:
 Development Tools                                                                        

Transaction Summary
===========================================================================================

Complete!

//2.apache开发环境准备
[root@zsl ~]# dnf install -y wget vim gcc gcc-c++ make pcre-devel expat-develex libxml2-devel libxml2

//3.下载源码包
[root@zsl opt]# wget https://downloads.apache.org/httpd/httpd-2.4.54.tar.bz2
[root@zsl opt]# wget https://downloads.apache.org/apr/apr-1.6.5.tar.bz2
[root@zsl opt]# wget https://downloads.apache.org/apr/apr-util-1.6.1.tar.bz2
#安装apache时需要依赖,先安装apr,再安装apr-util,最后httpd
##apr安装
//4.解压apr源码包,并进入相应目录
[root@zsl opt]# tar xf apr-1.6.5.tar.bz2 
[root@zsl opt]# cd apr-1.6.5

//配置apr相关的选项,并生成Makefile
[root@zsl apr-1.6.5]# vim configure
#把$RM "$cfgfile"这行注释或删除
[root@zsl apr-1.6.5]# ./configure --prefix=/usr/local/apr

//编译并安装
[root@zsl apr-1.6.5]# make && make install

##apr-utilanz
//5.解压apr-util源码包,并进入相应目录
[root@zsl opt]# tar xf apr-util-1.6.1.tar.bz2 
[root@zsl opt]# cd apr-util-1.6.1

//配置apr相关的选项,并生成Makefile
[root@zsl apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/

//编译并安装
[root@zsl apr-util-1.6.1]# make && make install

##httpd
//6.解压httpd源码包,并进入相应目录
[root@zsl opt]# tar xf httpd-2.4.54.tar.bz2
[root@zsl opt]# cd httpd-2.4.54

//配置apr相关的选项,并生成Makefile
[root@zsl apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ --with-apr-util=/user/local/apr-util/

//编译并安装
[root@zsl apr-util-1.6.1]# make && make install