红联Linux门户
Linux帮助

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

发布时间:2015-08-17 10:28:20来源:linux.cn作者:Linux中国

新进入 Linux 世界的朋友们,也许你已经下载好了 Linux 的安装 ISO,并且安装好了你的 Linux ,那么接下来,你也许希望安装一些 Linux 上用的软件。开始你可能会使用图形界面的软件中心来安装,有时候也需要使用命令行来安装,或者甚至需要自己去编译一个二进制出来——这是多么神奇的一件事啊。


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

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


本文环境

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

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

Ubunutu 软件中心

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

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

已安装

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

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

安装新程序


Fedora 软件中心

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

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

Fedora 软件中心

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

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

软件中心

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

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

安装新程序

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

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

移除程序

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

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

认证


使用包管理器安装


Ubuntu 使用 apt-get 从软件仓库中安装

这里使用的是上次虚拟机安装的环境,因此很干净什么都没有,我们先看看 apt-get 命令

$ apt-get --help
apt 1.0.9.7ubuntu4,用于 amd64 构架,编译于 Apr  7 2015 14:42:59
用法: apt-get [选项] 命令
apt-get [选项] install|remove 软件包1 [软件包2 ...]
apt-get [选项] source 软件包1 [软件包2 ...]
apt-get 是一个用于下载和安装软件包的简易命令行界面。
最常用命令是 update 和 install。
命令:
update - 取回更新的软件包列表信息
upgrade - 进行一次升级
install - 安装新的软件包(注:软件包名称是 libc6 而非 libc6.deb)
remove - 卸载软件包
autoremove - 卸载所有自动安装且不再使用的软件包
purge - 卸载并清除软件包的配置
source - 下载源码包文件
build-dep - 为源码包配置所需的编译依赖关系
dist-upgrade - 发布版升级,见 apt-get(8)
dselect-upgrade - 根据 dselect 的选择来进行升级
clean - 删除所有已下载的包文件
autoclean - 删除已下载的旧包文件
check - 核对以确认系统的依赖关系的完整性
changelog - 下载指定软件包,并显示其changelog
download - 下载指定的二进制包到当前目录


在对 apt-get 命令有了基本的了解后,我们接下来要换源,将源换成国内的,有 阿里云 以及 网易 的镜像站。

阿里云镜像配置请参考http://mirrors.aliyun.com/help/ubuntu
网易镜像配置请参考http://mirrors.163.com/.help/ubuntu.html

一般来说我们只需将 /etc/apt/sources.list 里面的 xxx.xxx.com 换成 mirrors.aliyun.com 或 mirrors.163.com 即可,其余无需改动。

改动源后,我们先更新源

$ sudo apt-get update

升级所有软件包

$ sudo apt-get upgrade

安装命令

$ sudo apt-get install packagename

卸载命令

$ sudo apt-get remove packagename

接下来安装 wget

$ sudo apt-get install wget

顺利安装后应该会出现如下提示

$ sudo apt-get install wget
正在读取软件包列表... 完成
正在分析软件包的依赖关系树  
正在读取状态信息... 完成  
下列【新】软件包将被安装:
wget
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 196 个软件包未被升级。
需要下载 282 kB 的软件包。
解压缩后会消耗掉 700 kB 的额外空间。
获取:1 http://cn.archive.ubuntu.com/ubuntu/ vivid/main wget amd64 1.16.1-1ubuntu1 [282 kB]
下载 282 kB,耗时 0秒 (517 kB/s)
正在选中未选择的软件包 wget。
(正在读取数据库 ... 系统当前共安装有 174852 个文件和目录。)
正准备解包 .../wget_1.16.1-1ubuntu1_amd64.deb  ...
正在解包 wget (1.16.1-1ubuntu1) ...
正在处理用于 install-info (5.2.0.dfsg.1-6) 的触发器 ...
正在处理用于 man-db (2.7.0.2-5) 的触发器 ...
正在设置 wget (1.16.1-1ubuntu1) ...
linuxcn@linuxcn-VirtualBox:~$

接下来要卸载 wget

$ sudo apt-get remove wget


Fedora 使用 dnf 从软件仓库中安装

配置源,将源换成国内的提升下载速度。

备份

$ cd /etc/repo
$ sudo mv /etc/yum.repos.d/fedora.repo /etc/yum.repos.d/fedora.repo.backup
$ sudo mv /etc/yum.repos.d/fedora-updates.repo /etc/yum.repos.d/fedora-updates.repo.backup

下载网易源配置文件(网易与阿里云二者选一即可)

$ sudo wget http://mirrors.163.com/.help/fedora-163.repo
$ sudo wget http://mirrors.163.com/.help/fedora-updates-163.repo

下载阿里云源配置文件(网易与阿里云二者选一即可)

