1 相關(guān)知識(shí)
1.1 文件屬性
文件屬性 rwx 中 r 表示 read (數(shù)字表示為 4)、w 表示 write (數(shù)字表示為 2)、x 表示執(zhí)行 (數(shù)字表示為 1)。三個(gè)為一組,連續(xù)出現(xiàn)三次。第一個(gè)表示文件擁有者擁有的權(quán)限,第二個(gè)表示擁有者所在的用戶組擁有的權(quán)限,第三個(gè)表示其他人擁有的權(quán)限。

如上圖,開頭的-表示文件,d表示文件夾,上面只有fold是文件夾,其他全部為文件。上圖的example.txt的屬性為'-rw-rw-r--',開頭‘-’表是文件,rw-表示文件擁有者擁有讀(r)寫(w)沒(méi)有執(zhí)行(-)權(quán)限,接下來(lái)三個(gè)字符表示擁有者所在的用戶組擁有讀寫及不可執(zhí)行權(quán)限(rw-),最后三個(gè)表示其他人只有讀的權(quán)限(r--)。
chmod 可以修改文件或文件夾的屬性。
創(chuàng)建example.txt文件,用于修改權(quán)限。
echo 'echo "shell script"' >example.txt
cat example.txt

chmod 700 example.txt #賦予文件擁有者讀寫可執(zhí)行權(quán)限(7=4(r)+2(w)+1(x),0=0+0+0)
ls -l example.txt
chmod 761 example.txt #賦予文件擁有者讀寫可執(zhí)行權(quán)限,同組者讀寫權(quán)限,其他人可執(zhí)行權(quán)限
ls -l example.txt

chmod a+x file: 表示給文件增加所有人可執(zhí)行權(quán)限。
chmod u+x file: 表示給文件增加所有者 (u,user,) 可執(zhí)行權(quán)限 (+x)
chmod g+x, chmod o+X: 表示給文件增加組內(nèi)人或其它人可執(zhí)行權(quán)限
chmod 755 file: 表示擁有者有可讀寫執(zhí)行權(quán)限,其它人有可讀執(zhí)行權(quán)限。(7=4+2+1; 5=4+1)
具體使用 man chmod 查看其它參數(shù)使用。
1.2 環(huán)境變量
如果一個(gè)文件有了可執(zhí)行權(quán)限,是不是就可以執(zhí)行了,我們來(lái)檢測(cè)下。

文件并不能執(zhí)行,只有當(dāng)我輸入./后才可執(zhí)行,./表示當(dāng)前目錄。這就涉及到環(huán)境變量了。
通俗的講,環(huán)境變量就是告訴電腦 (實(shí)際是操作系統(tǒng)) 幾個(gè)目錄。這幾個(gè)目錄下存儲(chǔ)又可執(zhí)
行文件,如前面顯示的/usr/bin 目錄,大部分的系統(tǒng)命令都在這個(gè)目錄下。
當(dāng)我們輸入命令 mkdir 時(shí),系統(tǒng)就會(huì)在環(huán)境變量所代表的幾個(gè)目錄從前都后去查找,哪個(gè)里面有 mkdir 文件,然后去執(zhí)行 mkdir 命令。
系統(tǒng)中環(huán)境變量的名字是 PATH,其內(nèi)容可通過(guò)下面的命令顯示 (根據(jù)操作系統(tǒng)不同和配置不同,略有差別,但格式是統(tǒng)一的,: 分割的一堆路徑):

所以如果我們想讓自己的命令能被系統(tǒng)找到,就需要把命令所在的目錄加到環(huán)境變量里面。
加到環(huán)境變量的路徑必須是全路徑,全路徑指以/開頭或已 ~ 開頭的路徑 (~ 開頭的路徑只能個(gè)人用戶有效)。
export PATH=$PATH:`pwd`/ #使用export添加環(huán)境變量,PATH是shell變量,第一次PATH是定義,不用$,第二次$PATH是以前的變量,引用要用$,pwd查看當(dāng)前目錄
example.txt

