新手指南: 在 Ubuntu 和 Fedora 上安装软件包

AUTHOR: Locez
VERSION: 2
UPDATE: 2016-02-03


自上次发布了 新手指南: 手把手教你安装 Ubuntu 和 Fedora 后,今天再讲一讲安装软件包。
本文将从 GUI 软件中心包管理器在线仓库安装本地安装源码安装 一一为你讲解有关安装软件包需要注意的事项。

本文环境


  • Ubuntu 15.04 64-bit
  • Fedora 22 64-bit

安装目标


  • wget
  • wget 是一个用于从网络上下载文件的简单自由软件,在下文我们也会用到 wget 进行下载某些文件。

相关概念


  • :我们安装程序可以从 远程仓库本地仓库 获取,这个 仓库 就是我们程序的来源,因此可以称为
  • 包管理器 :顾名思义 包管理器 是用来管理软件包的,用这个工具我们可以轻松的从仓库中安装、卸载程序。不同的发行版有不同的包管理器,Ubuntu 使用 apt-get 而 Fedora 22使用 dnf
  • 源码 : 程序的原始代码,未经过编译,通过编译源码也可以生成程序。

GUI 软件中心


Ubuntu 软件中心


当我们处于 GUI (Graphical User Interface) 界面时,Ubuntu 为我们提供了一个图形界面的安装工具,称为 Ubuntu 软件中心,通过这个软件中心,我们可以像 Windows 一样通过点击几个按钮,轻松实现软件包安装。下图为打开软件中心之后的图,左边是一些分类,下面则是一些推荐的软件包。
softwarecenter
点击已安装可以查看安装在本机的软件包,并且可以在此管理它们,如图选中 Firefox 并点击卸载,此时会提示你输入密码,输入完成且正确就会卸载你所选的程序。
installed
接下来在搜索框搜索 wget 你可以看到如图所示的东西,并且只需点击安装并正确输入密码即可。
installnewprogram

Fedora 软件中心


点开如图所示的图标就可以打开 Fedora 的软件中心。
softwarecentericon
打开后界面如图,分类在最下面
softwarecenter
点开上图的扫雷,显示如下,点击 安装 ,静候即可
installnewprogram
现在转到 已安装 ,我们可以看到刚刚安装的扫雷,点击 移除 ,就可以删除了。
removenewprogram
如果你遇到下图,只需要输入你的密码即可。
authoritarian

使用包管理器安装


1.换源


发行版 换源方法
Ubuntu 阿里云镜像配置请参考这里
Ubuntu USTC镜像配置请参考这里
Fedora 阿里云镜像配置请参考这里
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 - 获取帮助
Fedora dnf clean sudo dnf clean 清除旧缓存
makecache sudo dnf makecache 生成新缓存
-h - 获取帮助

从源码编译安装


有些时候我们会发现有的软件包并没有包含在软件仓库中,也没有可用的二进制包,这时候我们可以尝试从源码编译安装,我在此处以 wget 为例,示范如何编译,并解决编译遇到的问题
以下环境为 Ubuntu 15.04

1
2
3
4
5
6
7
8
9
10
11
12
13
$ 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

1
$ ./configure

但出现如下的错误

1
configure: error: --with-ssl=gnutls was given, but GNUTLS is not available.

错误提示说,给定的 SSLgnutls 但是却不可用(因为没有安装),因此我们安装并指定 opensslwgetSSL

1
2
3
$ sudo apt-get install openssl
$ sudo apt-get install libssl-dev
$ ./configure --with-ssl=openssl

如果没有问题,执行完后应该显示如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

再次尝试编译

1
$ make

此时没有报错,则编译成功,接下来进行安装

1
$ sudo make install

试试是不是 wget 命令又出来了?源码安装遇到问题,我们要善于搜索,提问和解决,根据报错内容进行相应的编译调整,缺少的依赖装上,一般就可以成功。

总结


本文主要为新手讲解了 UbuntuFedora 安装软件包的一些方法, 相较之前的版本,本次更改由繁化简,并且以表格的形式给出参数和命令,要熟练和体会这些命令到底是干嘛的,还必须亲自敲一敲,去理解这个命令的作用。从源码编译安装,则展示了一个遇到问题,解决问题的过程,由于编译 wget 较简单,此处也未遇到特别难处理的问题,但这清晰的展示了一个编译安装的过程,遇到错误,我们不要害怕,而要认真阅读给出的错误信息,借此搜索,提问,寻求解答。另外 Linux 下遇到问题首先要自己善于去搜索,提问,解决问题得到答案并归纳总结,不然是很难学到知识的。