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

1、Linux離線安裝GCC編譯環境php

安裝以前要查看離線環境的Linux版本,由於下載文檔須要Linux的版本對應html

1 uname -a顯示所有信息

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

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

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

下載GCC全部須要的依賴包,逐個安裝,從第三方開源軟件管理庫能夠下載到:github

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

http://www.rpmfind.net/linux/rpm2html/search.php數據庫

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

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命令能夠檢驗,若是版本號提示正確,那麼安裝成功。centos

二、 掛載光盤鏡像進行安裝(方法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命令能夠檢驗,若是版本號提示正確,那麼安裝成功。

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

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

http://www.javashuo.com/article/p-hfaialbp-nv.html

不然就要根據rpm二進制包進行GCC安裝,可是要解決的lib包依賴問題很是複雜:

四、 問題:

根目錄下的/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

 

2、安裝Pyhive包

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

一、 安裝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

二、 安裝thrift、thrift-sasl

採用pip/conda下載離線安裝包的方式,將離線安裝包傳到離線環境,經過pip/conda命令進行安裝,直接經過二進制文件進行安裝能夠解決離線環境編譯缺乏各類開發用的庫等問題,自己生產環境不適合作開發環境

三、 安裝Pyhive包

採用pip/conda方式安裝pyhive包

而後按照教程裏面的代碼進行測試便可,教程地址以下:

https://github.com/dropbox/PyHive

四、 瞭解hive的配置及工做機制

Hive至關於hdfs分佈式系統,只是一個不一樣於普通的sql的查詢工具hql,指令都是同樣的,因此採用hive查詢數據庫,在python裏面只須要進行操做就好了,須要有數據庫地址

http://www.javashuo.com/article/p-eksivokj-bd.html

 

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

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

儘可能少的採用源碼編譯的形式進行安裝,很是容易出問題,由於生產環境和開發環境不同,庫的差別性很是大,因此編譯起來問題比較多,建議在本地採用一樣的配置(通常採用conda進行管理便可)將源碼包進行編譯,生成二進制文件,再上傳到服務器進行安裝:

一、經過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 上進行安裝,這樣八成裝不上

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

二、 download 命令會查看wheel緩存,而後再去PyPI下載庫,但download命令下載的包不會進入wheel緩存,download 的優勢是能夠下載源碼包

三、 須要注意,使用wheel 方式安裝可能會報錯,由於有些包是源碼包,不能被打包成wheel 格式

四、 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包就安裝完了

二、經過conda安裝

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

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

 

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

 

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

其中path爲放包的地方,最好放到conda默認的目錄裏面,由於conda即便在線安裝依賴也是會先去搜尋離線緩存,而後纔會去在線查找

 

安裝完成之後去調用就能夠了。

相關文章
相關標籤/搜索