Linux離線環境安裝Pyhive包及通用方式


一、Linux離線安裝GCC編譯環境

安裝之前要查看離線環境的Linux版本,因為下載文檔需要Linux的版本對應

1 uname -a顯示全部信息

顯示版本號,該機版本為centos 6.6,屬於6系的Linux系統

1、 手動對RPM包進行安裝(方法1)

RPM是Red-Hat Package Manager(RPM軟件包管理器)的縮寫,其原始設計理念是開放式的,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有采用,可以算是公認的行業標准了。

下載GCC所有需要的依賴包,逐個安裝,從第三方開源軟件管理庫可以下載到:

https://pkgs.org/(推薦包搜索)

http://www.rpmfind.net/linux/rpm2html/search.php

根據安裝順序下載所需的包,並且按照順序進行安裝。

1 Rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm             #ppl(libppl.so.7、libppl_c.so.2)
2 rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm       #cloog-ppl
3 rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm              #libmpcfr.so.1
4 rpm -ivh cpp-4.4.7-17.el6.x86_64.rpm              #cpp
5 rpm -ivh kernel-headers-2.6.32-642.el6.x86_64.rpm      #kernel-headers
6 rpm -ivh glibc-headers-2.12-1.192.el6.x86_64.rpm       #glibc-headers
7 rpm -ivh glibc-devel-2.12-1.192.el6.x86_64.rpm         #glibc-devel
8 rpm -ivhlibgomp-4.4.7-17.el6.x86_64.rpm             #libgomp(libgomp、libgomp.so.1)
9 rpm -ivh gcc-4.4.7-17.el6.x86_64.rpm                #gcc

至此安裝成功,用gcc -v命令可以檢驗,如果版本號提示正確,那么安裝成功。

2、 掛載光盤鏡像進行安裝(方法2)

將centos的鏡像進行掛載,不過需要centos的yum方法支持,此種方法不需要考慮包和動態庫之間的依賴,yum包管理器會自動分析本機的依賴。(依賴是一個難度不大,但是非常瑣碎的事情)

 1 #設置光驅掛載點 
 2 mkdir -p /Application/cdrom 
 3 #掛載光驅 
 4 mount /dev/cdrom /Application/cdrom  這個是掛載后文件地址,你也可以自己選着路徑
 5 #備份原yum源 
 6 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
 7 #把光驅設為yum源 
 8 echo "[base]" > /etc/yum.repos.d/CentOS-Base.repo 
 9 echo "name=CentOS-$releasever - Base" >> /etc/yum.repos.d/CentOS-Base.repo 
10 echo "baseurl=file:///Application/cdrom/" >> /etc/yum.repos.d/CentOS-Base.repo 
11 echo "gpgcheck=0" >> /etc/yum.repos.d/CentOS-Base.repo 
12 #安裝GCC 
13 yum install gcc -y 
14 #恢復原yum源 
15 cp –f /etc/yum.repos.d/CentOS-Base.repo.bak /etc/yum.repos.d/CentOS-Base.repo

至此安裝成功,用gcc -v命令可以檢驗,如果版本號提示正確,那么安裝成功。

3、 離線更新或者替換GCC版本

編譯GCC源碼進行安裝,必須已經安裝了可用的GCC,主要用於更新GCC版本

https://www.cnblogs.com/dybk/p/8085685.html

否則就要根據rpm二進制包進行GCC安裝,但是要解決的lib包依賴問題非常復雜:

4、 問題:

根目錄下的/lib64缺少libc-2.12.so文件解決方案,預加載庫然后解決動態連接問題

https://blog.csdn.net/quantum7/article/details/80064002

如果你是在root用戶下進行的操作,那么你是幸運的,畢竟/lib(lib64)下的屬組屬主都是root,所以盡管libc.so.6丟失,mv、cp、ln等命令都還是可以正常使用的,普通用戶誤操作libc.so.6的解決辦法如下,只能通過系統急救盤來進行

https://blog.csdn.net/Scirhh/article/details/84937858

 

二、安裝Pyhive包

Pyhive依賴:sasl,thrift,thrift-sasl, PyHive

1、 安裝Pyhive依賴-sasl

第一種方法:

通過GCC編譯python源文件進行安裝,python源代碼官方地址:https://pypi.org/

很多python的包是有編譯好的文件,但是sasl包並沒有,必須根據具體環境進行編譯

GCC安裝好以后,進入sasl源碼包,用python setup.py install指令安裝sasl源碼包文件。

第二種方法:

通過conda/pip進行離線安裝sasl包,在本地通過conda配置好相同的環境版本,通過本文中介紹的離線安裝方法安裝sasl包

 

問題:

