前文:通常情况下在linux系统中安装一个软件包或者是服务有几种方式。

最简单的一种是在可以连接外网的情况下,配置好网络yum源,需要什么包就配置什么yum然后一路yum install 软件包名即可(必要条件:可以连接外网)

其次如果需要的软件包可以在系统的镜像中找到,那么可以配置好本地yum源进行安装也很方便(必要条件:本地镜像,可以不连接外网)

最后一种办法是使用rpm包安装(优点是可以不需要本地镜像,也可以不连接外网,但缺点是一个依赖包会依赖很多个依赖包,安装好之后如果需要一些服务新的功能则必须要安装新的安装包)

背景交代:本次是在现场实际操作使用服务器搭建redis集群。系统版本为:红帽7.2,无法连接外网,但是配置了一个http的服务器yum源。在使用yum源的过程当中发现有一台服务器始终无法正常使用yum源且现场没有系统镜像和编译环境,但是要安装redis集群,使用的要么是编译安装,要么是yum源安装,还未见哪路英雄使用rpm包安装过。几经波折之后,终于想到了以下几种办法并测试成功。

法1:借鸡生蛋 (借其他相同环境具有编译能力的服务器来编译,然后在不具备编译能力的服务器上进行安装),最终完成redis的安装(这种方法不过是权宜之计,不能解决根本问题,只能针对一些编译环境不太复杂的软件安装)

法2:抽丝剥茧,顺腾摸瓜。现在倒推一次。要安装redis,可以使用yum安装(排除:无外网,yum命令无法使用),可以使用编译安装,选择编译安装,就必须要有编译环境(gcc,gcc-c++)。现在的情况是无法使用yum安装gcc,gcc-c++ ,也不具备编译gcc的安装包来安装gcc(无编译环境),幸好大道五十,天衍四十九。万事万物必会留下一线生机,而现在,留给我唯一的生路就只有rpm包安装gcc,gcc-c++了。此法非常人所用,但用此法必定是出于极境之时。所以留下博文,忘后来者以此为鉴。下面是rpm包安装gcc方法:

使用rpm包安装gcc时,最主要的是安装顺序(本次主要针对7.2的系统):

安装时所需要的安装包:

链接:https://pan.baidu.com/s/1Je5aKc2Jny7VtoUKCOHJnQ 密码:lxkf

rpm -ivh glibc-2.17-* nss-softokn-*

rpm -ivh libgcc-4.8.5*

rpm -ivh gmp-6.0*

rpm -ivh mpfr-3.1*

rpm -ivh libmpc-1.0.1*

rpm -ivh cpp-4.8.5*

rpm -ivh kernel-headers-*

rpm -ivh glibc-headers-*

rpm -ivh glibc-devel*

rpm -ivh gcc-4.8.5*

rpm -ivh libstdc++-4.8*

rpm -ivh libstdc++-devel*

rpm -ivh gcc-c++*

下面是特殊的查询技巧,适用于linux下所有版本的gcc安装包搜索方法:

要下载的包,包名基本相同,但是针对不同系统版本需要下载不同版本的包,否则一个高版本的包或者低版本的包足以让你找依赖包找到崩溃。那么如何找到对应版本的rpm包呢?下面我有特殊的寻找技巧

1 在安装rpm包是会报错,显示依赖各种库,而这些库分别对应那些包呢,我们可以通过这个网址来查询。

https://centos.pkgs.org

例如:安装一个包时显示要依赖一个库文件libgmp.so.10,我们应该如何去查询对应版本的安装包呢?

首先把依赖的库复制到搜索窗口

在查找到包的名字后,到对应的系统版本下下载对应的包即可,系统对应的网址http://vault.centos.org/6.6/os/x86_64/Packages/

点击下载即可,然后一个一个排除依赖,最终完成gcc编译环境安装

