300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【linux】Rehat/centOS 离线安装软件(如gcc)的方法

【linux】Rehat/centOS 离线安装软件(如gcc)的方法

时间:2020-07-18 12:34:40

相关推荐

【linux】Rehat/centOS 离线安装软件(如gcc)的方法

目录

方法一、源码安装or安装rpm包

方法二、下载rpm包安装

离线安装软件

原理:

实例

注意

CentOS7 离线安装 GCC 9.2.0

linux编译安装软件会遇到依赖各种库,离线的情况下处理难度非常棘手,下面这个方法是比较好的方法总结:

方法一、源码安装or安装rpm包

1、源码安装

2、在其他相同系统的机器上编好rpm包,在本机安装

因为源码安装一般需要下载很多依赖,所以可在其他可以连接网络的,相同linux版本的机器上编译出rpm包,拿到离线机器上去安装。

方法二、下载rpm包安装

rpm包网站:Packages for Linux and Unix -

可以下载后传到环境安装,也可以拉到页面的how to的位置,看它教你如何安装:

简单的一句话:

Install Howto

Install python3-docutils rpm package:

# dnf --enablerepo=crb install python3-docutils

复杂的,会让你先下载源和安装源,然后yum install如果要安装的包依赖第三方包比较多,则这个方法比较合适。

离线安装软件

原理:

操作系统镜像包含了各种各样的库文件,也就是我们安装软件时所依赖的,但是我们PC上安装的linux操作系统只是安装了默认的和我们选择的软件所依赖的库,其他的并没有安装。也就是依赖库虽然不存在于操作系统上,但是大多数在镜像中是存在的。

实例

以下是linux 上编译安装软件的方法,既当安装软件出现缺少某些库的时候,就到操作系统镜像下的Packages文件找对应的库安装(网站找的会有各种问题:版本不同,系统不同等)

到网站 /centos-vault/6.5/os/i386/Packages/ 下载gcc-4.4.7-4.el6.i686.rpm

rpm -Uvh gcc-4.4.7-4.el6.i686.rpm

提示安装失败,依赖

error: Failed dependencies:

cpp = 4.4.7-4.el6 is needed by gcc-4.4.7-4.el6.i686

在/centos-vault/6.5/os/i386/Packages/ 目录下搜索cpp 找到cpp-4.4.7-4.el6.i686.rpm

下载,rpm -Uvh cpp-4.4.7-4.el6.i686.rpm 然后 安装gcc-4.4.7-4.el6.i686.rpm

遇到这样的报错:

error: Failed dependencies:

libmpfr.so.1 is needed by cpp-4.4.7-4.el6.i686

因为linux的库前面会有个前缀lib,所以去搜索的时候要去掉lib 直接搜mpfr 就能搜到对应的rpm

也有例外的,如

libppl.so.7 is needed by cloog-ppl-0.15.7-1.2.el6.i686

libppl_c.so.2 is needed by cloog-ppl-0.15.7-1.2.el6.i686

虽然报了两个依赖,实际只需下载ppl的包(ppl-0.10.2-11.el6.i686.rpm)即可

注意

该离线方法的要点是,通过命令:

cat /etc/issue 显示的是发行版本信息

lsb_release -a 显示的是发行版本信息

查出linux的发行版本6.5,然后到/centos-vault网站,根据自己的系统选择目录,找到/os/i386/Packages/ 下的gcc rpm 下载下来,安装。 (32位是选择i386 64选择目录x86_64)

Redis need tcl 8.5 or newer

/luyee/article/details/18766911

hadoop@stormspark:~/workspace/redis2.6.13/src$ make test

You need tcl 8.5 or newer in order to run the Redis test

make: *** [test] Error 1

wget /tcl/tcl8.6.1-src.tar.gz

sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/

cd /usr/local/tcl8.6.1/unix/

sudo ./configure

sudo make

sudo make install

################################

安装Redis 2.8.18时报错:

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory

zmalloc.h:55:2: error: #error "Newer version of jemalloc required"

make[1]: *** [adlist.o] Error 1

