源码包与RPM包的区别

  1. 云栖社区>
  2. 博客>
  3. 正文

源码包与RPM包的区别

白及88 2016-03-02 17:24:00 浏览1727
展开阅读全文

这篇文章都以Apache的安装为例

一、区别

    1、安装前:概念上不同。

        1.1、RPM包是二进制包,源码包其实就是我们能认识的C语言文件。

    2、安装后:安装位置的不同

        1.1、RPM包安装位置是安装在多个位置,这不是由安装人决定的,而是由RPM包的作者决定的。

    3、其他

        3.1、RPM包安装后访问效率较低,源码包访问效率高。所以安装访问量大的服务的时候建议使用源码包安装,Apache就强烈建议使用源码包安装。

        3.2、RPM虽然也可以指定位置,但是不建议指定位置安装RPM包,因为安装之后系统找不到命令,就不可以用RPM的命令来启动和关闭了。

二、启动与停止

1、RPM

启动服务:  1、使用绝对路径方式启动:/etc/rc.d/init.d/httpd start  (linux标准启动方法)

                2、service httpd start  (redhat系列专有命令)

停止服务:service httpd stop

2、源码包


    2.1、启动服务:  /usr/local/apache2/bin/apachectl start

    2.2、怎么知道这个启动命令的?

            进入源码包目录,在这个目录下有一个INSTALL文件,打开文件可以发现安装和启动方法。

三、源码包安装位置

    1、默认安装位置:/usr/local/软件名/

    2、启动方法:/usr/local/apache2/bin/apachectl start

    3、源码包保存位置:/usr/local/src/

四、安装

    1、./configure 软件配置与检查(进入解压缩目录后都会有configure这个命令)

        1.1、定义需要的功能选项

        1.2、检测系统环境是否符合安装要求

        1.3、把定义好的功能选项和检测环境系统信息都写入Makefile文件,用于后续的编辑

        说明:a、每个源码包都会有configure命令,就算极个别没有这个命令也会用其他的命令取代

                 b、执行过./configure之后,会生成Makefile文件,make和make install都是依赖这个文件进行编译安装的,

        此处安装假设: ./configure --prefix=/usr/local/apache2/

    2、make:编译

        2.1、将源码包翻译成机器能识别的语言

        2.2、一旦编译出错,可使用make clean,清除之前的编译。

        说明:这一步执行时间一般是最长的。

    3、make install

        3.1、真正进行安装

        3.2、一旦这一步报错,那要执行两步:

                1、make clean

                2、直接删除/usr/local/apache2/这个目录即可。

五、卸载

        1、源码包卸载:直接删除安装目录即可,不会残留任何垃圾。

        2、RPM包卸载:rpm -e 软件名


仅供参考。

这篇文章是考虑是最简单的情况,博主讲的很清晰。网上的文章褒贬不一。


 建议在安装线上的生产服务器软件包时都用源码安装,这是因为源码安装可以自行调整编译参数,最大化地定制安装结果。这里以MySQL 5线上环境的编译安装来说明之,其编译参数如下所示:


  1. ./configure -prefix=/usr/local/mysql -without-debug  
  2. -without-bench -enable-thread-safe-client -enable-assembler -enable-profiling 
  3. -with-mysqld-ldflags=-all-static -with-client-ldflags=-all-static 
  4. -with-charset=latin1 -with-extra-charset=utf8,gbk -with-innodb -with-csv-storage-engine 
  5. -with-federated-storage-engine -with-mysqld-user=mysql-without-embedded-server 
  6. -with-server-suffix=-community -with-unix-socket-path=/usr/local/mysql/sock/mysql.sock 
  7. && make && make install
  8.  

在安装MySQL时,源码安装与rpm安装相较,其特点如下:

我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码。

根据不同的软件平台环境调整相关的编译参数(源码安装不仅适用于rhel/centos,其他系统像FreeBSD、Solaris、Ubuntu等一样适用)。

可针对特定的应用场景选择需要什么组件或不需要什么组件。

同一台主机上可以安装多个MySQL(rpm安装则仅能安装一个MySQL)。

根据需要存储的数据内容选择只安装需要的字符集。

理论上源码静态编译方式安装效率会高一点,但到底比rpm方式高多少得看具体情况,一般在5%左右。

某次在线上环境工作,我用yum卸载一个软件包时遇到了极其危险的情况,这里也跟大家分享一下:当时,yum remove自动卸载了许多这个软件包自身依赖的系统包,导致系统崩溃了,SSH不能登录,并且SCP及RSYNC也都不能用了,幸亏FTP命令还能用, 所以数据很快被FTP传到其他服务器上了,但系统已经彻底崩溃,只有重装了。如果是源码安装的软件包就没有这种危险,需要卸载时只需要删除软件包安装的目 录即可。

综上所述,源码安装的好处如下:

最大的好处就是可以自行调整编译参数,最大化地定制安装结果。

源码安装可以选择最新的软件包,而Linux系统(包括FreeBSD)自带的软件包一般都是最稳定的版本,但不能保证是最新的。

相对而言,源码安装的性能是最优异的。

源码包安装的软件卸载时极为方便和简单,更重要的是,它比较安全,尤其是对线上的生产环境而言。

迁徙也比较方便,如果不涉及系统库文件,复制到另一台机器上也可以使用。

这里也简单介绍一下在Linux/Unix下安装软件的源码三部曲,在后面我们会经常看到它们的身影。


  1. ./configure  
  2. make  
  3. make install 

./configure是用来检查环境变量及配置编译选项的,make是用来将源代码编译成二进制文件的,而make install则会将make编译出来的文件安装到指定位置(或默认位置)。

在本节中,我们从服务器的硬件选择、安装及内核等方面对单机服务器的性能进行了优化,不过对于网站和系统来说,单机优化对整体性能提升的作用毕竟有限,整体性能提升主要靠服务器的高可用和高扩展性来实现,这部分内容在后面的章节中再来说明。




网友评论

登录后评论
0/500
评论
白及88
+ 关注