【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 - pkgs.org
可以下載后傳到環境安裝,也可以拉到頁面的how to的位置,看它教你如何安裝:
簡單的一句話:
Install Howto
Install python3-docutils rpm package:
# dnf --enablerepo=crb install python3-docutils復雜的,會讓你先下載源和安裝源,然后yum install如果要安裝的包依賴第三方包比較多,則這個方法比較合適。
離線安裝軟件
 原理:
 
操作系統鏡像包含了各種各樣的庫文件,也就是我們安裝軟件時所依賴的,但是我們PC上安裝的linux操作系統只是安裝了默認的和我們選擇的軟件所依賴的庫,其他的并沒有安裝。也就是依賴庫雖然不存在于操作系統上,但是大多數在鏡像中是存在的。
實例
以下是linux 上編譯安裝軟件的方法,既當安裝軟件出現缺少某些庫的時候,就到操作系統鏡像下的Packages文件找對應的庫安裝(網站找的會有各種問題:版本不同,系統不同等)
到網站 http://archive.kernel.org/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
在http://archive.kernel.org/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,然后到http://archive.kernel.org/centos-vault網站,根據自己的系統選擇目錄,找到/os/i386/Packages/ 下的gcc rpm 下載下來,安裝。 (32位是選擇i386 64選擇目錄x86_64)
Redis need tcl 8.5 or newer
 https://blog.csdn.net/luyee2010/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 http://downloads.sourceforge.net/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 2018.05.29
類似文章:超簡單!!centos 6離線源碼編譯安裝升級gcc、binutils、automake、autoconf
centos 6系列的Linux發行版,是非常成功(具足UNIX精神)的發行版,可能大家都已經用得非常習慣了。
 但問題是,其內核及附帶的工具軟件,版本卻都非常老了。
 centos 7上的軟件版本雖然比較新,但centos 7設計風格的突變(主要是引入了很不符合UNIX精神的systemd),可能在業界也引起了不少爭議。
 而我們苦逼的開發者,可能面臨既需要使用高版本的相關組件,又不想升級到centos 7的困境。
 那就升級centos 6上的內核與工具吧。
 升級內核還算好辦,因為內核對編譯環境的要求很低。不熟悉內核升級的朋友,可以參考如下博文。
 http://blog.csdn.net/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 2013 i686 i686 i386 GNU/Linux
 [root@localhost ~]# gcc? --version
 gcc (GCC) 4.4.7 20120313 (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 20100205
 [root@localhost ~]# ld --version
 GNU ld version 2.20.51.0.2-5.36.el6 20100205
 [root@localhost ~]# objdump -v
 GNU objdump version 2.20.51.0.2-5.36.el6 20100205
 為什么要升級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 http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2 ?
 [root@localhost tools_update]# wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2 ?
 [root@localhost tools_update]# wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2 ?
 [root@localhost tools_update]# wget ftp://gcc.gnu.org/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 http://ftp.gnu.org/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 http://ftp.gnu.org/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 http://ftp.gnu.org/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
 原文:https://blog.csdn.net/crazycoder8848/article/details/53843461
 ?
CentOS7 離線安裝 GCC 9.2.0
gcc離線安裝(全部依賴包)_https://download.csdn.net/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個依賴包可在 http://gcc.gnu.org/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:?GNAT?is?required to build ada?錯誤
yum -y install gcc-gnat -y如果出現?fatal error:?zlib.h:?No?such file?or?directory?錯誤
yum install zlib-devel -y如果出現?configure:?error:?C++?preprocessor?"/lib/cpp"?fails sanity check?錯誤
yum install gcc-c++ -y如果出現?makeinfo:?command?not?found?錯誤
yum install texinfo -y為了避免日后編譯軟件發生?checking?for?C compiler?…?not?found?錯誤,執行:
ln -s /usr/bin/gcc /usr/bin/ccCentOS 7 安裝 gcc 9.2.0 最新版 | 24K PLUS
?
 ————————————————
 版權聲明:本文為CSDN博主「長江量子」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
 原文鏈接:https://blog.csdn.net/avwjq/article/details/110821442
總結
以上是生活随笔為你收集整理的【linux】Rehat/centOS 离线安装软件(如gcc)的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java 打印异常内容_java自定义异
- 下一篇: iOS中修改状态栏颜色
