`
275553385
  • 浏览: 721634 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
文章分类
社区版块
存档分类
最新评论

(转)编译安装与RPM安装的区别

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

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

    

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ./configure  
    make  
    make install 

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

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

相关推荐

    openEuler 上编译安装MLNX驱动

    "openEuler 上编译安装 MLNX 驱动" openEuler 是一个基于 Linux 内核的操作系统,MLNX 驱动是 InfiniBand 高速互连技术的驱动程序。编译安装 MLNX 驱动是 openEuler 上实现高性能计算和高速存储的关键步骤。下面是 ...

    linux安装gcc编译环境所需rpm包

    标题提到的“linux安装gcc编译环境所需rpm包”,意味着我们需要在没有yum(适用于基于RPM的系统,如CentOS、Fedora)的情况下,使用RPM包来安装GCC。SUSE 12使用的是zypper,虽然它支持RPM包,但默认使用的是 YaST...

    RPM Builder 将tar.gz 转成RPM

    2. **配置环境**:确保你已经安装了RPM构建工具链,如`rpm-build`或`mock`,以及必要的编译工具,如`gcc`、`make`等。 3. **运行RPM Builder**:使用RPM Builder命令行工具,提供你的SPEC文件和源代码tar.gz文件。...

    redis安装离线版免编译版及离线安装需要的所有包文件

    本资源可结合我的文章《详解CentOS7下编译安装Redis5.x设置开机启动及修改端口(含redis需编译安装包和redis免编译安装包)》配合使用,同时也可单独去使用。包含redis3.0.7免编译版安装包,redis5.0.7离线安装包,...

    GCC编译环境+RPM离线包+CentOS7.9最小化环境安装

    4. **编译与安装**:进入解压后的目录,如`cd gcc-7.3.0`,然后按照以下步骤进行: - 配置:`./configure --prefix=/usr/local/gcc-7.3.0 --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,java,...

    ubuntulinux软件安装&rpmtar.gz等编译安装.pdf

    Ubuntu Linux 软件安装与 RPM 和 Tar.GZ 等编译安装 本文将详细介绍 Ubuntu Linux 软件安装的多种方法,包括使用新立得软件包管理器安装、使用终端安装软件、手动安装 RPM 和 Tar.GZ 等编译安装。 一、使用新立得...

    kernel RPM包编译文档.docx

    在本文档中,我们将介绍如何使用rpm命令安装编译好的RPM包。 本文档提供了详细的Linux内核编译指南,包括rpmbuild工具的使用、SRPM和SPEC文件的应用、编译Linux内核、修改源代码和制作patch、应用编译好的RPM包等...

    SUSE 使用 rpm 安装gcc开发环境rpm包

    本文将详细介绍如何使用`rpm`命令在SUSE系统中安装`GCC`的开发环境。 `RPM`(Red Hat Package Manager)是一种流行的包管理器,用于在类Unix系统中安装、升级和卸载软件包。它不仅限于Red Hat系统,也包括SUSE在内...

    rabbitmq编译安装erlang的所需要的依赖rpm包

    本篇将详细介绍在ARM架构上编译安装Erlang以及其所需的依赖rpm包。 首先,Erlang是RabbitMQ的基础,它是一门强大的并行计算和分布式计算语言,以其高可用性、容错性和实时性能而闻名。在ARM系统上编译Erlang,我们...

    编译安装telnet命令所用包

    然而,在某些系统中,telnet可能并未预装,需要我们手动进行编译安装。本篇将详细介绍如何使用给定的压缩包文件来编译安装`telnet`命令。 首先,我们要了解压缩包中的三个文件: 1. `xinetd-2.3.14-34.el6.x86_64....

    center os7 安装gcc/make所需要的rpm包

    在Linux系统中,GCC(GNU ...6. 手动安装RPM包:使用`rpm`命令安装压缩包内的RPM文件。 7. 依赖管理:安装RPM包时需注意处理软件的依赖关系。 了解这些知识点后,你应该能够顺利在CentOS 7环境中安装和使用GCC和Make。

    基于centos 7.9编译出openssh 9.9p1 rpm文件4个

    2安装: rpm -ivh openssh-9.9p1-1.el7.x86_64.rpm rpm -ivh openssh-clients-9.9p1-1.el7.x86_64.rpm rpm -ivh openssh-server-9.9p1-1.el7.x86_64.rpm 3异常处理:Permissions 0640 for '/etc/ssh/ssh_host_ed...

    编译安装nginx所需的依赖包GCC,GCC++,PCRE,PCRE-DEVEL,RPM

    在构建和部署软件服务的过程中,有时需要从源代码编译安装以获取最新特性和最佳性能。Nginx,一个高性能的Web服务器和反向代理,就是这种情况。在Linux环境中,编译安装Nginx需要一些依赖包,这些依赖包包括GCC、GCC...

    openssh编译rpm包.txt

    openssh编译rpm包.txt

    postgresql14加postgis3.2在centos离线编译安装

    本教程将详细介绍如何在CentOS系统上离线编译安装PostgreSQL 14和PostGIS 3.2,这两个是用于地理空间数据库管理的重要组件。 PostgreSQL是一个强大的开源关系型数据库管理系统,它支持复杂查询、事务处理和多种数据...

    suse离线安装gcc的rpm包

    你可以使用`rpm -q --queryformat='%{name}-%{version}-%{release}.%{arch}\n'`命令查看已安装的RPM包信息,以确保新包与现有系统环境匹配。 安装步骤如下: 1. 将压缩包解压到本地目录,例如 `/home/user/gcc_...

    安装keepalived确实的rpm包

    安装keepalived时缺少的一些包,收集起来共享,包括 autoconf-2.63-5.1.el6.noarch.rpm automake-1.11.1-1.2.el6.noarch.rpm cluster-glue-1.0.5-2.el6.i686.rpm cluster-glue-libs-1.0.5-2.el6.i686.rpm cluster-...

    openssh9.6 rpm包直接安装包含一键安装脚本,kylin V10

    在Kylin V10操作系统上,使用OpenSSH 9.6 RPM包进行安装是一个便捷的方法,特别是当这个RPM包还附带了一键安装脚本时。OpenSSH(Open Source Secure Shell)是一种广泛使用的网络协议,它允许用户通过加密方式在不...

    龙芯(Mips64)nginx免编译rpm安装包。

    nginx免编译rpm安装包,在Mips64架构下通过rpm命令安装,安装路径默认在根目录的/opt下。

Global site tag (gtag.js) - Google Analytics