apt-get 命令是 Debian Linux 发行版中的 APT 软件包管理工具。所有基于 Debian 的发行都使用这个包管理系统。deb 包可以把一个应用的文件包在一起,就如同 Windows 上的安装文件。
apt-get 命令
-
apt-get update:
从 /etc/apt/source.list 文件定义的源中去同步包的索引文件,这个命令并没有更新软件,而是获取软件状态
-
apt-get upgrade:
根据 apt-get update 命令同步好的文件更新所有的软件到最新,如果有相依性的问题,而此相依性需要安装其它新的 package 或影响到其它 package 的相依性时,此 package 就不会被升级,会保留下来。
-
apt-get dist-upgrade
和 apt-get 类似,可以聪明的解决相依性的问题,如果有相依性问题,需要安装/移除新的 package,就会试着去安装/移除它,所以通常这个会被认为是有点风险的升级。
-
apt-get install packagename
安装或者更新一个软件包
apt-get install nginx=1.10.1-1+netease5~wheezy # 指定安装的版本
apt-get install nginx # 安装和更新最新的版本
apt-get install -s nginx # 模拟安装时会安装哪些软件列表,不会真实安装
-
apt-get remove packagename
删除一个软件包,保留配置文件
-
apt-get –purge remove packagename
删除一个软件包,删除配置文件
-
apt-get autoclean apt
会把已装或已卸的软件都备份在硬盘上,所以有足够空间的话,可以让这个命令来删除你已经删掉的软件
-
apt-get autoclean apt
这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的
如何查询包的版本
- 通过网站查询:https://packages.ubuntu.com
- apt-cache madison packagename 列出当前所有源的版本
- apt-cache policy packagename 列出当前所有源版本,比 apt-cache 更详细些
- aptitude versions packagename 列出当前所有源版本,并且可以模糊搜索包名称,并说明当前是否已经安装
- apt-show-versions -a packagename
软件源
Debian 系统中软件源其实本质上就是一个软件仓库,在这个仓库中包含了 Debian 系统中各种软件,需要什么软件,只要记得正确的软件名,就可以非常简单地通过 sudo apt-get install 命令进行安装。
软件源分为官方软件源和 PPA 软件源,Debian 官方软件源中包含了 Debian 系统中所用到的绝大部分的软件,它对应的源列表是 /etc/apt/sources.list。PPA 软件源即 Personal Package Archives(个人软件包档案)。有些软件没有被选入 Debian 官方软件仓库,为了方便 Debian 用户使用,Launchpad 提供了 PPA,允许用户建立自己的软件仓库,自由的上传软件。PPA也被用来对一些打算进入Ubuntu官方仓库的软件,或者某些软件的新版本进行测试。
/etc/apt/sources.list 和 /etc/apt/sources.list.d/ 用来设置软件源地址,/etc/apt/sources.list.d/ 是一个目录,便于分别管理不同的类型的软件源,里面的文件必须以 .list 结尾才能被认为是软件源设置文件, 由于默认的官方软件源一般在国外,下载速度非常慢,我们经常需要替换成国内的软件源。国内软件源地址,一般我们可以通过 ping 命令测试每个站点的网速。
如何添加 PPA 软件源
通过 add-apt-repository 命令添加 PPA 软件源,添加后放到 /etc/sources.list.d/ 下面
添加 PPA 软件源的命令:sudo add-apt-repository ppa:user/ppa-name
删除 PPA 软件源的命令:sudo add-apt-repository --remove ppa:user/ppa-name
sources.list 文件格式
/etc/apt/sources.list 中软件源格式一般如下面所示:
deb http://repo.163.org/netease wheezy main contrib non-free
deb-src http://repo.163.org/netease wheezy main contrib non-free
deb http://repo.hz.netease.com/netease wheezy main contrib non-free
deb-src http://repo.hz.netease.com/netease wheezy main contrib non-free
- 第一列分为 deb 或者 deb-src,前者表示软件的位置,后者表示软件源代码的位置
- 第二列表示的源镜像的 url
- 第三列表示对应的 debian 版本号
对于 debian 来说,每个稳定发行版都会有一个代号,如 debian 6 对应 squeeze,debian 7 对应 wheezy,debian 8 对应 jessie,debian 9 对应 stretch,debian 10 对应 buster
- oldstable 顾名思义,就是以前的稳定发行版了。
- stable 是指现在的稳定发行版
- testing 指目前还暂时处于测试阶段的 debian 发行版
- unstable 那就是不稳定版本了
- 第四列表示软件包类型,可以是一个或者多个:
main # Debian 里最基本及主要且符合自由软件规范的软件 ( packages )。
contrib # 这里头软件虽然可以在 Debian 里头运作,即使本身属于自由软件但多半却是相依于非自由 ( non-free ) 软件。
non-free # 不属于自由软件范畴的软件。
non-us # 这个分类里头的软件都来自非美国地区,当中可能有牵扯到专利、加密..等等问题。
marillat # 对应 Christian Marillat 的软件仓库,包括mplayer, transcode等。
rareware # 对应 rarewares.org 的软件仓库, 包括很多音效程序,如lame, musepack, beep media player等。
ustc # 对应 debian@ustc 维护的一些软件包,如 mule-gbk, gaim-openq, scim, stardict dicts, patched xpdf, irssi, xmms。
java # 对应 Blackdown java。包括 j2re, j2sdk ,mozilla java plugin。
firefly # 对应打过firefly补丁的包,包括 fontconfig mozilla mozilla-firefox pango1.0 qt-x11-free xft
misc # 对应其它无分类的包,包括 nvidia-kernel, winex3, rox, chmsee等
一般在修改了 sources.list 文件后,都需要运行 sudo apt-get update 和 sudo apt-get dist-upgrade 来更新软件
关于系统升级
一般系统升级时,都需要修改 sources.list 中的版本,然后再更新,以 Debian 7 升级到 Debian 8 为例,要经过以下步骤:
- 首先将系统升级到最新状态
apt-get update
apt-get upgrade
- 然后修改 sources.list
# 替换版本号
sed -i 's/wheezy/jessie/g' /etc/apt/sources.list
- 再次运行升级
apt-get update && apt-get dist-upgrade
- 最后重启完成
reboot