所以在以后安裝了新的軟件,或者寫了新的腳本后,都把軟件的可執(zhí)行程序和可執(zhí)行的腳本所在的目錄,加到環(huán)境變量里面就可以了。
但是,在命令行中執(zhí)行 export,對(duì)環(huán)境變量所做的修改,只對(duì)當(dāng)前終端有效,退出后就無(wú)效了。為了使得這一操作長(zhǎng)期有效,我們需要把這句話寫入一個(gè)文件中,即.bashrc中。
2 安裝軟件的方式
2.1 系統(tǒng)包管理器安裝
軟件安裝最方便的、一般也不容易出問(wèn)題的是利用系統(tǒng)自帶的包管理工具,可以解決大部分的依賴問(wèn)題。
打開Ubuntu軟件,搜索,找到要安裝的軟件,點(diǎn)擊安裝,授權(quán)即可。但很多軟件找不到,而且如果系統(tǒng)是舊版的話,安裝的軟件也是舊版的。

2.2 下載二進(jìn)制文件(安裝bowtie2)
解決這些問(wèn)題,就需要自己去軟件官網(wǎng)查找最新的分法包,又有兩種可能,一種是分法包直接就是編譯好的軟件,下載下來(lái)設(shè)置下可執(zhí)行屬性并放入環(huán)境變量就可以運(yùn)行了,如 bowtie 這樣的工具。
在bowtie2官網(wǎng)下載
unzip bowtie2-2.3.5-source.zip #解壓zip文件
echo 'export PATH=$PATH:'`pwd`/ >>~/.bashrc 添加到環(huán)境變量
source ~/.bashrc
2.3 源碼安裝samtools(參考生信寶典)
源碼一般三步configure, make, make install。
? configure 是檢查系統(tǒng)的庫(kù)文件、類文件、依賴軟件是否存在以及它們的版本是否滿足需求,并根據(jù)實(shí)際檢測(cè)結(jié)果生成 Makefile 的工具。
? make 則是具體的編譯過(guò)程。編譯的語(yǔ)句都寫在了 Makefile 中。make 默認(rèn)編譯 Makefile 中出現(xiàn)的第一個(gè) target,也可以指定 target 編譯,并根據(jù) Makefile 的設(shè)置方式依次編譯所有依賴的東西。
有些軟件的安裝,在執(zhí)行完 make 后就獲得了可執(zhí)行程序,可以跳過(guò) make install 的過(guò)程,只需要把可執(zhí)行程序放入環(huán)境變量就可以運(yùn)行了。但部分軟件還需要一些依賴關(guān)系,所以需要執(zhí)行 make install 才算完成了完整的安裝。
? make install 通常是拷貝 make 編譯出來(lái)的可執(zhí)行文件或者依賴的庫(kù)文件 (如果有的話) 到 configure 時(shí)的--prefix 指定的目錄下。
例如安裝samtools,到http://samtools.sourceforge.net/下載文件
unzip samtools-develop.zip #解壓文件
cd samtools-develop/
find configure #查看是否有configure文件,結(jié)果沒(méi)有,接下來(lái)按照官網(wǎng)說(shuō)明產(chǎn)生configure文件
autoheader # Build config.h.in (this may generate a warning about
# AC_CONFIG_SUBDIRS - please ignore it).
autoconf -Wno-syntax # Generate the configure script
./configure # Needed for choosing optional functionality
#報(bào)錯(cuò),沒(méi)有HTSlib 庫(kù)
下載htslib
tar zxvf htslib-1.9.tar.gz #解壓文件
cd htslib-1.9/
ls #查看是否存在configure;不存在
autoconf #編譯產(chǎn)生configure
./configure #檢查依賴,報(bào)錯(cuò),沒(méi)有l(wèi)iblzma
sudo apt-get install liblzma-dev #安裝liblzma
./configure #再次檢查依賴,沒(méi)有報(bào)錯(cuò)
make
sudo make install #需要管理員權(quán)限
samtools #檢查是否安裝成功




總結(jié):安裝時(shí)沒(méi)有configure文件是可以autoconf產(chǎn)生;在檢查依賴時(shí)一定要查看是否報(bào)錯(cuò),報(bào)錯(cuò)則缺少相關(guān)依賴的文件庫(kù),x需要依次安裝。