linux 极限环境下编译环境的安装的更多相关文章

  1. Redhat环境下编译安装Google Bazel

    Redhat环境下编译安装bazel 作者:Jack47 目前Google Bazel没有提供各个操作系统下的二进制安装包,只提供源代码,需要我们自己编译安装,详情可以见我翻译的中文版Google B ...

  2. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  3. centos7.6环境下编译安装tengine-2.2.2的编译安装

    centos7.6环境下编译安装tengine-2.2.2的编译安装 .获取tengine2..2的源码包 http://tengine.taobao.org/download/tengine-2.2 ...

  4. linux环境下测试环境搭建

    一.linux环境下测试环境搭建过程简述: 1.前端后台代码未分离情况下: 主要步骤为:安装jdk,安装mysql,安装tomcat,将项目代码部署到tomcat/webapps/下. 2.前端后台代 ...

  5. Suse环境下编译linux-2.6.24内核

    Suse环境下编译linux-2.6.24内核 1.下载linux-2.6.24内核源码: https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/ ...

  6. WIN7环境下CUDA7.5的安装、配置和测试(Visual Studio 2010)

    以下基于"WIN7(64位)+Visual Studio 2010+CUDA7.5". 系统:WIN7,64位 开发平台:Visual Studio 2010 显卡:NVIDIA ...

  7. 在SoCEDS环境下编译和更新preloader和uboot程序的方法

    在SoCEDS环境下编译和更新preloader和uboot程序的方法   前面有介绍preloader在HPS boot过程中的的作用,接下来讲述下用户在SoCEDS环境下改如何编译preloade ...

  8. Android 环境下编译FFmpeg

    Android 环境下编译FFmpeg 开发环境:Ubuntu 12.04.2 LTS , android-sdk-linux, android-ndk-r8e 一 .X264 编译 1.    X2 ...

  9. Boost学习总结(一)VS2010环境下编译STLport和Boost

    Boost学习总结(一)VS2010环境下编译STLport和Boost Boost简介 Boost库是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库.1998年,Beman G.Da ...

随机推荐

  1. MyBatis进阶(一)

    MyBatis参数传递 1. MyBatis单参数传递 单参数传递不做特殊处理,直接取出参数值赋给xml文件,如#{id} 2. MyBatis多参数传递 多参数传递默认使用{arg1, arg0, ...

  2. Qt自定义阴影效果和QOpenGLWidget冲突导致控件不刷新

    Qt5.6.2版本存在这样一个问题(其它版本未测试),当main函数中设置了application.setAttribute(Qt::AA_NativeWindows)(用于使得每个子界面都可以获取w ...

  3. js 数组元素遍历

    <html> <body> <script type="text/javascript"> var x var mycars = new Arr ...

  4. 浅谈String中的==和对象中引用对象类型的==

    @Test public void test02() { StringBuffer sb = new StringBuffer(); sb.append('a'); sb.append(11); Sy ...

  5. 20175317 《Java程序设计》第三周学习总结

    20175317 <Java程序设计>第三周学习总结 教材学习内容总结 第三周我学习了教材第四章的内容,了解了Java中的部分常用语句,学到了以下内容: 明白了什么是类,成员变量有哪些,什 ...

  6. postman设置token关联参数,其他接口直接读取token变量

    问题描述:有一个登录接口获取token,其他接口再次访问时都要带上token 解决方案: 步骤一:在登录接口访问后设置postman的环境变量,例如设置环境变量名:token,值为登录接口访问成功后, ...

  7. Police Stations CodeForces - 796D (bfs)

    大意: 给定树, 有k个黑点, 初始满足条件:所有点到最近黑点距离不超过d, 求最多删除多少条边后, 使得原图仍满足条件. 所有黑点开始bfs, 贪心删边. #include <iostream ...

  8. SQL SERVER 查看sql语句性能与执行时间

    [方法一] set statistics profile on set statistics io on set statistics time on go --sql语句 go set statis ...

  9. html网页如何使用哪种浏览器内核渲染的选择

    众所周知,国内的浏览器基本都是双内核的(ie(Trident)+webkit):而且基本默认时都是用webkit内核.尽管IE浏览器体验差,但是有时也会需要用IE内核来渲染的(比如银行网站). 如果要 ...

  10. linux软件管理 源码包

    源码包安装位置 安装在指定位置当中,一般是 /usr/local/软件名/ ​ 注意: 需要指定安装路劲为了便于卸载,因为源码包的是没有卸载命令的,它的的卸载方式就是把对应安装文件夹删除了. 所以如果 ...