1. 源碼編譯(源碼安裝通常安裝比較麻煩,特別是解決依賴經(jīng)常會(huì)出現(xiàn)問題,但是通常編譯可以獲得該軟件的最新版本)
- 源碼:程序代碼,寫給人開的程序語言,但機(jī)器無法識(shí)別,所以無法執(zhí)行;
- 編譯程序:將程序代碼轉(zhuǎn)譯成為機(jī)器能看得懂的語言,相當(dāng)與翻譯器;
- 可執(zhí)行文件:經(jīng)過編譯程序變成二進(jìn)制程序后機(jī)器可以識(shí)別的可執(zhí)行二進(jìn)制文件;
而在整個(gè)編譯的過程,又需要設(shè)置軟件安裝路徑,確定鏈接庫位置,檢測(cè)庫依賴關(guān)系是否滿足,判斷目標(biāo)系統(tǒng)上是否有合適的編譯環(huán)境等復(fù)雜的過程。通常軟件開發(fā)商都會(huì)寫這樣一個(gè)檢測(cè)程序,來檢測(cè)用戶的操作環(huán)境,以及該操作環(huán)境是否滿足開發(fā)商所需的其他功能,替我們完成上訴的復(fù)雜過程。檢測(cè)完畢后,就會(huì)主動(dòng)新建一個(gè)Makefile的規(guī)則文件,而這個(gè)檢測(cè)程序的名字通常為configure(下載完軟件源碼會(huì)在源碼文件中找到)。
獲取源碼文件,解壓后,cd
進(jìn)入源碼文件目錄,找到configure
程序,使用./configure
建立Makefile文件(必須保證Makefile文件正確建立,如果建立不成功的話,查看錯(cuò)誤,并依據(jù)錯(cuò)誤提示,解決后再次建立Makefile文件,直到正確建立Makefile文件)
成功生成 Makefile后 我們只需要使用sudo make
命令進(jìn)行編譯
編譯成功后,使用sudo make install
進(jìn)行安裝軟件
不過源碼安裝的話,盡量將源碼文件放在一個(gè)能找到的特定位置,一般的話Makefile也會(huì)提供uninstall,這樣的話,當(dāng)我們需要卸載軟件時(shí),可以到軟件包中輸入sudo make uninstall
卸載軟件。
也可以使用 ./configure --prefix='File Path'
命令,將軟件安裝在File Path
位置,這樣可以方便刪除。關(guān)于configure
的更多參數(shù)可以查看軟件包中列如ReadMe文件或INSTALL文件,一般有參數(shù)設(shè)置說明。
正因?yàn)樯显V源碼安裝時(shí)出現(xiàn)的各種麻煩,所以引入了軟件包管理系統(tǒng)。(不過在使用linux 時(shí)需要進(jìn)行源碼編譯,也是比較常見的?。?/p>
2. dpkg安裝
為了解決上訴問題,很多廠商發(fā)布了針對(duì)各種 linxu distribution 編譯好的軟件。因?yàn)檐浖呀?jīng)編譯好了,所以我們只要像windows下一樣安裝就ok。
linux 開發(fā)商在固定的硬件平臺(tái)和操作系統(tǒng)平臺(tái)上將需要安裝的軟件編譯好,然后將這個(gè)軟件所有的相關(guān)文件打包成一個(gè)特殊格式的文件,這個(gè)文件還包括了預(yù)先檢測(cè)系統(tǒng)與依賴的腳本,并且提供記載該軟件提供的所有文件信息??蛻羧〉密浖螅灰ㄟ^特定的命令來安裝,那么該軟件就會(huì)按照內(nèi)部的腳本來檢測(cè)前驅(qū)軟件的存在,若安裝的環(huán)境符合滿足需求,按么就會(huì)開始安裝。安裝完成后還會(huì)將該軟件的信息寫入軟件管理機(jī)制中,以完成未來的升級(jí),刪除等操作。
下面是dpkg一些基礎(chǔ)命令的簡介:
-
dpkg -i package-name
安裝軟件包 -
dpkg -r package-name
刪除軟件包(保留配置信息) -
dpkg -P package-name
刪除軟件包(包括配置信息) -
dpkg --configure package-name
配置軟件包,如果加上-a
表示配置所有未配置的軟件包 -
dpkg --unpack package-name
解開軟件包到系統(tǒng)目錄,但不進(jìn)行配置
下面幾個(gè)命令用于對(duì)軟件包進(jìn)行查詢
-
dpkg -I filename
查看軟件說明(直接使用dpkg -l
查詢所有安裝的軟件包,filename可以使用正則,我通常用```dpkg -l | grep "filename"因?yàn)闀?huì)存在軟件名記不住的情況) -
dpkg -L filename
查看package-name對(duì)應(yīng)的軟件包安裝的文件及目錄 -
dpkg -s filename
查看package-name對(duì)應(yīng)的軟件包信息 -
dpkg -S filename-pattern
從已經(jīng)安裝的軟件包中查找包含filename的軟件包名稱
dpkg軟件包相關(guān)文件介紹
/etc/dpkg/dpkg.cfg
dpkg包管理軟件的配置文件
/var/log/dpkg.log
dpkg包管理軟件的日志文件
/var/lib/dpkg/available
存放系統(tǒng)所有安裝過的軟件包信息
/var/lib/dpkg/status
存放系統(tǒng)現(xiàn)在所有安裝軟件的狀態(tài)信息
/var/lib/dpkg/info
記安裝軟件包控制目錄的控制信息文件
3. apt安裝
雖然我們?cè)谑褂?strong>dpkg
時(shí),已經(jīng)解決掉了 軟件安裝過程中的大量問題,但是當(dāng)依賴關(guān)系不滿足時(shí),仍然需要手動(dòng)解決,而apt
這個(gè)工具解決了這樣的問題,linux distribution 先將軟件放置到對(duì)應(yīng)的服務(wù)器中,然后分析軟件的依賴關(guān)系,并且記錄下來,然后當(dāng)客戶端有安裝軟件需求時(shí),通過清單列表與本地的dpkg以存在的軟件數(shù)據(jù)相比較,就能從網(wǎng)絡(luò)端獲取所有需要的具有依賴屬性的軟件了。
下面是apt的一些基礎(chǔ)命令簡介:
-
apt-get update
更新源 -
apt-ge dist-upgrade
升級(jí)系統(tǒng) -
apt-get upgrade
更新所有已經(jīng)安裝的軟件包 -
apt-get install package_name
安裝軟件包(加上 --reinstall重新安裝) -
apt-get remove
移除軟件包(保留配置信息) -
apt-get purge package_name
移除軟件包(刪除配置信息) -
apt show pack_name
獲取包的相關(guān)信息 -
apt search page_name
搜索包的相關(guān)信息 -
apt-cache depends package
了解使用依賴 -
apt-get check
檢查是否有損壞的依賴
apt軟件包相關(guān)文件介紹:
/etc/apt/sources.list
記錄軟件源的地址
/var/cache/apt/archives
已經(jīng)下載到的軟件包都放在這里