標籤:
這篇博文記錄了我用CentOS 7搭建地震學科研環境的過程,供我個人在未來重裝系統時參考。對於其他地震學科研人員,也許有借鑒意義。
閱讀須知:
- 本文適用於個人電腦,不適用於伺服器;
- 不推薦剛接觸Linux的人使用CentOS發行版;
- 本文盡量寫的淺顯易懂,但要求讀者掌握Linux基礎知識;
- 本文所有操作均在CentOS 7下完成,其他發行版或多或少與CentOS 7不同,因而僅供參考;
- 本文所安裝的軟體純粹出於個人習慣及喜好,讀者應自己判斷,按需安裝;
安裝CentOS
CentOS 7的安裝與其他Linux發行版的安裝差不多,個別地方稍有不同。
準備工作
- 準備材料
- 隨身碟:容量700M以上,用於製作隨身碟啟動盤,因為在製作啟動盤時會格式化隨身碟,所以隨身碟內不要包含重要資料
- CentOS 7.0 LiveCD ISO鏡像檔案
- Universal USB installer:Windows下的隨身碟啟動盤製作工具
- 一個已安裝Windows的電腦:用於製作隨身碟啟動盤
- 運行Universal USB installer並製作隨身碟啟動盤
- 將隨身碟插入電腦,重啟,進入BIOS選擇從隨身碟啟動,即可進入CentOS的LiveCD
- 進入LiveCD後,點擊案頭的“Install to Hard Drive”即可安裝
註:Linux下可以通過dd命令製作啟動盤,但由於對原理不夠瞭解,偶爾會導致製作失敗,或製作成功後隨身碟容量有問題,還是用Windows下的Universal USB installer比較靠譜。
安裝過程
- 選擇安裝過程中使用的語言:用預設的英文即可
- 選擇地區和城市:Asia和Shanghai
- 鍵盤使用English(US)而不是English(UK)
- Hostname可以改也可以不改,我用saturn.geolab
- 安裝的目的地,選擇要使用的硬碟,在“Other Storage Options”處選擇“I will configure partioning”,即手動分區
分區
CentOS 7的分區似乎比較特別,自認為經驗很豐富的我在第一次安裝CentOS7時還是在分區上耽誤了很多時間。後來找到比較合適的分區方法,如下:
- 點擊“Click here to create them automatically”,即讓安裝程式幫忙分區
- 預設的資料分割配置是使用LVM,其好處在於“當機器有多塊硬碟時,在使用的時候看上去只有一塊”
- 預設的檔案系統為XFS而不是以前常用的EXT4;
- 自動分區完成後,再根據自己的需求,手動修改分區細節
- /boot:CentOS自動分配,一定不要亂改;
- /:根目錄,理論上15G就夠了,不過現在硬碟不值錢,多分一些以防萬一;
- swap:與實體記憶體大小一致即可
- /opt:個人習慣是將第三方軟體都安裝在/opt下,所以分了70G
- /home:餘下的全部空間
- 點擊“Begin to Install”開始安裝
真正的安裝
- 設定root密碼
- 建立一般使用者
- 等待安裝完成
- 安裝完成,重啟
- 重啟後,同意License即可
對系統的若干修改若干原則
為了搭建一個穩定的系統,盡量避免因為各種瞎折騰而導致的系統問題,特訂立了一些軟體安裝的原則。具體參見《CentOS 7下的軟體安裝方法與策略》。
給一般帳號root許可權
預設情況下,一般帳號是沒有root許可權的。為什麼不直接用root帳號,而是要給一般帳號root許可權呢?
- 日常工作中使用root帳號,是非常糟糕且危險的習慣!無論是伺服器還是個人電腦都是如此。
- 安裝軟體時需要root許可權,只能su切換到root賬戶再安裝。對於習慣使用sudo的人來說,還是有些麻煩。
假設賬戶名為seisman,要授予他root許可權,則要修改設定檔/etc/sudoers
$ su# echo ‘seisman ALL=(ALL) ALL‘ >> /etc/sudoers # 向設定檔中加入語句# tail -1 /etc/sudoers # 檢查一下是否正確seisman ALL=(ALL) ALL
其中seisman為目前使用者名。
添加第三方源
CentOS由於很追求穩定性,所以官方源中內建的軟體不多,因而需要一些第三方源,比如EPEL、ATrpms、ELRepo、 Nux Dextop、RepoForge等。根據上面提到的軟體安裝原則,為了儘可能保證系統的穩定性,此處大型第三方源只添加EPEL源和 ELRepo源。
EPEL
EPEL即Extra Packages for Enterprise Linux,為CentOS提供了額外的10000多個軟體包,而且在不替換系統組件方面下了很多功夫,因而可以放心使用。
1 |
sudo yum install epel-release |
執行完該命令後,在/etc/yum.repos.d目錄下會多一個epel.repo檔案。
ELRepo
ELRepo包含了一些硬體相關的驅動程式,比如顯卡、音效卡驅動。
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgsudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
完成該命令後,在/etc/yum.repos.d目錄下會多一個elrepo.repo檔案。
安裝yum-axelget
yum-axelget是EPEL提供的一個yum外掛程式。使用該外掛程式後用yum安裝軟體時可以並行下載,大大提高了軟體的下載速度,減少了下載的等待時間:
sudo yum install yum-axelget
安裝該外掛程式的同時會安裝另一個軟體axel。axel是一個並行下載工具,在下載http、ftp等簡單協議的檔案時非常好用。
第一次全面更新
在進一步操作之前,先把已經安裝的軟體包都升級到最新版:
sudo yum update
要更新的軟體包有些多,可能需要一段時間。不過有了yum-axelget外掛程式,速度已經快了很多啦。
重啟
此處建議重啟。
刪除多餘的kernel
在前面的yum update執行之後,可能會將kernel也一起更新,則在啟動CentOS時啟動項中會有很多項。
確認當前使用的kernel版本號碼:
$ uname -r3.10.0-123.9.3.el7.x86_64
尋找當前系統安裝的所有kernel:
$ rpm -qa | grep kernelkernel-3.10.0-123.8.1.el7.x86_64kernel-3.10.0-123.9.3.el7.x86_64kernel-devel-3.10.0-123.9.2.el7.x86_64kernel-tools-3.10.0-123.9.3.el7.x86_64kernel-headers-3.10.0-123.9.3.el7.x86_64kernel-3.10.0-123.9.2.el7.x86_64kernel-tools-libs-3.10.0-123.9.3.el7.x86_64kernel-devel-3.10.0-123.8.1.el7.x86_64kernel-devel-3.10.0-123.9.3.el7.x86_64
可以看出有三個版本的kernel,123.8.1、123.9.2和123.9.3。除了最新的kernel外,建議多保留一箇舊kernel,以免新kernel出現問題時可以通過舊kernel進入系統。因而此處刪除123.8.1版本的kernel:
sudo yum remove kernel-3.10.0-123.8.1.el7.x86_64sudo yum remove kernel-devel-3.10.0-123.8.1.el7.x86_64
基礎開發環境GCC系列
sudo yum install gcc # C編譯器sudo yum install gcc-c++ # C++編譯器sudo yum install gcc-gfortran # Fortran編譯器sudo yum install compat-gcc-44 # 相容gcc 4.4sudo yum install compat-gcc-44-c++ # 相容gcc-c++ 4.4sudo yum install compat-gcc-44-gfortran # 相容gcc-fortran 4.4sudo yum install compat-libf2c-34 # g77 3.4.x相容庫
軟體開發協助工具輔助
sudo yum install makesudo yum install gdb # 代碼調試器sudo yum install cmake # Cmakesudo yum install git # 版本控制
驅動程式顯卡驅動
Linux預設只使用開源的顯卡驅動,就目前的情況來看,開源驅動的效果還是不錯的,但跟官方的閉源驅動相比還是有一定差距。最明顯的區別是,在使用SAC的ppk功能放大波形時,使用開源驅動會出現延遲,而使用官方閉源則整個過程非常順暢。
安裝顯卡檢測程式:
sudo yum install nvidia-detect
檢測顯卡型號以及對應的驅動:
$ nvidia-detectProbing for supported NVIDIA devices...[10de:06dd] NVIDIA Corporation GF100GL [Quadro 4000]This device requires the current 340.58 NVIDIA driver kmod-nvidia
此處提示需要安裝340.58版的顯卡驅動。安裝顯卡驅動:
sudo yum install nvidia-x11-drv nvidia-x11-drv-32bitsudo yum remove xorg-x11-glamor
重啟。
NTFS驅動
CentOS下預設無法掛載NTFS格式的硬碟。需安裝nfts-3g即可實現隨插即用:
sudo yum install ntfs-3g
進階開發環境Java環境
Java的一大特色在於跨平台,只有安裝了Java運行環境,即可運行Java程式:
sudo yum install java # java運行環境
Clang系列
Clang可以認為是GCC的替代品,可以用於編譯C、C++、Objective-C和Objective-C++。其提供了更友好的報錯資訊,在有些方面比GCC更友好,同時其提供了一個代碼靜態分析器,可以用於分析代碼中可能出現的bug和記憶體溢出問題。
sudo yum install clang # clang編譯器sudo yum install clang-analyzer # clang靜態分析器
Intel系列
Intel的大部分軟體都是非開源且收費的,但同時部分軟體也提供了Linux下的非商業免費版。比如icc、ifort、mkl數學庫以及代碼效能分析工具等。
Intel軟體的申請以及安裝參考《Intel非商業免費開發工具》。
還有一點需要注意的是,Intel也提供了並行相關的幾個命令,比如mpicc、mpirun。所以openmpi、mpich和intel三者,在並行時只能用其中一個。
並行計算
並行可以用openmpi,也可以用mpich,二者應該是並列的。但是由於二者提供了幾乎一樣的命令,所以二者可以同時安裝,但是不可以同時處於使用狀態。
openmpi
安裝openmpi:
sudo yum install openmpi openmpi-devel
安裝後,二進位檔案位於/usr/lib64/openmpi/bin下,動態庫檔案位於/usr/lib64/openmpi/lib下,因而實際使用的話還需要額外的配置,在.bashrc中加入如下語句:
export PATH=/usr/lib64/openmpi/bin/:${PATH}module load mpi/openmpi-x86_64
mpich
安裝mpich:
sudo yum install mpich mpich-devel
安裝後,二進位檔案位於/usr/lib64/mpich/bin下,動態庫檔案位於/usr/lib64/mpich/lib下,因而實際使用的話還需要額外的配置,在.bashrc中加入如下語句:
export PATH=/usr/lib64/mpich/bin/:${PATH}module load mpi/mpich-x86_64
指令碼語言環境Perl
CentOS 7.0內建了Perl 5.16.3(2013年03月11日發布),目前的最新版本為5.20.1(2014年09月14日發布)。
系統內建Perl
系統內建Perl,就目前來看,版本不算老,基本夠用。官方源和EPEL源中提供了1000多個模組,可以直接用yum安裝:
sudo yum install perl-Parallel-ForkManager # 並行模組
若源中沒有已打包好的模組,也可以使用perl內建的cpan來安裝模組。
優先順序:yum > cpan。
plenv管理新版本
若需要使用最新版本的perl,可以使用plenv安裝新版本的perl,並使用plenv提供的cpanm命令安裝模組:
cpanm install Parallel::ForkManager # 並行模組
Python
CentOS 7.0內建Python 2.7.5,目前Python 2的最新版本為2.7.8,Python 3的最新版本為3.4.2。
系統內建Python
系統內建的Python 2.7.5,基本已經夠用,Python 2常用的模組在官方源或EPEL源中也有有編譯好的包,因而直接通過yum安裝即可:
sudo yum install python-matplotlib # 2D繪圖庫sudo yum install PyQt4 # Qt4的Python綁定sudo yum install numpy # 數組操作庫sudo yum install scipy # 科學計算庫sudo yum install python-requests # 網頁請求sudo yum install python-docopt # 命令列參數分析器sudo yum install gdal-python # gdal的Python綁定
pyenv管理Python3
Python2與Python3之間是不完全相容的,而我以Python3為主,所以需要安裝一個Python3。
首先,安裝pyenv來管理多個Python版本,然後利用pyenv安裝anaconda3(即Python 3.4)。anaconda內建了眾多科學計算所需的包,免去了安裝的麻煩,對於其他包,則可以利用Python內建的pip安裝:
pip install requestspip install docopt
日常軟體Office套件LibreOffice
大多數Linux發行版都內建LibreOffice:
sudo yum install libreoffice
LibreOffice與Microsoft Office的相容性不太好,操作介面與MS Office也有較大差異,讓人不太習慣。
WPS Office
若在Linux下對於文檔處理有更高一些的要求,可以嘗試目前還處於測試版的WPS Office for Linux。WPS Office的相容性以及介面都比LibreOffice要好很多,值得期待,當然還是不能做到完全相容MS Office。
安裝過程參考CentOS下安裝WPS Office一文。
TeXLive 2014
系統是內建了TeXLive,版本較老,還是安裝最新版比較好。
根據Linux下安裝TeXLive一文,從ISO檔案中安裝TeXLive。
安裝完成後,更新所有模組:
tlmgr update --all
Mendeley
Mendeley是一個跨平台的文獻管理軟體,其內部內建了一個可以添加註釋的PDF閱讀器。
下載Generic Linux (64 bits) :http://www.mendeley.com/download-mendeley-desktop
安裝:
tar -xvf mendeleydesktop-1.12.3-linux-x86_64.tar.bz2 # 解壓sudo mv mendeleydesktop /opt # 複製到/opt下cd /opt/mendeleydesktop/bin # cd進去./install-mendeley-link-handler.sh /opt/mendeleydesktop/bin/mendeleydesktopsudo yum install qtwebkit # 安裝依賴包
登出重新登陸,在Application->Education下即可看到mendeley的相關項目。不過是沒有軟體的表徵圖的,強迫症不能忍,用下面的命令解決:
cp /opt/mendeleydesktop/share/icons/hicolor/128x128/apps/mendeleydesktop.png ~/.local/share/icons/
Google Chrome瀏覽器
預設的瀏覽器是Firefox,還是更喜歡Chrome瀏覽器。
在/etc/yum.repos.d/目錄下建立檔案google-chrome.repo,向其中添加如下內容:
[google-chrome]name=google-chromebaseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearchenabled=1gpgcheck=1gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
安裝:
sudo yum install google-chrome-stable
由於Google的官方源在國內可能無法正常訪問,導致安裝失敗或安裝後無法正常更新。有人在國內伺服器上做了Google官方源的鏡像,若你相信該鏡像是安全的,則可使用此國內鏡像代替Google官方源,google-chrome.repo的內容改為:
[google-chrome]name=google-chrome#baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch#gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pubmirrorlist=http://1dot75cm.tk/mirrorlistgpgkey=http://1dot75cm.tk/src/linux_signing_key.pubgpgcheck=1enabled=1
Opera瀏覽器
也可以選擇Opera瀏覽器。
:http://www.opera.com/download/guide/?os=linux
選擇CentOS RPM package進行下載。下載完成後,執行:
sudo yum localinstall opera-12.16-1860.x86_64.rpm
想要卸載的話,就執行:
sudo yum remove opera
Flash外掛程式
Flash外掛程式主要是看線上視頻的時候要用。Google瀏覽器內建了Flash外掛程式,所以這裡安裝的flash外掛程式主要是為了firefox。
sudo rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpmsudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linuxsudo yum install flash-plugin
解壓軟體
解壓7z或zip格式需要p7zip,由EPEL提供:
sudo yum install p7zip
解壓rar格式需要unrar,該軟體由Nux Dextop提供,但該源與EPEL源有衝突,所以直接下載該rpm進行安裝:
sudo yum localinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/unrar-5.0.12-2.el7.nux.x86_64.rpm
FTP用戶端
FTP用戶端,還是有介面的filezilla比較方便些。
sudo yum install filezilla
效率類軟體
這一類工具能夠在不同方面提高科研的效率,也提高了使用者的體驗。
終端模擬器
Gnome內建的終端模擬器是gnome-terminal。經常會需要開十幾個終端,切換和管理起來比較麻煩。
terminator
terminator有很多功能,我只用到了終端分割的功能。Ctrl+Shift+O對終端水平分隔,Ctrl+Shift+E對終端垂直分隔,Alt+上下左右可以在各子終端中切換。
sudo yum localinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/terminator-0.97-6.el7.nux.noarch.rpm
guake
有些時候需要臨時執行一兩個命令,但是又不想額外啟動一個終端的情況下,guake是個不錯的選擇。
sudo yum localinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/guake-0.4.4-11.el7.nux.x86_64.rpm
安裝完成後,在Application->System Tools裡找到guake Terminal即可啟動。按下F12即可呼出guake,再次按下F12即可隱藏。也可在終端執行guake-prefs對gauke進行配置。
zsh與oh my zsh
Linux下有很多shell,比如最常見的bash,除此之外還有csh、ksh。zsh也是一個shell。
zsh的特點在於:
- 文法基本完全相容於bash,一般使用者完全體會不到其區別
- zsh提供命令補全特性,比bash的補全要更好用
- 可配置性強
完全不經配置的zsh已經很好用了,一般使用者也沒必要花時間研究配置。oh my zsh是一群人一起維護的一套zsh設定檔。直接用這個設定檔,稍稍瞭解一點會有更好的體驗。
安裝zsh:
sudo yum install zsh
安裝oh my zsh:
curl -L http://install.ohmyz.sh | sh
上面的命令,做了如下幾件事情:
- 下載oh my zsh到~/.oh-my-zsh
- 備份已有的zsh設定檔~/.zshrc,並複製新的.zshrc檔案
- 將目前使用者的預設shell由bash改成zsh
第三步中,會報錯如下:chsh: "/usr/bin/zsh" is not listed in /etc/shells.,需要手動修改預設shell:
chsh -s /bin/zsh
chsh命令修改的是login shell,因而需要退出目前使用者並重新登陸,以後使用者的預設shell就從bash變成了zsh,所有的配置都不用寫到.bashrc而要寫到.zshrc中。
在.zshrc中可以選擇喜歡的主題,以及適當數量的外掛程式。下面列出我在用的外掛程式:
git
該外掛程式為git的眾多常用命令提供了更簡單的別名,比如git status的別名是gst,大大簡寫了擊鍵數。但該外掛程式中git mergetool --no-prompt的別名是gmt,與GMT軟體衝突,需要將該外掛程式的目錄git複製到custom/plugins下,然後刪除其中的gmt別名;
命令補全外掛程式: pip, pyenv
sudo:按兩下ESC即可在當前命令前加上sudo
yum:為常見的yum命令提供別名
autojump
autojump是一個非常智能的目錄快速切換的工具。簡單示範如下:
$ pwd/home/seisman$ cd Desktop$ cd /opt$ cd /usr/local# 用j命令迅速從/usr/local跳轉到與des匹配的目錄,這裡只有Desktop可以匹配$ j des$ pwd/home/seisman/Desktop
用法差不多就這樣,具體看項目首頁。
安裝:
sudo yum install autojumpsudo yum install autojump-zsh
中文IME
剛安裝的系統可能是沒有中文IME的,源中帶的中文IME應該是ibus,使用效果一般。fcitx是更好的選擇,基於fcitx架構的搜狗IME或許是更更好的選擇。
參考CentOS7安裝fcitx中文IME。
HostTool
科學上網幾乎已經成為每個搞科研的人的必備技能。
科學上網的方式有很多,這裡只說HostTool:https://hosts.huhamhire.com/
HostTool科學迷你筆記型電腦質上就是用最新的host檔案替代了系統內建的host檔案。
下載解壓後,進入目錄,直接sudo python2 hoststool.py即可運行,具體的用法自己研究一下。
VirtualBox虛擬機器
有時候可能需要在Windows下做一些操作,如果機器效能足夠好的話,可以安裝VirtualBox虛擬機器。
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.reposudo mv virtualbox.repo /etc/yum.repos.d/sudo yum install VirtualBox-4.3
這樣就可以在Linux下虛擬一個Windows啦,好開心。
等寬字型
編程要用等寬字型,這點是常識了。一款適合編程的等寬字型,至少要滿足如下幾個要求:
- 易於區分“1”、“i”和“l”
- 易於區分“0”、“o”和“O”
- 易於區分中文下的左引號和右引號
- 美觀
目前選擇的Source Code Pro。將解壓後的字型檔放在~/.fonts目錄下,並修改終端、gedit以及其他編輯器、IDE等的預設字型。
同步網盤
網盤根據功能大概可以分為兩類:同步網盤和備份網盤。既然是同步網盤,Linux下的用戶端必不可少。就目前已知的情況來看,CentOS下能使用的同步網盤只有兩個:Dropbox和堅果雲。
我主要用同步網盤將Linux機器上的PDF文獻同步到iPad上。
Dropbox
又是一個被牆的工具,熟練掌握科學上網技巧的人可以使用,一般人還是不要用了。
wget https://www.dropbox.com/download?dl=packages/fedora/nautilus-dropbox-1.6.2-1.fedora.x86_64.rpmsudo rpm -i nautilus-dropbox-1.6.2-1.fedora.x86_64.rpm
堅果雲
國內的全平台同步網盤,不限空間,但限制每月上傳流量1G,下載流量3G。
# 堅果雲依賴於notify-python,該包位於Nux Dextop源中sudo yum localinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/notify-python-0.1.1-25.el7.nux.x86_64.rpm# 下載wget https://jianguoyun.com/static/exe/installer/fedora/nautilus_nutstore_amd64.rpmsudo rpm -i nautilus_nutstore_amd64.rpm
工具軟體視頻下載工具
you-get和youtube-dl <https://github.com/rg3/youtube-dl>是兩個用於從視頻網站上下載視頻檔案的工具。其中,後者支援的網站更多,但前者對國內的視頻網站支援更好。
pip install you-getpip install youtube-dl
PDF處理工具
cpdf是一個跨平台的PDF處理工具,可以完成常見的PDF合并、切割、加密解密、書籤、浮水印等功能。
下載已編譯好的二進位包,解壓,並將與自己的平台對應的二進位檔案複製到${HOME}/bin目錄下即可使用。
BT軟體
transmission是Linux下常用的Torrent下載軟體:
sudo yum install transmission
在“Application”->“Internet”->中可以啟動transmission。
其他工具
sudo yum install nfs-utils # 掛載NFS檔案系統所必須sudo yum install xclip # 終端的文本複製工具sudo yum install ImageMagick # 其中的import和convert命令很有用sudo yum install dos2unix unix2dos # Windows和Linux分行符號互相轉換
地球物理相關
SAC
參考《SAC參考手冊》中的相關章節。
GMT
TauP:走時計算工具
rdseed:SEED轉SAC的工具
win32tools:Hinet自訂的win32格式轉SAC格式
pssac:用GMT繪製SAC檔案
distaz:根據兩點經緯度計算震中距和方位角
娛樂
sudo yum install 2048-cli # 2048命令列版
未完成Google Earth
理論上Google Earth應該可以跟Google Chrome用類似的方法來安裝的,但是由於Google Earth的rpm包存在bug,導致無法通過上面的方法安裝。
$ cd -$ wget https://dl.google.com/dl/earth/client/current/google-earth-stable_current_x86_64.rpm$ rpm2cpio google-earth-stable_current_x86_64.rpm | cpio -div$ sudo cp -r opt/google/earth /opt/google/$ sudo cp etc/cron.daily/google-earth /etc/cron.daily/$ rm -rf usr opt etc$ sudo ln -s /opt/google/earth/free/googleearth /usr/bin/google-earth
安裝完成後,啟動後奔潰。。
參考
- ELRepo官方網站
- ELRepo kmod-nvidia
- CentOS Yum軟體庫範例
用CentOS 7打造合適的科研環境 :zhuan