通常 Linux 上的软件安装主要有四种方式:
- 在线安装
- 从磁盘安装deb软件包
- 从二进制软件包安装
- 从源代码编译安装
而大多数软件包会采用多种方式发布软件,所以我们常常需要全部掌握这几种软件安装方式,以便适应各种环境。
在 Windows
中,想要安装一个软件,我们需要在网上去下载对应软件的安装包,接着安装的时候就是不断的去点击下一步。但是在 Linux
下,一个命令加回车,等待一下,软件就安装好了,这就是方便的在线安装软件的方式。
在学习这种安装方式之前有一点需要说明的是,在不同的linux发行版上面在线安装方式会有一些差异包括使用的命令及它们的包管理工具,因为我们的开发环境是基于ubuntu的,所以这里我们涉及的在线安装方式将只适用于ubuntu发行版,或其它基于ubuntu的发行版如国内的ubuntukylin(优麒麟),ubuntu又是基于debian的发行版,它使用的是debian的包管理工具dpkg,所以一些操作也适用与debian。而在一些采用其它包管理工具的发行版如redhat,centos,fedora等将不适用(redhat和centos使用rpm)。
体验一下
比如我们想安装一个软件,名字叫做 w3m
(w3m是一个命令行的简易网页浏览器):
$ sudo apt-get install w3m
$ w3m www.baidu.com //执行
注意:如果你在安装一个软件之后,无法立即使用Tab
键补全这个命令,你可以尝试先执行source ~/.zshrc
,然后你就可以使用补全操作。
apt包管理工具
APT
是Advance Packaging Tool
(高级包装工具)的缩写,是Debian及其派生发行版的软件包管理器,APT可以自动下载,配置并且安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。APT最早被设计成dpkg的前端,用来处理deb格式的软件包。现在经过APT-RPM组织修改,APT已经可以安装在支持RPM的系统管理RPM包。这个包管理器包含以 apt- 开头的多个工具,如 apt-get apt-cache apt-cdrom
等,在Debian系列的发行版中使用。
当你在执行安装操作时,首先apt-get 工具会在本地的一个数据库中搜索关于 w3m 软件的相关信息,并根据这些信息在相关的服务器上下载软件安装,这里大家可能会一个疑问:既然是在线安装软件,为啥会在本地的数据库中搜索?要解释这个问题就得提到几个名词了:
- 软件源镜像服务器
- 软件源
我们需要定期从服务器上下载一个软件包列表,使用 sudo apt-get update
命令来保持本地的软件包列表是最新的(有时你也需要手动执行这个操作,比如更换了软件源),而这个表里会有软件依赖信息的记录,对于软件依赖,我举个例子:我们安装 w3m 软件的时候,而这个软件需要 libgc1c2
这个软件包才能正常工作,这个时候 apt-get 在安装软件的时候会一并替我们安装了,以保证 w3m 能正常的工作(软件之间的依赖)。
apt-get
apt-get
是用于处理 apt包的公用程序集,我们可以用它来在线安装、卸载和升级软件包等,下面列出一些apt-get包含的常用的一些工具:
下面是一些apt-get
常用的参数:
安装软件包
关于安装软件包,只需apt-get install <软件包名>
即可,除了这一点,我们还应该掌握的是如何重新安装软件包。 很多时候我们需要重新安装一个软件包,比如你的系统被破坏,或者一些错误的配置导致某软件无法正常工作。
你可以使用如下方式重新安装,如重新安装w3m:
$ sudo apt-get --reinstall install w3m
另一个你需要掌握的是,如何在不知道软件包完整名的时候进行安装。通常我们是使用Tab键补全软件包名,后面会介绍更好的方法来搜索软件包。有时候你需要同时安装多个软件包,你还可以使用正则表达式匹配软件包名进行批量安装。
软件升级
- 更新软件源
$ sudo apt-get update
- 升级没有依赖问题的软件包
$ sudo apt-get upgrade
- 升级并解决依赖关系(一些软件运行需要以其他软件为基础)
$ sudo apt-get dist-upgrade
卸载软件
如果你需要卸载w3m
,那么简单!同样是一个命令加回车 sudo apt-get remove w3m
,系统会有一个确认的操作,之后这个软件便“滚蛋了”。
或者:
- 配置文件也一块移除
$ sudo apt-get purge w3m
或者sudo apt-get --purge remove
- 移除不再需要的被依赖的软件包
$ sudo apt-get autoremove
软件搜索
当自己刚知道了一个软件,想下载使用,需要确认软件仓库里面有没有,就需要用到搜索功能了,命令如下:
sudo apt-cache search softname1 softname2 softname3……
apt-cache
命令则是针对本地数据进行相关操作的工具,search
顾名思义在本地的数据库中寻找有关softname1 softname2 ……
相关软件的信息。现在我们试试搜索一下之前我们安装的软件 w3m ,如图:
结果显示了4个 w3m 相关的软件,并且有相关软件的简介。
使用dpkg
学习如何使用 dpkg 从本地磁盘安装 deb 软件包。dpkg 是 Debian 软件包管理器的基础,它被伊恩·默多克创建于 1993 年。dpkg
与 RPM
十分相似,同样被用于安装、卸载和供给和 .deb 软件包相关的信息。
dpkg 本身是一个底层的工具。上层的工具,像是 APT,被用于从远程获取软件包以及处理复杂的软件包关系。"dpkg"是"Debian Package"的简写。
我们经常可以在网络上见到以deb形式打包的软件包,就需要使用dpkg命令来安装。
dpkg常用参数介绍:
使用dpkg安装deb软件包
我们先使用apt-get
加上-d
参数只下载不安装,下载emacs编辑器的deb包
,
sudo apt-get install -d emacs
下载完成后,我们可以查看/var/cache/apt/archives/
目录下的内容,如下图:
然后我们将第一个deb拷贝到 /home/shiyanlou
目录下,并使用dpkg安装:
$ cp /var/cache/apt/archives/emacs24_24.5+1-6ubuntu1.1_amd64.deb ~
安装之前参看deb包的信息
$ sudo dpkg -I emacs24_24.5+1-6ubuntu1.1_amd64.deb
如你所见,这个包还额外依赖了一些软件包,这意味着,如果主机目前没有这些被依赖的软件包,直接使用dpkg安装可能会存在一些问题,因为dpkg并不能为你解决依赖关系。
先不管那么多,使用dpkg安装
$ sudo dpkg -i emacs24_24.5+1-6ubuntu1.1_amd64.deb
跟前面预料的一样,这里你可能出现了一些错误:
我们将如何解决这个错误呢?这就要用到apt-get
了,使用它的-f
参数了,修复依赖关系的安装
$ sudo apt-get update
$ sudo apt-get -f install
没有任何错误,这样我们就安装成功了,然后你可以运行emacs程序:
查看已安装软件包的安装目录
如果你依然在纠结到底linux将软件安装到了什么地方,使用dpkg -L
查看deb包目录信息
$ sudo dpkg -L emacs24
从二进制包安装
二进制包的安装比较简单,我们需要做的只是将从网络上下载的二进制包解压后放到合适的目录(掌握Linux的目录结构),然后将包含可执行的主程序文件的目录添加进PATH
环境变量即可。
轻松一下
$ sudo apt-get update
$ sudo apt-get install bb
$ /usr/games/bb