1. 程式人生 > >linux作業系統學習筆記(四)軟體安裝

linux作業系統學習筆記(四)軟體安裝

    Ubuntu系統中,軟體通常以 deb 格式的包檔案釋出,它是一種預編譯軟體包。deb包中除了包含已編譯的軟體,通常還包括軟體的拷貝路徑、對其它軟體包的依賴關係紀錄、比較通用的配置檔案以及軟體的描述、版本、作者、類別、佔用空間等資訊。

使用 dpkg 命令來管理deb軟體包:

dpkg -i | --install xxx.deb 安裝deb軟體包

dpkg -r | --remove xxx.deb 刪除軟體包

dpkg -r -P | --purge xxx.deb 連同配置檔案一起刪除

dpkg -I | -info xxx.deb 檢視軟體包資訊

dpkg -L xxx.deb 檢視包內檔案

dpkg -l 檢視系統中已安裝軟體包資訊

dpkg-reconfigure xxx 重新配置軟體包

    有些時候,您使用 dpkg 安裝一個軟體包,系統會提示您該軟體包依賴其它軟體包。這時,您先安裝其它軟體包,直到滿足依賴關係為止。或者同時安裝多個軟體包

dpkg -i aaa.deb bbb.deb ccc.deb

    如果一個軟體依賴關係過於複雜,使用 dpkg來安裝它,並不是一個明智的選擇,這個時候您就需要用到APT軟體包管理系統。APT可以自動的檢查依賴關係,通過您預設的方式來獲得相關軟體包,並自動安裝配置它。事實上,在多數情況下,我們推薦您使用APT軟體包管理系統。

    APT系統需要一個軟體資訊資料庫和至少一個存放著大量deb包的軟體倉庫,我們稱之為 源 。 源 可以是網路伺服器,安裝CD或者本地軟體倉庫。您需要修改 /etc/apt/sources.list 檔案,使APT系統能夠連線到源。

APT系統主要包括 apt-get 和 apt-cache 等命令。通常是複合命令,包含若干個子命令。

apt-get install xxx 安裝xxx

-d僅下載-f強制安裝

apt-get remove xxx 解除安裝xxx

apt-get update 更新軟體資訊資料庫

apt-get upgrade 進行系統升級

apt-cache search 搜尋軟體包

說明:建議您經常使用 sudo apt-get update 命令來更新您的軟體資訊資料庫

APT系統修復

    由於各種意外,APT系統可能會出現問題,使用如下命令,嘗試進行修復:

apt-get -f install

原始碼包

    對於絕大多數軟體,我們建議您使用APT系統來安裝它。在少數情況下,例如某軟體沒有以deb包的格式釋出,或者需要定製適合自己的軟體,您可以通過編譯原始碼的方式安裝它。

    首先需要下載軟體的原始碼包,並且將它解包為一些原始碼檔案。並了便於管理,建議將下載的原始碼包移動到 /usr/local/src/ 目錄下,並在這裡解包。

sudo mv xxx.tar.gz /usr/local/src 移動原始碼包

cd /usr/local/src 進入“/usr/local/src/”目錄

sudo tar -xzvf xxx.tar.gz 解包原始碼

cd xxx_ver/ 進行解包後的原始碼目錄

原始碼目錄中通常有一個 configure 指令碼,用來配置即將開始的編譯過程。您可以執行它

sudo ./configure [--prefix=/usr/loca/xxx ......]

它會自動檢測軟體的編譯環境和依賴關係,並且生成 Makefile 檔案。

    使用帶引數的命令 ./configure --help ,或者閱讀 INSTALL 檔案,檢視該指令碼允許的引數。例如使用

--prefix=/usr/local/xxx 引數,將軟體的安裝目錄設定為 /usr/local/xxx/

現在執行 make 命令,系統會根據 Makefile 檔案中的設定,通過 make 工具呼叫編譯器和所需資原始檔,將原始碼編譯成目標檔案。

sudo make

執行 make install 命令, make 工具會自動連線目標檔案和庫檔案,將最終生成的檔案拷貝到 Makefile 檔案設定的路徑中,並且完成更改檔案的屬性,刪除殘留檔案等活動。

sudo make install

現在,編譯安裝已經完成,為了更方便的使用它,需要給程式的可執行檔案作一個符號連結。

sudo ln -sf /usr/local/xxx/可執行檔案 /usr/local/bin/可執行檔案

Tip:為了順利的進行編譯,至少需要安裝 build-essential 軟體包。

sudo apt-get install build-essential