阅读 104

apt-get 包管理工具学习

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

    这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的

如何查询包的版本

  • 通过网站查询: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
复制代码

参考文献

关注下面的标签,发现更多相似文章
评论