$ sudo wget -O /etc/yum.repos.d/fedora.repo http://mirrors.aliyun.com/repo/fedora.repo
$ sudo wget -O /etc/yum.repos.d/fedora-updates.repo http://mirrors.aliyun.com/repo/fedora-updates.repo

清除旧缓存并生成新缓存

$ sudo dnf clean
$ sudo dnf makecache


获取 dnf 帮助

$ dnf -h

安装包

$ sudo dnf install packagename

卸载包

$ sudo dnf remove packagename

安装 wget

$ sudo dnf install wget

卸载 wget

$ sudo dnf remove wget


安装本地二进制包


Ubuntu 使用 dpkg 安装本地 deb 包

有时我们会从网上下载到 filename.deb 这种二进制包,并且这种包一般只允许 Debian 系的系统安装,这样的包我们可以通过 dpkg 命令来安装。

先了解一下 dpkg 命令

$ dpkg --help
用法:dpkg [<选项> ...] <命令>
命令:
-i|--install   <.deb 文件名> ... | -R|--recursive <目录> ...
--unpack   <.deb 文件名> ... | -R|--recursive <目录> ...
-A|--record-avail  <.deb 文件名> ... | -R|--recursive <目录> ...
--configure<软件包名> ... | -a|--pending
--triggers-only<软件包名> ... | -a|--pending
-r|--remove<软件包名> ... | -a|--pending
-P|--purge <软件包名> ... | -a|--pending
-V|--verify <软件包名> ...   检查包的完整性。
-?, --help   显示本帮助信息。
--version显示版本信息。

安装命令

$ sudo dpkg -i filename.deb

卸载命令

$ sudo dpkg -r packagename

此处仍以 wget 为例,先用 apt-get download wget 下载一个 deb 包到当前目录,笔者下载的为 wget_1.16.1-1ubuntu1_amd64.deb

用 dpkg 安装 wget

$ sudo dpkg -i ./wget_1.16.1-1ubuntu1_amd64.deb
正在选中未选择的软件包 wget。
(正在读取数据库 ... 系统当前共安装有 174852 个文件和目录。)
正准备解包 .../wget_1.16.1-1ubuntu1_amd64.deb  ...
正在解包 wget (1.16.1-1ubuntu1) ...
正在设置 wget (1.16.1-1ubuntu1) ...
正在处理用于 install-info (5.2.0.dfsg.1-6) 的触发器 ...
正在处理用于 man-db (2.7.0.2-5) 的触发器 ...

注意:上面的参数 -i 表明安装,后接要安装的 deb 包。

Tips:用 Tab 键可以进行命令和文件名的补全。

卸载可以用 apt-get

$ sudo apt-get remove packagename


Fedora 使用 rpm 安装本地 rpm 包

同样地,我们也可能下载到 filename.rpm 这样的二进制软件包,此时我们可以用 rpm 命令安装。

获取帮助

$ rpm --help

此处笔者就下一个 wget 的 rpm 包作示例

$ dnf download wget  # 得到名为 wget-1.16.3-1.fcxx.x86_64.rpm 的二进制软件包

rpm 安装命令

$ sudo rpm -i filename.rpm   # -i 为安装参数

$ sudo rpm -i ./wget-1.16.3-1.fcxx.x86_64.rpm


从源码编译安装

有些时候我们会发现有的软件包并没有包含在软件仓库中,也没有可用的二进制包,这时候我们可以尝试从源码编译安装,我在此处仍以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   m4msdostestenv
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 安装软件包的一些方法, Ubuntu 部分较详细,限于篇幅原因 Fedora 只列举了相应的 安装 与卸载 命令,但可通过 man , dnf -h 或 rpm --help 获取帮助,此处不再赘述。而从源码编译安装,则展示了一个遇到问题,解决问题的过程,由于编译 wget 较简单,此处也未遇到特别难处理的问题,但这清晰的展示了一个编译安装的过程,遇到错误,我们不要害怕,而要认真阅读给出的错误信息,借此搜索,提问,寻求解答。另外 Linux 下遇到问题首先要自己善于去搜索,提问,解决问题得到答案并归纳总结,不然是很难学到知识的。


通过"task"安装软件包的方法:http://www.linuxdiyf.com/linux/9924.html

查看Linux是以哪种方式安装软件包:http://www.linuxdiyf.com/linux/3701.html

安装软件包方式:sudo apt-get和sudo tasksel有何不同:http://www.linuxdiyf.com/linux/9933.html

27个Linux下软件包管理工具DNF命令例子:http://www.linuxdiyf.com/linux/12744.html

Linux系统入门学习:如何在Ubuntu上检查一个软件包是否安装:http://www.linuxdiyf.com/linux/10352.html