新进入 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 一样通过点击几个按钮,轻松实现软件包安装。下图为打开软件中心之后的图,左边是一些分类,下面则是一些推荐的软件包。
Ubunutu 软件中心
点击已安装可以查看安装在本机的软件包,并且可以在此管理它们,如图选中 Firefox 并点击卸载,此时会提示你输入密码,输入完成且正确就会卸载你所选的程序。
已安装
接下来在搜索框搜索 wget 你可以看到如图所示的东西,并且只需点击安装并正确输入密码即可。
安装新程序
Fedora 软件中心
点开如图所示的图标就可以打开 Fedora 的软件中心。
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