Linux程序安装之编译安装

简介:
  1. 前言

    有别于Windows下的双击安装程序,Linux程序的安装略显繁琐,但也因为Linux程序安装的较高自由度,对于技术人员来说真是妙趣横生啊!(讨厌Windows为了用户做一切决定的态度)

    本文就来介绍如何在Linux下安装各种程序,对于难度最大的方式(即编译安装)做重点介绍。

  2. Linux程序安装方式

    1. 4大程序安装方式

      1. 简单地二进制格式打包程序:如某些perl程序,直接解压包就可以运行

      2. 使用包管理器

        优势:便捷,易用

        分类:Debian系:dpkg;Redhat系:rpm

      3. 使用包管理器的前端工具

        优势:借助包管理器,还能自动处理各程序包间的依赖关系,更方便了

        分类:Debian系:apt-get;Redhat系:yum

      4. 源代码编译安装

        优势:可以自由定制安装过程中各项配置,可集中安装在同一路径下,利于卸载;学习源代码编译安装,对于理解Linux系统的实现原理也是大有益处的

    2. 已安装程序的文件组成:

      wKiom1MLXIiwzFS7AAWHK4Hz6Ig742.jpg

  3. 编译安装(重点)

    1. 基本安装步骤

      1. 最基本的编译安装步骤如下

        # 下载源代码包
        wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.2.26.tar.gz
        # 解压包
        tar zxvf httpd-2.2.26.tar.gz
        # 进入解压后程序目录
        cd httpd-2.2.26
        # 执行configure脚本,进行编译前的准备工作
        ./configure
        # 编译
        make
        # 安装
        make install
    2. configure脚本的详细解释

      1. 用户执行configure脚本后,会检查编译环境是否满足编译需求,并定义当前程序编译时启用哪些特性或功能,以及安装路径的定义等,如:

        # 用户需要定义的配置:
        # 指定安装路径:
        --prefix=/usr/local/package_name
        --sysconf=/etc/configfile_name
        # 指定启用/禁用的特性:
        --enable-fpm
        --disable-socket
        # 指定所依赖的功能、程序或文件:
        --with-function:启用某功能
        --without-function:禁用某功能
      2. configure脚本在执行过程中,还会根据压缩后目录中的Makefile.ini文件生成makefile文件(makefile文件是下一步编译make命令的配置文件)

      3. 不同的程序,其configure脚本功能不同,要获取帮助:./configure --help

    3. 注意事项

      1. 编译安装前,需检查编译环境是否可以编译,如已安装gcc等(一般Linux系统都自带)

      2. 若没有安装gcc等根据,可通过yum安装开发套件,如下所示

        yum -y groupinstall "Server Platform Development" "Development Tools"

 4.  Apache编译安装实例

    1. 下载httpd源文件

      wKioL1MLX0fiLPAOAACQ6AhM7-E526.jpg

    2. 解压缩打包源文件

      wKiom1MLX3qzN3LyAAA6rCT168g414.jpg

    3. 编译前准备

      wKioL1MLX2jSjuEWAAGq7x1Sqyo507.jpg

    4. 编译

      wKiom1MLX5ywq15wAAANIzx-WOk042.jpg

    5. 安装

      wKioL1MLX4SBsftDAAAcExqoEKE030.jpg

    6. 后续处理(若指定了特定的安装路径,则需要进行如下配置,防止程序执行出错)

      1. 二进制程序输出:修改环境变量$PATH,使得直接运行程序

        # vi /etc/profile.d/apache.sh 添加如下内容
        PATH=/var/local/apache/bin:/var/local/apache/sbin:$PATH
        export $PATH
      2. 头文件输出:

        ln –sv /var/local/apache/include /usr/include/httpd
      3. 库文件输出:

        #  vi /etc/ld.so.conf.d/httpd.conf 添加如下内容
        /var/local/apache/lib
        # 执行ldconfig:让系统重新生成库文件路径缓存
      4. man文件输出:使得man命令可以找到httpd的帮助文档

        # vi /etc/man.conf 添加如下内容
        MANPATH /var/local/apache/man
    7. 启动服务

      apachectl -k start
    8. 检查服务是否启动(8080端口已经被监控,说明程序已启动)

      wKioL1MLZIbTrRagAADAHBH152Y438.jpg










本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1362936,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
169 6
|
3月前
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
616 2
|
3月前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
64 2
|
1月前
|
安全 关系型数据库 MySQL
Linux下安装mysql8.0(以tar.xz包安装--编译安装)
通过上述步骤,您完成了从下载、编译、安装到配置MySQL 8.0的全过程。此过程虽然较为复杂,但提供了对MySQL安装环境的完全控制,有助于满足特定的部署需求。在实际操作中,根据具体的系统环境,可能还需调整部分步骤或解决未预见的依赖问题。始终参考官方文档和社区资源,保持安装过程与最新版本的兼容性。
558 67
|
28天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
33 1
|
2月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
40 5
|
3月前
|
SQL 关系型数据库 MySQL
linux 上源码编译安装 PolarDB-X
linux 上源码编译安装 PolarDB-X
173 6
linux 上源码编译安装 PolarDB-X
|
3月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
|
3月前
|
Linux API
在Linux中,程序产生了库日志虽然删除了,但磁盘空间未更新是什么原因?
在Linux中,程序产生了库日志虽然删除了,但磁盘空间未更新是什么原因?
|
3月前
|
网络协议 Linux Shell
在Linux中,如何通过一个端口找到程序?
在Linux中,如何通过一个端口找到程序?
下一篇
无影云桌面