make[1]: Leaving directory `/data0/src/redis-2.6.2/src'

make: *** [all] Error 2

make MALLOC=libc

l .05.29

类似文章:超简单!!centos 6离线源码编译安装升级gcc、binutils、automake、autoconf

centos 6系列的Linux发行版,是非常成功(具足UNIX精神)的发行版,可能大家都已经用得非常习惯了。

但问题是,其内核及附带的工具软件,版本却都非常老了。

centos 7上的软件版本虽然比较新,但centos 7设计风格的突变(主要是引入了很不符合UNIX精神的systemd),可能在业界也引起了不少争议。

而我们苦逼的开发者,可能面临既需要使用高版本的相关组件,又不想升级到centos 7的困境。

那就升级centos 6上的内核与工具吧。

升级内核还算好办,因为内核对编译环境的要求很低。不熟悉内核升级的朋友,可以参考如下博文。

/crazycoder8848/article/details/44131735

但是升级gcc等工具,如果不熟悉情况的话,可能就不顺利了。

公司研发环境上网的不便,centos 6环境下各种高版本rpm软件包的缺失,都会给升级带来麻烦。

本文提供的离线源码升级方法,就非常适合解决上述难题。

这里顺便说明一下,本文的标题虽然带了离线二字,但并不表示本人没有通过Linux主机下载相关文件。

本文为了操作及行文的方便,可能有多处会用wget去下载相关软件包或指示下载行为。

只所以带离线二字,是因为本文提供的方法非常适用于离线操作。

最后,由于本文的升级全部是基于源码编译安装,与具体的包管理系统(如rpm、apt等)无关。

因此,本文的方法应该也适用于其他Linux发行版(如ubuntu等)。

先来看看笔者的Linux主机升级前的情况:

[root@localhost ~]# cat /etc/redhat-release

CentOS release 6.5 (Final)

[root@localhost ~]# uname -a

Linux localhost.localdomain 2.6.32-431.el6.i686

#1 SMP Fri Nov 22 00:26:36 UTC i686 i686 i386 GNU/Linux

[root@localhost ~]# gcc --version

gcc (GCC) 4.4.7 0313 (Red Hat 4.4.7-4)

[root@localhost ~]# autoconf --version

autoconf (GNU Autoconf) 2.63

[root@localhost ~]# automake --version

automake (GNU automake) 1.11.1

gnu binutils包含as、ld、objdump等工具。从下面的输了信息来看,相关工具的版本号,就是binutils的版本号。

[root@localhost ~]# rpm -qa binutils

binutils-2.20.51.0.2-5.36.el6.i686

[root@localhost ~]# as --version

GNU assembler version 2.20.51.0.2-5.36.el6 0205

[root@localhost ~]# ld --version

GNU ld version 2.20.51.0.2-5.36.el6 0205

[root@localhost ~]# objdump -v

GNU objdump version 2.20.51.0.2-5.36.el6 0205

为什么要升级binutils呢?因为我们熟悉的编译工具gcc自己只能将C代码编译为以.s结尾的文本形式的汇编文件。

而.s到.o的过程,则需要由as来完成。而as属于gnu binutils软件包。因此,如果不升级binutils,可能会出现这种情况:

gcc按照新款cpu的特点编译 C代码,生成的.s文件中含有较新的指令,例如avx2指令(新款x86系列cpu的加速指令)。

而老版的as程序却不认识此指令,结果导致编译失败。另外,像objdump反汇编二进制文件时,也同样可能出现某些指令不能识别的问题。

好了,下面看看相关工具的升级过程吧。

先来升级gcc吧。

//创建一个干净的目录,用于下载及升级诸工具

[root@localhost ~]# mkdir tools_update

[root@localhost ~]# cd tools_update/

[root@localhost tools_update]# wget /gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2

[root@localhost tools_update]# wget ftp:///pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2

[root@localhost tools_update]# wget ftp:///pub/gcc/infrastructure/gmp-4.3.2.tar.bz2

[root@localhost tools_update]# wget ftp:///pub/gcc/infrastructure/mpc-1.0.3.tar.gz

//接下来为gcc的编译做些准备。

//注意,我们这里不用自己去编译上面下载的3个库。

//我们参考gcc-4.8.2/contrib/download_prerequisites中的方法,

//让gcc的编译脚本自动帮我们配置并编译这3个库。

//具体步骤如下:

[root@localhost tools_update]# tar -xjf gcc-4.8.2.tar.bz2

[root@localhost tools_update]# cd gcc-4.8.2

[root@localhost gcc-4.8.2]# tar -xjf ../mpfr-2.4.2.tar.bz2

[root@localhost gcc-4.8.2]# ln -sf mpfr-2.4.2 mpfr

[root@localhost gcc-4.8.2]# tar -xjf ../gmp-4.3.2.tar.bz2

[root@localhost gcc-4.8.2]# ln -sf gmp-4.3.2 gmp

[root@localhost gcc-4.8.2]# tar -xzf ../mpc-1.0.3.tar.gz

[root@localhost gcc-4.8.2]# ln -sf mpc-1.0.3 mpc

//好了,现在开始配置gcc了。注意,配置命令中的--prefix=/usr的设置很重要。

//因为这样设置,在后面make install时可以直接覆盖老的gcc,安装后就不用再额外设置其他东西了。

//我们后面其他工具的编译安装,也都采用此设置。这样最简单。

[root@localhost gcc-4.8.2]# ./configure --prefix=/usr --enable-languages=c,c++ --enable--long-long --enable-threads=posix --disable-checking --disable-multilib

//下面开始编译gcc了。注意,这个编译过程超级漫长。

[root@localhost gcc-4.8.2]# make

[root@localhost gcc-4.8.2]# make install

//好了,看看升级结果吧^_^

[root@localhost gcc-4.8.2]# gcc --version

gcc (GCC) 4.8.2

//然后升级binutils,毕竟这和基础的构建功能是强相关的。

[root@localhost tools_update]# wget /gnu/binutils/binutils-2.25.1.tar.bz2

[root@localhost tools_update]# tar -xjf binutils-2.25.1.tar.bz2

[root@localhost tools_update]# cd binutils-2.25.1

[root@localhost binutils-2.25.1]# ./configure --prefix=/usr

[root@localhost binutils-2.25.1]# make

[root@localhost binutils-2.25.1]# make install

//好了,看看结果吧^_^

[root@localhost binutils-2.25.1]# as --version

GNU assembler (GNU Binutils) 2.25.1

[root@localhost binutils-2.25.1]# objdump -v

GNU objdump (GNU Binutils) 2.25.1

[root@localhost binutils-2.25.1]# ld -v

GNU ld (GNU Binutils) 2.25.1

//接下来升级其他工具。注意,请保持顺序与本文一致。否则可能会失败。

[root@localhost automake-1.14.1]# wget /gnu/autoconf/autoconf-2.68.tar.xz

[root@localhost tools_update]# tar -xJf autoconf-2.68.tar.xz

[root@localhost tools_update]# cd autoconf-2.68

[root@localhost autoconf-2.68]# ./configure --prefix=/usr

[root@localhost autoconf-2.68]# make

[root@localhost autoconf-2.68]# make install

[root@localhost tools_update]# wget /gnu/automake/automake-1.14.1.tar.xz

[root@localhost tools_update]# tar -xJf automake-1.14.1.tar.xz

[root@localhost tools_update]# cd automake-1.14.1

[root@localhost automake-1.14.1]# ./configure --prefix=/usr

[root@localhost automake-1.14.1]# make

[root@localhost automake-1.14.1]# make install

//好了,看看结果吧^_^

[root@localhost automake-1.14.1]# autoconf --version

autoconf (GNU Autoconf) 2.68

[root@localhost automake-1.14.1]# automake --version

automake (GNU automake) 1.14.1

不过有时候,版本高了,也会带来额外的麻烦。

像binutils,从2.22版本开始,在链接生成可执行程序时,不会自动的隐式链接所需的库,而是需要明确的指定链接什么库。

结果这导致编译内核时,执行make menuconfig失败。

不过,解决办法是有的。

按照上文介绍的方法,编译安装一个2.21版的binutils即可。

以后想切到哪个版本了,直接进入源码目录执行一下make install即可。

---------------------

作者:孙明保

来源:CSDN

原文:/crazycoder8848/article/details/53843461

CentOS7 离线安装 GCC 9.2.0

gcc离线安装(全部依赖包)_/download/zzhuan_1/10695884

注意!

1、不要随意升级gcc,高版本gcc编译出的程序可能在低版本glibc的机器上不能正常运行。

2、编译安装非常慢,最好直接找对应系统的gcc的rpm包安装最方便。

由于服务器环境无法联网,不能使用yum进行在线安装,需要全程手动,记录下安装过程

一.下载依赖包:

isl-0.18.tar.bz2

mpc-1.0.3.tar.gz

mpfr-3.1.4.tar.bz2

gmp-6.1.0.tar.bz2

4个依赖包可在 /pub/gcc/infrastructure/ 进行下载

二.下载GCC源码包

gcc-9.2.0.tar.gz

可在 http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-9.2.0/ 进行下载

三.解压 gcc-9.2.0.tar.gz

tar -zxvf gcc-9.2.0.tar.bz2

四.(重点)将第一步下载的4个依赖包复制到解压后的 gcc-9.2.0 目录中去,这4个包不需要解压,直接放入

执行 ./contrib/download_prerequisites

联网状态下可以直接跳过第一步,执行这个脚本的时候也会自动从网络下载4个依赖包,咱们这里没有网络,所以将4个依赖包提前放入到gcc的目录中去,脚本会自动找到这4个包,不需要联网。

五.配置、编译、安装

创建一个目标安装目录: mkdir /opt/gcc920

执行配置:./configure --prefix=/opt/gcc920 --disable-checking --enable-languages=c,c++ --disable-multilib

编译:make (编译需要很长时间,建议吃个饭回来)

安装:make install

六.配置环境变量,启用新版本

/etc/profile 在其中的最后添加代码 例如 export PATH="/opt/gcc920/bin:$PATH",然后:source /etc/profile 重新加载。

测试: gcc -v

测试: cc -v

gcc 和 cc要一致,否则编译的时候会有各种错误

如果以前安装过低版本的gcc环境,很有可能gcc和cc不一致,使用which cc 找到cc位置并删除 rm cc (cc实际指向的就是gcc);直接使用命令创建个链接ln -s gcc cc

ln -s /opt/gcc920/bin/gcc /usr/bin/cc

可能遇到的错误:

如果出现configure:error:GNATisrequired to build ada错误

yum -y install gcc-gnat -y

如果出现fatal error:zlib.h:Nosuch fileordirectory错误

yum install zlib-devel -y

如果出现configure:error:C++preprocessor"/lib/cpp"fails sanity check错误

yum install gcc-c++ -y

如果出现makeinfo:commandnotfound错误

yum install texinfo -y

为了避免日后编译软件发生checkingforC compiler…notfound错误,执行:

ln -s /usr/bin/gcc /usr/bin/cc

CentOS 7 安装 gcc 9.2.0 最新版 | 24K PLUS

————————————————

版权声明:本文为CSDN博主「长江量子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:/avwjq/article/details/110821442

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。