CentOS 8 编译安装程序包示例(httpd)学习笔记

CentOS 8 编译安装程序包(httpd)


1. 源码编译介绍

程序包编译安装步骤:

源代码 --> 预处理 --> 编译 --> 汇编 --> 链接 --> 执行

多文件:文件中的代码之间,很可能存在跨文件依赖关系。

2. 开源代码的获取

项目官方自建站点:

apache.org (ASF: Apache Software Foundation)
mariadb.org
...

代码托管:

Github.com
gitee.com
SourceForge.net
code.google.com

3. 编译源代码工具

  • C、C++ 源码编译:使用 make 项目管理器

    configure 脚本 --> Makefile.in --> Makefile

    相关开发工具:

    autoconf:生成 configure 脚本
    automake: 生成 Makefile.in

  • java 源码编译:使用 maven

4. C 语言源码编译安装过程

利用编译工具,通常只需要三个步骤:

  • ./configure [options] # 功能:自定义参数和环境检查

    • 通过选项传递参数来指定安装路径(默认在 /usr/local/)、启用特性等,根据用户的指定及 Makefile.in (这是一个模板)文件生产 Makefile 文件。
    • 检查依赖到的外部环境,例如依赖的软件包等。
  • make # 进行编译,生成二进制。也会发现有些依赖包不存在而报错,需要第一步重做

    根据 Makefile 文件,构建应用程序

  • make Install # 仅仅是复制文件到指定的位置而已

    复制文件到相应的路径

注意:安装前可以查看源码包中的 README、install 帮助文件。

可以在 CentOS 8 中查看安装的日志:

/var/log/dnf.rpm.log        # 记录安装过的日志

/var/log/dnf.log            # 记录安装时出现的问题

]# dnf history               # 可以查看历史

4.1 编译安装准备

首先安装相应的包:

  • 开发工具:make、gcc(C/C++ 编译器的 GNU C Complier)
  • 开发环境:开发库(glibc,标准库)、头文件、可以安装开发包组(Development Tools)
  • 软件所需的相关依赖包

生产实践:基于最小化安装的系统建议安装下面相关包:

dnf install gcc make gcc-c++ glibc-devel pcre pcre-devel openssl openssl-devel \
    systemd-devel zlib-devel autoconf vim lrzrz tree tmux lsof tcpdump wget \
    net-tools iotop bc bzip2 zip unzip nfs-utils man-pages bash-completion

4.2 编译安装

第一步:运行 configure 脚步,生成 Makefile 文件。

一般可以查看源软件包中的 README 和 INSTALL 内容,而获取支持使用的选项:

]# ./configure --help

选项分类:

  • 安装路径设定

    –prefix=/PATH:指定默认安装路径,默认为 /usr/local/
    –sysconfdir=/PATH:配置文件安装位置
    system types:支持交叉编译

  • 软件特性和相关指定

    optional features:可选特性
    –disable-FEATURE
    –enable-FEATURE[=ARG]
    optional Packages:可选包
    –with-PACKAGE[=ARG]
    –without-PACKAGE[=ARG]

注意:通常被编译操作依赖的程序包,需要安装此包的开发组件,其包名一般类似于 name-devel-version。

第二步:make

第三步:make install

示例:手动编译安装 tree 最新版。

  • 如果已经安装了软件包,则可以使用 rpm 查询的办法得到官网地址:

    ]# rpm -qi tree
    Name        : tree
    Version     : 1.7.0
    ...
    Vendor      : CentOS
    URL         : http://mama.indstate.edu/users/ice/tree/
    Summary     : File system tree viewer
    ...
    
  • 到网上下载最新的 tree 版本的源码,并编译安装:

    ]# cd /usr/local/src
    ]# wget http://mama.indstate.edu/users/ice/tree/src/tree-2.0.4.tgz
    ]# cd tree-2.0.4
    
    # 如果需要修改相关的内容
    ]# vim INSTALL
    ]# make
    ]# make install
    
    ]# tree --Version
    tree v2.0.4 (c) 1996 - 2022 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro
    

可以查看 make 帮助:

]# man make

其中有一个选项 -j [N], --jobs[=N] 可以指定同时执行 N 个作业,N 的值建议使用 CPU 的个数。

4.3 安装后的配置

  1. 二进制程序目录导入至环境变量 PATH 中

    编辑文件 /etc/profile.d/NAME.sh

    export PATH=/PATH/TO/BIN:$PATH

    当然也可以使用符号链接,把命令连接到 PATH 环境变量中的某个目录中。

    ]# ln -sv /path/to/BIN /usr/local/bin/
    
  2. 相关用户及文件

    有些开源软件编译后,还需要创建相应的用户和文件。

  3. 导入帮助手册

    编辑文件 /etc/man.config/man_db.conf 文件,添加一个 MANPATH。
    加入的格式为:MANDATORY_MANPATH /path/to/man

如果在一台机器上进行了编译安装,则可以把安装目录全部拷贝到其他机器上即可。这里有个条件,那就是机器之间应该环境是一致的,否则,可能不能运行。

4.4 示例:编译安装最新版 httpd-2.4.54:

  • 先安装一些工具

    ]# dnf -y install gcc make apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config
    
  • 下载源码 Apache HTTP Server:https://dlcdn.apache.org/httpd/httpd-2.4.54.tar.bz2

    ]# wget https://dlcdn.apache.org/httpd/httpd-2.4.54.tar.bz2
    
  • 简单编译安装

    在 make 编译时,出现错误,缺乏 ‘redhat-hardened-ld’,以下命令可以查出所需的包:

    ]# dnf provides *redhat-hardened-ld*
    Last metadata expiration check: 1 day, 1:00:23 ago on Wed 23 Nov 2022 07:47:29 PM CST.
    redhat-rpm-config-125-1.el8.noarch : Red Hat specific rpm configuration files
    Repo        : @System
    Matched from:
    Filename    : /usr/lib/rpm/redhat/redhat-hardened-ld
    
    ]# cd httpd-2.4.54
    ]# ./configure --prefix=/apps/httpd24 --enable-ssl
    ]# make -j 2
    ]# make install
    
    ]# cd /apps/httpd24/bin/apachectrl start
    ]# ss -tnl
    State      Recv-Q    Send-Q    Local Address:Port  Peer Address:Port   Process
    LISTEN     0         128             0.0.0.0:22         0.0.0.0:*
    LISTEN     0         128                   *:80               *:*
    LISTEN     0         128                [::]:22            [::]:*
    
    # 注意,防火墙和 SELinux要关闭或设置好
    
    ]# curl localhost
    <html><body><h1>It works!</h1></body></html>
    
  • 配置相关文件

    ]# echo 'PATH=/apps/httpd24/bin:$PATH' > /etc/profile.d/httpd24.sh
    ]# . /etc/profile.d/httpd24.sh
    
  • 指定使用 apache 用户运行

    ]# useradd -r -s /sbin/nologin -d /var/www -c Apache -u 48 apache
    # 修改其中成 User apache , Group apache
    ]# vim /apps/httpd24/etc/httpd.conf
    
    ]# echo 'PATH=/apps/httpd24/bin:$PATH' > /etc/profile.d/httpd.sh
    
  • 启动服务

    ]# apachectrl restart
    ]# ps aux              # 查看进程
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值