材料准備:
CentOS 7 x86_64
IDL 8.2,下載自 ftp://ftp.lowell.edu/incoming/temp/old/IDL_Clients/v8.2/idl82sp2linux.x86_64.tar.gz
參考資料:
安裝步驟:
1、下載IDL
mkdir ~/Downloads/IDL cd ~/Downloads/IDL wget ftp://ftp.lowell.edu/incoming/temp/old/IDL_Clients/v8.2/idl82sp2linux.x86_64.tar.gz
2、找到相應的license破解文件
2.0 license文件
在網上找到一個破解文件,內容如下,並將其保存為 license.dat 文件。
############ license file comments, do not delete ############### # License Number(s):705016 SERVER xxx bc305bd94286 1700 USE_SERVER DAEMON idl_lmgrd INCREMENT idl idl_lmgrd 8.200 1-jan-0000 12 B5ED924F5F29E2AF VENDOR_STRING=705016TOHOKU ck=186 SIGN="0B28 D32E 6E90 74D9 A0BB F2ED AC90 F39D 318D F197 26FB B996 C8C4 B225 76C8 009A 52FD AB87 3FE1 06B9 1AA9 FD57 A46E 94A8 3764 9F97 D1F8 2653 D36D 7018" INCREMENT idl_bridge_assist idl_lmgrd 8.200 1-jan-0000 2 F2004C85D332BFF5 VENDOR_STRING=705016TOHOKU ck=105 SIGN="08BA CD27 8E25 5309 ED01 983C 59C6 183A EE24 A464 706F F499 3607 416A 0CE1 16D8 425F CC40 3C90 8BAB 9E1E ECFB D9C5 C9E4 3517 1D7E 1B8F 296C 3DC3 1AEB" INCREMENT idl_video_write idl_lmgrd 8.200 1-jan-0000 2 F0A17234C4CCC039 VENDOR_STRING=705016TOHOKU ck=92 SIGN="08A2 A99F F7DB 7C58 9AF8 B52F D70F 3B6E F686 DE0F FDB7 CE79 BD82 3494 500F 0A12 5C97 8375 0AE0 E848 0B20 69CA AFA2 DE8D AC10 8173 DBFC B93E 574A DBB4" INCREMENT idl_wavelet idl_lmgrd 8.200 1-jan-0000 2 20B1118017C42245 VENDOR_STRING=705016TOHOKU ck=41 SIGN="0DBC 606C 1E2D 3FD8 19FD 61DE F909 3BCD E7E4 5314 30BA 60CC 015D 0BD0 100D 1E33 CC5A 96F0 64C0 9B08 D033 E075 1DBA DE77 AE90 08A8 8AB7 C4C3 0037 C672" FEATURESET idl_lmgrd D093522208F1C61A ##################### end of license file #######################
破解文件的 SERVER xxx bc305bd94286 1700 一行,提供了許可文件適用的用戶名和Mac地址。
其中,紅色字段(xxx)是主機名,需要將它替換為本機的主機名,它是bash命令hostname的返回值。
藍色字段(bc305bd94286)是MAC地址,需要在本機上生成一個與它一致的MAC地址,可以采用參考資料[3]中的方法生成虛擬MAC地址,具體操作如下。
2.1 獲取xxx
2.2 修改本機的MAC地址 (摘自資料[3])
新建一個虛擬網格eth1,要不然有的網絡環境可能會導致您的計算機出現無法上網的情況,這需要安裝tunctl工具。
2.2.1 確認內核是否支持tun/tap
確認內核是否有tun模塊
[...] $ modinfo tun
filename: /lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/net/tun.ko.xz
alias: devname:net/tun
alias: char-major-10-200
license: GPL
author: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
description: Universal TUN/TAP device driver
retpoline: Y
rhelversion: 7.6
srcversion: A215175F959FA6FE8B76ECD
depends:
intree: Y
vermagic: 3.10.0-957.el7.x86_64 SMP mod_unload modversions
signer: CentOS Linux kernel signing key
sig_key: B7:0D:CF:0D:F2:D9:B7:F2:91:59:24:82:49:FD:6F:E8:7B:78:14:27
sig_hashalgo: sha256
加載內核模塊
[...] $ modprobe tun
[...] $ lsmod | grep tun
tun 27141 2
執行以上命令后,出現如上輸出,說明模塊加載成功。
2.2.2 創建和配置虛擬網卡
確認是否有tunctl命令,如果沒有則安裝它。
可直接裝rpm包(參考的https://pkgs.org/centos-7/nux-misc-x86_64/tunctl-1.5-12.el7.nux.x86_64.rpm.html)
下載rpm源碼,解壓,並復制到相應的IDL安裝目錄內:
[xxx@del idl]$ wget http://li.nux.ro/download/nux/misc/el7/x86_64/tunctl-1.5-12.el7.nux.x86_64.rpm [xxx@del idl]$ sudo rpm -ivh ./tunctl-1.5-12.el7.nux.x86_64.rpm
注意,虛擬網卡的MAC地址,要與步驟2.0中的license文件中的藍色字段(bc305bd94286)保持一致,即:
[xxx@del idl]$ tunctl -t eth1 -u root [xxx@del idl]$ sudo ifconfig eth1 hw ether bc:30:5b:d9:42:86 [xxx@del idl]$ ifconfig -a #查看你的虛擬網卡eth1的MAC地址是否已修改成功。
... eth1: flags=4098<BROADCAST,MULTICAST> mtu 1500 ether bc:30:5b:d9:42:86 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ...
(注:下載的license文件,有可能不能使用,這就需要在安裝完IDL文件,重復2.0這一步,具體可參考后文中 Bug.2 一小節的內容)
至此,IDL安裝前的准備工作,就做好了。接下來,開始IDL的安裝過程。
3. 安裝IDL
mkdir /opt/idl cp ./idl82sp2linux.x86_64.tar.gz /opt/idl sudo tar -xopf idl82sp2linux.x86_64.tar.gz sudo ./install.sh
安裝過程,根據提示,有一個是要輸入安裝的目標路徑,其余皆是yes/no的選項,一般yes即可。
在彈出的license對話框中,首先選擇第三項Install a license you have received,點Next
然后找到並選中之前更改並保存過的license.dat,點OK
然后同時選擇Install license manager以及Start license manager,點Next(這一步默認兩者都是選種的狀態,小方框凹進去,所以到這一步直接點Next)
再點擊Finish,結束
4. 開機自動執行
以上操作,在重啟或者斷網之后,都會失效,需要重新進行license的相關操作才行。
將虛擬網卡的設置寫入開機腳本,這樣重啟之后就不用重新進行license的相關操作就能使用idl了。
[xxx@del bin]$ sudo vi /etc/rc.local
在 /etc/rc.local 中,將以下代碼加到 exit 0 (可能沒有 "exit 0" 這一句)的前面,然后保存:
#create a vitual network card for activation of idl8.2 ifconfig eth1 down
tunctl -t eth1 -u root ifconfig eth1 hw ether bc:30:5b:d9:42:86 ifconfig eth1 up
要讓這個文件開機自動執行,還需要增加可執行權限: chmod +x /etc/rc.d/rc.local
同時,系統的 license 文件變量,也需要在~/.bashrc文件中同步更新,將idl的license文件一並添加到系統變量($LM_LICENSE_FILE)里:
[xxx@del bin]$ echo $LM_LICENSE_FILE # 查詢已有的 license 文件列表 /opt/pgi/license.dat [xxx@del bin]$ vi ~/.bashrc # 在文件內的 LM_LICENSE_FILE 字段,增加 IDL 的 license 文件(紅色字段,就是新增的IDL的license文件) ...
export LM_LICENSE_FILE=$PGI/license.dat:/opt/idl/license/license.dat
... [xxx@del bin]$ echo $LM_LICENSE_FILE # 再次查詢 license 文件列表,看是否更新成功 /opt/pgi/license.dat:/opt/idl/license/license.dat
之后,執行 source ~/.bashrc ,使 ~/.bashrc 中所作的修改立即生效。
Bug:可能遇到的各種問題
Bug.1:找不到libXp.so.6動態鏈接庫
在終端下輸入 idl 並回車,很可能會出現如下錯誤信息:
… /opt/idl/idl82/bin/bin.linux.x86_64/: libXp.so.6: cannot open shared object file: No such file or directory
該信息是因為沒有安裝64位的libXp.so.6動態鏈接庫。
解決辦法是,到這里下載libXp-1.0.3-4.fc30.x86_64.rpm文件,然后雙擊打開,把里面的libXp.so.6和libXp.so.6.2.0拷貝出來,直接放到IDL的安裝目錄/opt/idl/idl82/bin/下面,命令如下:
wget https://rpmfind.net/linux/fedora/linux/releases/30/Everything/x86_64/os/Packages/l/libXp-1.0.3-4.fc30.x86_64.rpm rpm2cpio libXp-1.0.3-4.fc30.x86_64.rpm | cpio -idv # 解壓rpm文件 sudo cp /mnt/Disk2T/L/software/LINUX/libXp/usr/lib64/libXp.so.6 /opt/idl/idl82/bin/bin.linux.x86_64/ sudo cp /mnt/Disk2T/L/software/LINUX/libXp/usr/lib64/libXp.so.6.2.0 /opt/idl/idl82/bin/bin.linux.x86_64/
再次運行 idl,則不會出現上述錯誤信息。
Bug.2:license文件沒有生效
如果選擇的license文件不可用,則打開 idl 的時候,會出現如下信息:
[xxx@del bin]$ idl
IDL Version 8.2.2 (linux x86_64 m64). (c) 2012, Exelis Visual Information Solutions, Inc.
% LICENSE MANAGER: No such feature exists.
Feature: idl
License path: /opt/pgi/license.dat:/opt/idl/license/license.dat:/opt/idl/license/*.lic:
FLEXnet Licensing error:-5,357 For further information, refer to the FLEXnet Licensing documentation, available at "www.acresso.com".. License file: /opt/pgi/license.dat:/opt/idl/license/license.dat:/opt/idl/license/*.lic % Entering timed demo mode. Each session is limited to 7 minutes of operation. Printing and file saving are disabled. To learn more about our license options for this product, please contact your account manager or Exelis Visual Information Solutions, Inc. at info@exelisvis.com. IDL> exit
出現這個問題的原因是,license文件已經失效,需要重新尋找新的可用的license文件。
解決辦法是,繼續搜索可用的license文件,重復步驟 2.0,然后在 idl 的安裝目錄下,使用 exelislicense 程序手動安裝license。
[xxx@del bin]$ vi license.dat
[xxx@del bin]$ cd /opt/idl/idl82/bin
[xxx@del bin]$ sudo ./exelislicense IDL Version 8.2.2 (linux x86_64 m64). (c) 2012, Exelis Visual Information Solutions, Inc. % Embedded IDL: ITTVIS IDL floating licenses, 99999-1. % Embedded IDL: ITTVIS IDL floating licenses, 99999-1. % Loaded DLM: XML. % Loaded DLM: URL.
[xxx@del bin]$ idl IDL Version 8.2.2 (linux x86_64 m64). (c) 2012, Exelis Visual Information Solutions, Inc. Installation number: 705016. Licensed for use by: TOHOKU IDL> exit
執行 exelislicense 程序,會彈出對話框,操作步驟如下:
(1)選擇第三項Install a license you have received (小方框凹下表示選中),點Next;
(2)找到並選中用於激活的license.dat,點OK;
(3)同時選擇Install license manager以及Start license manager,點Next(這一步,兩者都默認已選中,所以到這一步直接點Next);
(4)點擊Finish,結束。
Bug.3: TCP 端口1700,被占用
在執行 /opt/idl/idl82/bin/lmgrd 程序時,有時會遇到 “The TCP port number in the license, 1700, is already in use.”的報錯。
解決辦法:
(1)查看端口1700的進程 ,終端輸入: lsof -i:1700
(2)殺死進程: kill pid
(3)查看包含lmgrd的進程: ps -aux|grep lmgrd