Ubuntu包管理(未完)

Ubuntu包管理

APT:Advanced Packaging Tool

1. 关于apt

manual提到,提供包管理系统的高层次命令行接口。相对于更专门的APT工具(apt-get、apt-cache),apt是一个终端用户接口,更适合交互式选项的使用。

  • update:从所有配置的源中下载包信息。其他的操作就是根据update获得的信息来操作包。这也就是为什么在apt-install之前最好先update。
  • update:通过source.list安装当前系统所有已经安装的包的更新。如果要求满足依赖,新包被安装,但是存在的包不会移除。如果一个更新要求移除一个已安装的包,此包的更新不会执行。
  • full-upgrade:执行upgrade。如果需要对系统升级,会删除已安装的包。
  • install/reinstall/remove/purge:通过regex/glob执行对指定的一个或多个包的某一动作。
    • 包名后添加‘+’安装包,‘-’移除包。‘=’接想要安装的版本。特定版本可以在包名后添加‘/’+包对应的codename。这也会选择此包的依赖选择版本。
    • remove会移除包的所有数据,但会保留用户配置文件
    • 此类选项不会相应home目录的配置和数据。
  • autoremove:移除安装某些包时需要满足依赖关系的包,可能是依赖关系改变/需要这些依赖的安装包被移除。通过install选项显式安装的包不会提出自动移除。
  • satisfy:满足后接的字符串。也能处理冲突,使用“Conflicts”:

    apt satisfy “foo, bar (>= 1.0)” “Conflicts: baz, fuzz”

  • search:后接regex选项。在可安装包列表中搜索并显示匹配的包。要查找包含具体特征的包可用此选项。要搜索包含一个特定文件的包,尝试apt-file
  • show:显示包的信息如依赖关系、安装下载大小、可下载的来源、包内容的描述。
  • list:与dpkg-query --list相似,可以显示满足确定标准的一系列包。支持通配符。列举已安装的、可更新的、所有可安装的分别有选项–installed、–upgradeable、–all-versions
  • edit-sources:编译source.list文件

apt的所有特征适用于复杂的APT工具:apt-get、apt-cache等

2. apt_preferences

文件/etc/apt/preferences, /etc/apt/preference.d/用于控制安装包的版本。

当source.list包含的引用有多个软件包发行版本(如stable、testing)时,一个软件包的若干版本都可用于安装。APT给每个可用安装包分配了优先级。apt-get会选择最高优先级的包去安装。而APT的preferences会覆盖此默认优先级。

关于/etc/apt/preferences.d下的文件:

字母数字升序;
遵循命名规则:

  1. 没有文件扩展名,或扩展是‘pref’
  2. 只包含:连字符-、下划线_、句号.

对于上述所说的多个版本均可用的包,apt-get会下载source.list中最先列出的实例。APT preferences不会影响实例的选择,只会影响版本的选择

APT默认优先级分配

如果没有特殊版本的pref文件或entry,则优先级就是软件发行版的所属优先级。可能挑选出一个版本“the target release”(可设置在apt-get或/etc/apt/apt.conf),默认比其他版本优先级(包括设置在/etc/apt/preferences中)更高。

其他详情:manual apt_preferences

3. apt-get

处理包的命令行工具,是用户使用APT库的后端。

  • update:从软件源同步包索引文件。可用包的索引从/etc/apt/sources.list中取回。比如,使用某个Debian软件包存档,此命令会检索后缀gz的软件包文件,从而获得某些新的包、包更新的相关信息

    建议在upgrade/dist-upgrade之前执行update。

  • upgrade:从sources.list中的软件源,更新本系统已经安装的所有包的最新版。

    每次安装前应该先upgrade,让apt-get知道可安装包的最新版。

  • dist-upgrade:除了执行upgrade功能,也会处理一些新版本包的依赖问题。可能会移除一些包。
  • dselect-upgrade:与传统Debian包管理前端dselect结合,根据dselect对可安装包的状态的改变,执行一些必要动作,如:移除旧包安装新包。
  • install:后接一/多个要安装或更新的package。这里的package是包名,不是全称、(例如debian系统中,要的是apt-utils而非apt-utils_2.0.9_amd64.deb)。
    • 连字符-添加到包名后,该包会被移除;+是安装某个包;包名后跟随=和版本,用于安装指定版本的包;/加发行版本或者Archive name (stable, testing, unstable)用于选择指定的发行版本。
    • 同时,install还可用于更新指定的已安装包。它是单独更新某个包,upgrade是更新所有的已安装包。
    • ./?/*等字符可用于指定包名。

      ‘lo.*’ 能匹配到 ‘how-lo’‘lowest’。如果不希望这样匹配,可以配合使用正则表达式的$^

  • reinstall: install --reinstall的别名。
  • remove:与install相反,移除包,但保留配置文件。
  • purge:除了remove之外,配置文件也会被删除。
  • source:寻找软件包的源代码。一些可以通过source.list中的deb-src获取包的源码,下载到当前目录下。需要在source.list中配置获取源代码的来源。
    • 指定--compile,该源码会被通过dpkg-buildpackage编译成.deb后缀的二进制文件,由--host-architecture指定体系结构。--donwload使得下载的源码不会被解压。
    • 特定版本的源码,需要在源代码名称后加=和版本
  • build-dep:通过安装/删除某些包,满足要编译的源码的一些依赖。
  • satisfy:满足给定的依赖字符串。
  • check:更新包缓存和检查损坏的依赖。
  • download:下载给定的二进制包到当前路径。
  • clean:清除本地仓库的包文件,但会锁定/var/cache/apt/archives//var/cache/apt/archives/partial/下的文件。
  • autoclean:与clean相似,但是清除的是不再被下载、几乎没用的文件。
  • autoremove:移除那些之前用于满足某些安装包依赖的包,这些包现在不再需要。
  • changelog:下载一个包的更新日志,通过sensible-pager显示。默认显示安装的版本。
  • indextargets:默认显示deb822格式的数据文件列表信息,这些数据文件会被apt-get update下载。可通过--format更改输出格式。主要用于:外部工具与APT协作时获取信息的接口。

你可能感兴趣的:(#,Linux,ubuntu)