内网节点编译redis6.0之升级GCC版本至9.3

起源:

要部署redis6.0哨兵环境,但是6.0又需要gcc版本大于4.9.而阿里云的linux系统自带的是4.8.5。不能满足编译需求

公司大部分阿里云服务器节点都是内网形式,没有办法通过yum方式更新gcc

(亦或者我不知道?希望有大佬留言)

遂网上一顿搜索。

有看到通过下载gcc 阿里云服务器升级gcc_阿趟哥的博客-CSDN博客_服务器gcc升级

但是这种二进制方式,操作不当很容易出现各种问题。

(这类方式我自己在虚拟机上也实验过,特别浪费时间,适合摸鱼,一装一下午没了。)

其实还有一种更为简单、省时的办法,使用rpm离线包安装。遂分享出来,方便大家处理这个问题。

gcc9.3rpm离线安装包-Linux文档类资源-CSDN文库

下面是操作流程:

将压缩包下载后上传到目标节点。
解压
tar xvf  gcc9.3rpm.tar.gz 
cd gcc 
rpm  -ivh  *.rpm --nodeps --force
输出内容如下:
warning: audit-2.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
warning: devtoolset-9-binutils-2.32-16.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f2ee9d55: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:libsepol-2.5-10.el7              ################################# [  3%]
   2:libselinux-2.5-15.el7            ################################# [  5%]
   3:audit-libs-2.8.5-4.el7           ################################# [  8%]
   4:libsemanage-2.5-14.el7           ################################# [ 10%]
   5:libquadmath-4.8.5-44.el7         ################################# [ 13%]
   6:libgfortran5-8.3.1-2.1.1.el7     ################################# [ 15%]
   7:libsemanage-python-2.5-14.el7    ################################# [ 18%]
   8:audit-libs-python-2.8.5-4.el7    ################################# [ 21%]
   9:libselinux-python-2.5-15.el7     ################################# [ 23%]
  10:libselinux-utils-2.5-15.el7      ################################# [ 26%]
  11:policycoreutils-2.5-34.el7       ################################# [ 28%]
  12:setools-libs-3.3.8-4.el7         ################################# [ 31%]
  13:scl-utils-20130529-19.el7        ################################# [ 33%]
  14:python-IPy-0.75-6.el7            ################################# [ 36%]
  15:libicu-50.2-4.el7_7              ################################# [ 38%]
  16:boost-regex-1.53.0-28.el7        ################################# [ 41%]
  17:libcgroup-0.41-21.el7            ################################# [ 44%]
  18:ctags-5.8-13.el7                 ################################# [ 46%]
  19:source-highlight-3.1.6-6.el7     ################################# [ 49%]
  20:checkpolicy-2.5-8.el7            ################################# [ 51%]
  21:policycoreutils-python-2.5-34.el7################################# [ 54%]
  22:devtoolset-9-runtime-9.1-0.el7   ################################# [ 56%]
  23:devtoolset-9-binutils-2.32-16.el7################################# [ 59%]
  24:devtoolset-9-elfutils-libelf-0.17################################# [ 62%]
  25:devtoolset-9-elfutils-libs-0.176-################################# [ 64%]
  26:devtoolset-9-elfutils-0.176-6.el7################################# [ 67%]
  27:devtoolset-9-dwz-0.12-1.1.el7    ################################# [ 69%]
  28:devtoolset-9-gdb-8.3-3.el7       ################################# [ 72%]
  29:devtoolset-9-libstdc++-devel-9.3.################################# [ 74%]
  30:devtoolset-9-ltrace-0.7.91-2.el7 ################################# [ 77%]
  31:devtoolset-9-make-1:4.2.1-2.el7  ################################# [ 79%]
  32:devtoolset-9-memstomp-0.1.5-5.el7################################# [ 82%]
  33:devtoolset-9-strace-5.1-7.el7    ################################# [ 85%]
  34:audit-2.8.5-4.el7                ################################# [ 87%]
  35:devtoolset-9-gcc-9.3.1-2.el7     ################################# [ 90%]
  36:devtoolset-9-gcc-c++-9.3.1-2.el7 ################################# [ 92%]
  37:devtoolset-9-libquadmath-devel-9.################################# [ 95%]
  38:devtoolset-9-gcc-gfortran-9.3.1-2################################# [ 97%]
  39:devtoolset-9-toolchain-9.1-0.el7 ################################# [100%]

gcc -version 
#此时查看版本还会是旧版本。

scl enable devtoolset-9 bash
#启用新安装的9版本 

gcc -v    #再次查询,已经是新版本了。

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-9/root/usr --mandir=/opt/rh/devtoolset-9/root/usr/share/man --infodir=/opt/rh/devtoolset-9/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-9.3.1-20200408/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC) 

永久生效

echo "source /opt/rh/devtoolset-9/enable" >> /etc/bashrc
source /etc/bashrc

编译redis6.0

tar xvf redis-6.0.0.tar.gz -C /usr/local/
mv  redis-6.0.0/ redis6
cd redis6
make install PREFIX=/usr/local/redis6


#部分输出内容:
cd src && make all
make[1]: Entering directory '/usr/local/redis6/src'
    CC Makefile.dep
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark
rm -f adlist.d quicklist.d ae.d anet.d dict.d server.d sds.d zmalloc.d lzf_c.d lzf_d.d pqsort.d zipmap.d sha1.d ziplist.d release.d networking.d util.d object.d db.d replication.d rdb.d t_string.d t_list.d t_set.d t_zset.d t_hash.d config.d aof.d pubsub.d multi.d debug.d sort.d intset.d syncio.d cluster.d crc16.d endianconv.d slowlog.d scripting.d bio.d rio.d rand.d memtest.d crcspeed.d crc64.d bitops.d sentinel.d notify.d setproctitle.d blocked.d hyperloglog.d latency.d sparkline.d redis-check-rdb.d redis-check-aof.d geo.d lazyfree.d module.d evict.d expire.d geohash.d geohash_helper.d childinfo.d defrag.d siphash.d rax.d t_stream.d listpack.d localtime.d lolwut.d lolwut5.d lolwut6.d acl.d gopher.d tracking.d connection.d tls.d sha256.d timeout.d anet.d adlist.d dict.d redis-cli.d zmalloc.d release.d ae.d crcspeed.d crc64.d siphash.d crc16.d ae.d anet.d redis-benchmark.d adlist.d dict.d zmalloc.d siphash.d
(cd ../deps && make distclean)
..
....
.....
......

Hint: It's a good idea to run 'make test' ;)

make[1]: Leaving directory '/usr/local/redis6/src'



余下的就是修改配置等操作了。这里不表。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值