在源代碼編譯的過程中,可能會出現sasl.h頭文件丟失問題,原因是sasl的源碼已經許久沒有維護了,代碼結構與現有的代碼結構不一樣,采用新版工具包,安裝cyrus-sasl包解決,官方地址為國外地址,並不可用,所以用第三方地址,下載並且按照官網提示的安裝方法進行編譯安裝即可,源碼見官網地址:

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/cyrus-sasl.html

按照官方網站的編譯流程安裝完該組件以后,就可以進行Pyhive的安裝了

如果還存在sasl.h頭文件問題,可以通過pip離線安裝libsasl2-dev包

可以參考以下文檔:

https://blog.csdn.net/wulantian/article/details/74330590

2、 安裝thrift、thrift-sasl

采用pip/conda下載離線安裝包的方式,將離線安裝包傳到離線環境,通過pip/conda命令進行安裝,直接通過二進制文件進行安裝可以解決離線環境編譯缺少各種開發用的庫等問題,本身生產環境不適合做開發環境

3、 安裝Pyhive包

采用pip/conda方式安裝pyhive包

然后按照教程里面的代碼進行測試即可,教程地址如下:

https://github.com/dropbox/PyHive

4、 了解hive的配置及工作機制

Hive相當於hdfs分布式系統,只是一個不同於普通的sql的查詢工具hql,指令都是一樣的,所以采用hive查詢數據庫,在python里面只需要進行操作就行了,需要有數據庫地址

https://www.cnblogs.com/dxxblog/p/8193967.html

 

二、離線安裝包的幾種方式

python包離線安裝的幾種方法(經過摸索,推薦用這個方法解決離線環境的依賴問題)

盡量少的采用源碼編譯的形式進行安裝,非常容易出問題,因為生產環境和開發環境不一樣,庫的差異性非常大,所以編譯起來問題比較多,建議在本地采用同樣的配置(一般采用conda進行管理即可)將源碼包進行編譯,生成二進制文件,再上傳到服務器進行安裝:

1、通過pip安裝

通過pip進行離線安裝,此方法可以直接分析依賴下載wheel,比較方便,需要本地環境與服務器環境相同

第一種方法:

通過批量安裝依賴,首先,在項目中分析出所有依賴的庫

1 pip freeze > requirements.txt
2 將所有包下載到DIR這個目錄中
3 pip download -d DIR -r requirements.txt
4 pip wheel -w DIR -r requirements.txt

問題:

切記,不要在 windows 下載包,然后放到 Linux 上進行安裝,這樣八成裝不上

1、 這兩條命令的區別在於wheel 方式下載會將下載的包放入wheel 緩存,但缺點是wheel 不可以下載源碼包

2、 download 命令會查看wheel緩存,然后再去PyPI下載庫,但download命令下載的包不會進入wheel緩存,download 的優點是可以下載源碼包

3、 需要注意,使用wheel 方式安裝可能會報錯,因為有些包是源碼包,不能被打包成wheel 格式

4、 download 方法下載的包,不會對依賴性進行檢查,這意味着,如果下載 Flask-PyMongo 這個包,只會下載該包,而不會下載 pymongo,經試驗發現,download 適合補充wheel不可下載的包,兩者搭配使用,才能將requirements文件的庫完整的下載。

將下載的wheel文件和requirement.txt文件放到離線環境中用教程中的命令進行安裝

pip install --no-index --find-links=DIR -r requirements.txt

到此包就安裝好了。

第二種方法:

如果在批量安裝過程中,發現離線環境某些包缺少依賴,是因為在到處本地requirements.txt的時候只是導出了新裝的依賴名稱,可能最基本的依賴兩個環境不一樣,這時候就要單個依賴進行下載,然后到離線環境進行安裝,單個文件的下載安裝方式跟批量下載一樣。

先根據包名稱下載

1 pip wheel -w DIR pandas(包名稱)

然后通過pip指令安裝

1 pip install path/pandas(下載包的位置)

到此單個pip包就安裝完了

2、通過conda安裝

通過conda安裝的方法與pip進行安裝的方法比較類似,conda安裝包的時候都會將包下載到緩存,默認的緩存地址是anaconda/pkgs/下面的tar.bz2格式的包

首先要在本地安裝好所需的包,所需的包自動會存在緩存位置

 

然后到緩存位置找到所需的包,將需要的依賴包拷貝轉移到離線環境中,隨便放在哪個位置都行,最好是拷貝到離線環境的相同conda的緩存位置

 

再運行:conda install --use-local path/file.gz(如果將包放在了相同位置,直接conda install XX就行,因為conda install 命令最默認搜索緩存位置,並分析依賴進行安裝,此種方式比較高效)

其中path為放包的地方,最好放到conda默認的目錄里面,因為conda即使在線安裝依賴也是會先去搜尋離線緩存,然后才會去在線查找

 

安裝完成以后去調用就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM