新手指南:在 Ubuntu 和 Fedora 上安裝軟體包
本文環境
- Ubuntu 15.04 64-bit
- Fedora 22 64-bit
安裝目標
- wget 它是一個用於從網路上下載文件的簡單自由軟體,在下文我們也會用到 wget 進行下載某些文件。
相關概念
- 源 :我們安裝程序可以從 遠程倉庫 或 本地倉庫 獲取,這個 倉庫 就是我們程序的來源,因此可以稱為 源 。
- 包管理器 :顧名思義 包管理器 是用來管理軟體包的,用這個工具我們可以輕鬆的從倉庫中安裝、卸載程序。不同的發行版有不同的包管理器,Ubuntu 使用
apt-get
而 Fedora 22使用dnf
。 - 源碼 : 程序的原始代碼,未經過編譯,通過編譯源碼也可以生成程序。
圖形界面的軟體中心
Ubuntu 軟體中心
當我們處於圖形界面( GUI :Graphical User Interface) 時,Ubuntu 為我們提供了一個圖形界面的安裝工具,稱為 Ubuntu 軟體中心,通過這個軟體中心,我們可以像 Windows 一樣通過點擊幾個按鈕,輕鬆實現軟體包安裝。下圖為打開軟體中心之後的圖,左邊是一些分類,下面則是一些推薦的軟體包。
點擊已安裝可以查看安裝在本機的軟體包,並且可以在此管理它們,如圖選中 Firefox 並點擊卸載,此時會提示你輸入密碼,輸入完成且正確就會卸載你所選的程序。
接下來在搜索框搜索 wget
你可以看到如圖所示的東西,並且只需點擊安裝並正確輸入密碼即可。
Fedora 軟體中心
點開如圖所示的圖標就可以打開 Fedora 的軟體中心。
打開後界面如圖,分類在最下面
點開上圖的掃雷,顯示如下,點擊 安裝 ,靜候即可
現在轉到 已安裝 ,我們可以看到剛剛安裝的掃雷,點擊 移除 ,就可以刪除了。
如果你遇到下圖,只需要輸入你的密碼即可。
使用包管理器安裝
1.換源
發行版 | 換源方法 |
---|---|
Ubuntu | 阿里雲鏡像配置請參考這裡 |
USTC鏡像配置請參考這裡 | |
Fedora | 阿里雲鏡像配置請參考這裡 |
USTC鏡像配置請參考這裡 |
換源是為了提升下載速度,上文的概念已經提到了,我們安裝軟體是從遠程倉庫下載安裝的,自然這個遠程倉庫的網路連通必須要好,並且下載速度要可觀。
2.更新源
更換了源的文件後,還需要更新本地資料庫信息,以便與遠程倉庫信息一致。
發行版 | 包管理工具 | 參數 | 示例 | 解釋 |
---|---|---|---|---|
Ubuntu | apt-get | update | sudo apt-get update | 取回更新的軟體包列表信息 |
Fedora | dnf | check-update | sudo dnf check-update | 取回更新的軟體包列表信息 |
3.安裝軟體包
發行版 | 包管理工具 | 類型 | 參數 | 示例 | 解釋 |
---|---|---|---|---|---|
Ubuntu | apt-get | 遠程倉庫 | install | sudo apt-get install packagename | 安裝軟體包 |
Fedora | dnf | 遠程倉庫 | install | sudo dnf install packagename | 安裝軟體包 |
Ubuntu | dpkg | 本地deb包 | -i | sudo dpkg -i filename.deb | 安裝本地二進位deb包 |
Fedora | rpm | 本地rpm包 | -i | sudo rpm -i filename.rpm | 安裝本地二進位rpm包 |
4.卸載軟體包
發行版 | 包管理工具 | 參數 | 示例 | 解釋 |
---|---|---|---|---|
Ubuntu | apt-get | remove | sudo apt-get remove packagename | 卸載軟體包 |
Fedora | dnf | remove | sudo dnf remove packagename | 卸載軟體包 |
Ubuntu | dpkg | -r | sudo dpkg -r packagename | 卸載軟體包 |
5.升級所有軟體包
發行版 | 包管理工具 | 參數 | 示例 | 解釋 |
---|---|---|---|---|
Ubuntu | apt-get | upgrade | sudo apt-get upgrade | 升級所有軟體包 |
Fedora | dnf | upgrade | sudo dnf upgrade | 升級所有軟體包 |
6.其它參數
發行版 | 包管理工具 | 參數 | 示例 | 解釋 |
---|---|---|---|---|
Ubuntu | apt-get | purge | sudo apt-get purge packagename | 卸載並清除軟體包的配置 |
source | apt-get source packagename | 下載源碼包文件 | ||
clean | sudo apt-get clean | 刪除所有已下載的包文件 | ||
download | apt-get download packagename | 下載指定的二進位包到當前目錄 | ||
--help | apt-get --help | 獲取幫助 | ||
Fedora | dnf | clean | sudo dnf clean | 清除舊緩存 |
makecache | sudo dnf makecache | 生成新緩存 | ||
-h | dnf -h | 獲取幫助 |
從源碼編譯安裝
有些時候我們會發現有的軟體包並沒有包含在軟體倉庫中,也沒有可用的二進位包,這時候我們可以嘗試從源碼編譯安裝,我在此處仍以wget
為例,示範如何編譯,並解決編譯遇到的問題
以下環境為 Ubuntu 15.04
$ mkdir buildwget #構建目錄
$ cd buildwget
$ wget http://ftp.gnu.org/gnu/wget/wget-1.16.tar.xz #下載源碼包
$ sudo apt-get remove wget #為了後面的測試,先把 wget 卸載了
$ xz -d wget-1.16.tar.xz #解壓 xz 文件
$ tar -xvf wget-1.16.tar #解檔 tar 文件
$ cd wget-1.16
$ ls #列出文件
ABOUT-NLS ChangeLog.README GNUmakefile maint.mk po util
aclocal.m4 configure INSTALL Makefile.am README
AUTHORS configure.ac lib Makefile.in src
build-aux COPYING m4 msdos testenv
ChangeLog doc MAILING-LIST NEWS tests
上面的文件就是我們將要編譯的源文件,其中有個特別要注意的就是 INSTALL
,我們要養成一個習慣,多看 INSTALL
文件,這個文件會告訴我們怎麼編譯,編譯時需要注意什麼?但由於此處的編譯較簡單,所以 INSTALL
也沒有提到什麼特別重要的事情。
按照 INSTALL
我們先執行 ./configure
$ ./configure
如果出現如下的錯誤
configure: error: --with-ssl=gnutls was given, but GNUTLS is not available.
錯誤提示說,給定的 SSL
是 gnutls
但是卻不可用(因為沒有安裝),因此我們安裝並指定 openssl
為 wget
的 SSL
。
$ sudo apt-get install openssl
$ sudo apt-get install libssl-dev
$ ./configure --with-ssl=openssl
如果沒有問題,執行完後應該顯示如下
configure: Summary of build options:
Version: 1.16
Host OS: linux-gnu
Install prefix: /usr/local
Compiler: gcc
CFlags: -g -O2
LDFlags:
Libs: -lssl -lcrypto -ldl -lz
SSL: openssl
Zlib: yes
PSL: no
Digest: yes
NTLM: yes
OPIE: yes
Debugging: yes
然後進行編譯
$ make
會輸出很多編譯信息,不要擔心,如果最後沒有報錯而停止,則編譯成功,接下來進行安裝
$ sudo make install
試試是不是 wget
命令又出來了?源碼安裝遇到問題,我們要善於搜索,提問和解決,根據報錯內容進行相應的編譯調整,缺少的依賴裝上,一般就可以成功。
總結
本文主要為新手講解了 Ubuntu 和 Fedora 安裝軟體包的一些方法, 相較之前的版本,本次更改由繁化簡,並且以表格的形式給出參數和命令,要熟練和體會這些命令到底是幹嘛的,還必須親自敲一敲,去理解這個命令的作用。從源碼編譯安裝,則展示了一個遇到問題,解決問題的過程,由於編譯 wget
較簡單,此處也未遇到特別難處理的問題,但這清晰的展示了一個編譯安裝的過程,遇到錯誤,我們不要害怕,而要認真閱讀給出的錯誤信息,藉此搜索,提問,尋求解答。另外 Linux 下遇到問題首先要自己善於去搜索,提問,解決問題得到答案並歸納總結,不然是很難學到知識的。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive