新手指南：在 Ubuntu 和 Fedora 上安装软件包
新进入 Linux 世界的朋友们，也许你已经下载好了 Linux 的安装 ISO，并且安装好了你的 Linux ，那么接下来，你也许希望安装一些 Linux 上用的软件。开始你可能会使用图形界面的软件中心来安装，有时候也需要使用命令行来安装，或者甚至需要自己去编译一个二进制出来——这是多么神奇的一件事啊。
安装软件 编译
49.87.151.80
太好了，学习了
dadudeng [Opera 10.5|Android 4.1]
2015-08-19T17:52:21.000
49.5.1.218
学习了~
大葱蘸酱就饼 [Chrome 44.0|Windows 8.1]
2015-09-07T13:50:05.000
106.45.159.204
很实用的东西，非常不错
yang.yusi [Firefox 43.0|Ubuntu]
2015-12-19T22:08:44.000
101.81.220.198
写的非常棒！谢谢！
来自上海的 Chrome 47.0|Windows 7 用户
2015-12-27T19:14:37.000
120.2.166.248
谢谢
attack [QQ Browser 9.2|Windows 7]
2016-01-18T20:05:51.000
223.104.13.29
很适合新手
ryt [Chrome 47.0|GNU/Linux]
2016-02-05T06:40:30.000
39.159.11.37
还是一些基础的技术教程类文章更受大家的欢迎……
kashu [Chromium 47.0|Ubuntu]
2016-02-05T11:23:19.000
36.63.6.33
fedora22以前的版本用的是yum，现在换dnf了
来自安徽合肥的 Internet Explorer 11.0|Windows 7 用户
2016-02-05T13:15:54.000
39.179.189.37
假装老司机，过来瞧瞧！
浩浩君 [Chrome 45.0|Windows 7]
2016-02-08T17:47:31.000
135.0.95.22
很适合新手
ak2008 [Chrome 48.0|GNU/Linux]
2016-02-21T14:58:38.000
123.11.66.54
我就是看看我的id
来自河南南阳的 Firefox 49.0|Ubuntu 用户
2016-10-21T21:39:32.000
123.120.86.138
你没 ID ……其实我知道你是想炫耀你的 Firefox 49.0&nbsp;&nbsp;: -d
linux [Chrome 54.0|Mac 10.11]
2016-10-21T22:12:07.000
58.249.112.63
楼主，有地方不懂呢，能在之后教程解释下吗？ <br />
 configure: error: --with-ssl=gnutls was given, but GNUTLS is not available.<br />
错误提示说，给定的 SSL 是 gnutls 但是却不可用（因为没有安装），<br />
因此我们安装并指定 openssl 为 wget 的 SSL 。<br />
这个openssl跟之前那个错误是什么关系呢？还有后面那个libssl-dev<br />
<br />
 然后又出现<br />
$ sudo apt-get install openssl <br />
$ sudo apt-get install libssl-dev
来自广东广州的 Firefox 45.0|Ubuntu 用户
2016-11-13T21:21:11.000
124.207.188.68
are you&nbsp;&nbsp;NANYANG TOO
来自北京的 Chrome 55.0|Windows 10 用户
2017-01-13T16:26:20.000
123.58.160.131
asdfdsds
来自浙江杭州的 Chrome 48.0|Windows 7 用户
2017-05-03T15:26:35.000
123.58.160.131
写的非常棒
来自浙江杭州的 Chrome 57.0|Windows 7 用户
2017-05-03T15:28:53.000
222.209.116.14
试试看
来自四川成都的 Chrome 58.0|GNU/Linux 用户
2017-05-05T00:19:52.000
123.181.200.149
写的很棒
tenBlackTea [Chrome 58.0|Windows 7]
2017-05-21T20:50:35.000
1.204.7.172
是ubuntu还是fedora，这个问题，一直在纠结，但从未被解决。
张熙熙 [Internet Explorer 11.0|Windows 10]
2017-07-25T23:36:15.000
1.204.19.253
值得一看，不错
张熙熙 [Firefox 54.0|Ubuntu]
2017-07-27T17:44:32.000
171.113.238.144
不知道自己打id是什么
来自湖北武汉的 Chromium 59.0|Ubuntu 用户
2017-08-11T01:24:54.000
111.121.100.76
我的id
来自贵州贵阳的 Microsoft Edge 15.15063|Windows 10 用户
2017-09-28T23:31:35.000
171.113.131.203
我试了下,把我的安装的软件全部卸载了,害的我又重新装一边
来自湖北武汉的 Chrome 76.0|GNU/Linux 用户
2019-08-12T16:52:45.000
171.113.131.203
我试了下,把我的安装的软件全部卸载了,害的我又重新装一边
来自湖北武汉的 Chrome 76.0|GNU/Linux 用户
2019-08-12T16:52:47.000
171.113.131.203
我试了下,把我的安装的软件全部卸载了,害的我又重新装一边
来自湖北武汉的 Chrome 76.0|GNU/Linux 用户
2019-08-12T16:52:50.000
新进入 Linux 世界的朋友们，也许你已经下载好了 Linux 的安装 ISO，并且安装好了你的 Linux ，那么接下来，你也许希望安装一些 Linux 上用的软件。开始你可能会使用图形界面的软件中心来安装，有时候也需要使用命令行来安装，或者甚至需要自己去编译一个二进制出来——这是多么神奇的一件事啊。
新进入 Linux 世界的朋友们，也许你已经[下载好了 Linux 的安装 ISO](/article-4130-1.html)，并且[安装好了你的 Linux](/article-5893-1.html) ，那么接下来，你也许希望安装一些 Linux 上用的软件。开始你可能会使用图形界面的软件中心来安装，有时候也需要使用命令行来安装，或者甚至需要自己去编译一个二进制出来——这是多么神奇的一件事啊。


那么我们今天就讲一讲如何在 Linux 上安装软件包。


本文将从 **GUI 软件中心**、**包管理器**、**在线仓库安装**，**本地安装**，**源码安装** 一一为你讲解有关安装软件包需要注意的事项。 


![](/data/attachment/album/201508/16/222746e5vh38d7ey3leyps.jpg)


### 本文环境


* 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 一样通过点击几个按钮，轻松实现软件包安装。下图为打开软件中心之后的图，左边是一些分类，下面则是一些推荐的软件包。


![Ubunutu 软件中心](/data/attachment/album/201508/16/222807duvefmvtekrvmzae.png)


点击已安装可以查看安装在本机的软件包，并且可以在此管理它们，如图选中 Firefox 并点击卸载，此时会提示你输入密码，输入完成且正确就会卸载你所选的程序。


![已安装](/data/attachment/album/201508/16/222808pglctdclc3gd3f5t.png)


接下来在搜索框搜索 `wget` 你可以看到如图所示的东西，并且只需点击安装并正确输入密码即可。


![安装新程序](/data/attachment/album/201508/16/222808pglctdclc3gd3f5t.png)


#### Fedora 软件中心


点开如图所示的图标就可以打开 Fedora 的软件中心。


![Fedora 软件中心](/data/attachment/album/201508/16/222808i3dn7zuy4c27zvc4.png)


打开后界面如图，分类在最下面


![软件中心](/data/attachment/album/201508/16/222809pxyzebmzsmhwheei.png)


点开上图的扫雷，显示如下，点击 **安装** ，静候即可


![安装新程序](/data/attachment/album/201508/16/222809ke0uhd9e3zqw7h39.png)


现在转到 **已安装** ，我们可以看到刚刚安装的扫雷，点击 **移除** ，就可以删除了。


![移除程序](/data/attachment/album/201508/16/222809e9plrmmzu1p1pukr.png)


如果你遇到下图，只需要输入你的密码即可。


![认证](/data/attachment/album/201508/16/222810mc3rd4sasqabmqcz.png)


### 使用包管理器安装


#### 1.换源




| 发行版 | 换源方法 |
| --- | --- |
| Ubuntu | [阿里云镜像配置请参考这里](http://mirrors.aliyun.com/help/ubuntu) |
| [USTC镜像配置请参考这里](https://lug.ustc.edu.cn/wiki/mirrors/help/ubuntu) |
| Fedora | [阿里云镜像配置请参考这里](http://mirrors.aliyun.com/help/fedora) |
| [USTC镜像配置请参考这里](https://lug.ustc.edu.cn/wiki/mirrors/help/fedora) |


换源是为了提升下载速度，上文的概念已经提到了，我们安装软件是从远程仓库下载安装的，自然这个远程仓库的网络连通必须要好，并且下载速度要可观。


#### 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 下遇到问题首先要自己善于去搜索，提问，解决问题得到答案并归纳总结，不然是很难学到知识的。

