CentOS 8 编译安装程序包示例(httpd)学习笔记
创始人
2024-02-14 12:44:03

目录

  • CentOS 8 编译安装程序包(httpd)
    • 1. 源码编译介绍
    • 2. 开源代码的获取
    • 3. 编译源代码工具
    • 4. C 语言源码编译安装过程
      • 4.1 编译安装准备
      • 4.2 编译安装
      • 4.3 安装后的配置
      • 4.4 示例:编译安装最新版 httpd-2.4.54:

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
    

    It works!

  • 配置相关文件

    ]# 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              # 查看进程
    

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...