首页 > 其他分享 >包管理

包管理

时间:2022-10-30 13:23:02浏览次数:66  
标签:get 管理 apt aptitude 软件包 foo 安装

1 软件包依赖关系

Debian 系统通过其控制文件字段中的版本化二进制依赖声明机制来提供一致的二进制软件包集合。下面有一些它们的简单定义。

  • “依赖”
    绝对的依赖,所有在这里列出的软件包都必须同时或提前安装。

  • "预依赖"

    类似于 Depends,但列出的软件包必须提前完成安装。

  • "推荐"

    这里表示一个强,但不是绝对的依赖关系 。大多数用户不会想要这个包,除非在这里列出的所有包都已经安装。

  • "建议"

    较弱的依赖。这个软件包的大多数用户可能会从安装所列的软件包中受益,但没有它们也可以有适当的功能。

  • "增强"

    这里表明一个像建议的弱依赖关系,不装也没关系。

  • "破损"

    表明一个软件包不兼容一些版本规范。一般的解决方法就是升级列出的所有软件包。

  • "冲突"

    这表明了绝对的不兼容。为了安装这个软件包必须移除所有列出的软件包。

  • "替代"

    这表明这个文件安装的文件会替代所列的软件包的文件。

  • "提供"

    表明这个软件包会提供所列的软件包所有的文件和功能。

注意
请注意,同时将 “Provides” 、“Conflicts” 和 “Replaces” 定义到一个虚拟的软件包是一个明智的配置。这确保了在任何一个时间只能安装一个提供该虚拟包的真正软件包。

2 包管理的事件流

这是 APT 提供的软件包管理的简单事件流摘要。

  1. 更新(“apt update”、“aptitude update” 或 “apt-get update”):

    从远程档案库获取档案库元数据

    重建和更新 APT 使用的本地元数据

  2. 升级(“apt upgrade” 和 “apt full-upgrade”,或 “aptitude safe-upgrade” 和 “aptitude full-upgrade”,或 “apt-get upgrade” 和 “apt-get dist-upgrade”):

    选择候选版本,它所安装的软件包通常都是最新的可用版本(例外参见 第 2.7.3 节 “调整候选版本” )

    解决软件包依赖关系

    如果候选版本与已安装的版本不同,会从远程档案库获取所选择的二进制软件包

    解包所获取的二进制软件包

    运行 preinst 脚本

    安装二进制文件

    运行 postinst 脚本

  3. 安装(“apt install ...”、“aptitude install ..." 或者 "apt-get install …” ):

    选择命令行中列出的包

    解决软件包依赖关系

    从远程服务器获取已选二进制包

    解包所获取的二进制软件包

    运行 preinst 脚本

    安装二进制文件

    运行 postinst 脚本

  4. 移除 ("apt remove …", “aptitude remove …” 或 “apt-get remove …”):

    选择命令行中列出的包

    解决软件包依赖关系

    运行 prerm 脚本

    移除已安装的文件,除了配置文件

    运行 postrm 脚本

  5. 清除 ("apt purge",“aptitude purge …” 或 “apt-get purge …”):

    选择命令行中列出的包

    解决软件包依赖关系

    运行 prerm 脚本

    移除已安装的文件,包含配置文件

    运行 postrm 脚本

3 对包管理问题的第一个回应

你应该阅读优良的官方文档。第一个阅读的文档是 Debian 特定的 “/usr/share/doc/package_name/README.Debian”。同时也应该查询 “/usr/share/doc/package_name/” 中的其它文档。如果你设置 shell 为第 1.4.2 节 “定制 bash”,输入下列命令。

$ cd package_name
$ pager README.Debian
$ mc

你可能需要安装以 “-doc” 后缀命名的对应文档软件包来获取详细的信息。

如果你在使用一个特定的软件包时出现了问题,一定要首先检查 Debian bug 跟踪系统(BTS) 网站。

4 解决特定软件包问题的主要网站

Debian bug 跟踪系统(BTS) 的主页 sensible-browser "http://bugs.debian.org/"
软件包名称已知的 bug 报告 sensible-browser "http://bugs.debian.org/package_name"
bug 编号已知的 bug 报告 sensible-browser "http://bugs.debian.org/bug_number"

使用 Google 搜索,在关键字中包含 “site:debian.org”,“site:wiki.debian.org”,“site:lists.debian.org” 等等。

当你要发送一份 bug 报告时,请使用 reportbug(1) 命令。

5 基础软件包管理操作

在 Debian 系统中有许多基于 APT 的软件包管理工具可以在 Debian 系统上进行基于仓库的软件包管理操作。
在这里,我们将介绍 3 种基本的软件包管理工具:apt,apt-get / apt-cache 和 aptitude 。

对于涉及软件包安装或更新软件包元数据的软件包管理操作,你必须有 root 权限。

1. apt vs. apt-get / apt-cache vs. aptitude

尽管 aptitude 是作者主要使用的一个非常好的可互动工具,但你应该知道下列警示:

不建议在新版本发布后在 stable Debian 系统上使用 aptitude 命令来进行跨版本的系统升级。

    建议使用"apt full-upgrade"或“apt-get dist-upgrade” 来进行这个操作。参见 Bug #411280。

aptitude命令有时候会为了testing 或 unstable Debian 系统升级清除大量软件包。

    这个情况吓坏了许多的系统管理员。请不要惊慌。

    这似乎大多数是由元软件包的依赖或推荐的软件包版本偏差造成的,例如 gnome-core。

    要解决这个问题,可以在 aptitude 命令菜单中选择 “取消待执行的动作” ,退出 aptitude,并使用 “apt full-upgrade”。

2. apt-get 和 apt-cache 是最基础 的基于 APT 的软件包管理工具。

  • apt-get 和 apt-cache 只提供命令行用户界面。

  • apt-get 是进行跨版本的主系统升级等操作的最合适工具。

  • apt-get 提供了一个强大的软件包依赖解析器。

  • apt-get 对硬件资源的要求不高。它消耗更少的内存并且运行速度更快。

  • apt-cache 提供了一个 标准的正则表达式来搜索软件包名称和描述。

  • apt-get 和 apt-cache 可以使用 /etc/apt/preferences 来管理软件包的多个版本,但这非常繁琐。

3. apt 命令是一个用于软件包管理的高级命令行界面。它基本上是 apt-get、apt-cache 和类似命令的一个封装,被设计为针对终端用户交互的界面,它默认启用了某些适合交互式使用的选项。

apt 工具在用户使用 apt install 安装软件包时提供了一个友好的进度条。

在成功安装下载的软件包后,apt 将默认删除缓存的 .deb 软件包。

提示
建议用户使用新的 apt(8) 命令用于 交互式的使用场景,而在 shell 脚本中使用 apt-get(8) 和apt-cache(8) 命令。

4. aptitude 命令是最通用的基于 APT 的软件包管理工具。

  • aptitude 提供了一个全屏的交互式文本用户界面。

  • aptitude 同样也提供了一个命令用户界面。

  • aptitude 是用于日常软件包管理(例如检查已安装的软件包和搜索可用的软件包)的最合适工具。

  • aptitude 对硬件资源的要求更高。它消耗更多的内存并且运行速度更慢。

  • aptitude 提供一个增强的正则表达式来搜索所有的软件包元数据。

  • aptitude 可以管理软件包的多个版本,并且不使用 /etc/apt/preferences,这会十分直观。

6 命令行中的基础软件包管理操作

下面是使用 apt(8), aptitude(8) 和 apt-get(8) / apt-cache(8) 的命令行基本软件包管理操作。

表 使用 apt(8), aptitude(8) 和 apt-get(8) / apt-cache(8) 的命令行基本软件包管理操作

apt 语法 aptitude 语法 apt-get / apt-cache 语法 说明
apt update aptitude update apt-get update 更新软件包档案库元数据
apt install foo aptitude install foo apt-get install foo 安装 “foo” 软件包的候选版本以及它的依赖
apt upgrade aptitude safe-upgrade apt-get upgrade 安装已安装的软件包的候选版本并且不移除任何其它的软件包
apt full-upgrade aptitude full-upgrade apt-get dist-upgrade 安装已安装的软件包的候选版本,并且需要的话会移除其它的软件包
apt remove foo aptitude remove foo apt-get remove foo 移除 “foo” 软件包,但留下配置文件
apt autoremove N/A apt-get autoremove 移除不再需要的自动安装的软件包
apt purge foo aptitude purge foo apt-get purge foo 清除 “foo” 软件包的配置文件
apt clean aptitude clean apt-get clean 完全清除本地仓库的软件包检索文件
apt autoclean aptitude autoclean apt-get autoclean 清除本地仓库中过时软件包的软件包检索文件
apt show foo aptitude show foo apt-cache show foo 显示 “foo” 软件包的详细信息
apt search 正则表达式 aptitude search regex apt-cache search regex 搜索匹配 regex 的软件包
N/A aptitude why regex N/A 解释匹配 regex 的软件包必须被安装的原因
N/A aptitude why-not regex N/A 解释匹配 regex 的软件包不必安装的原因
N/A aptitude search '~i!~M' apt-mark showmanual 列出手动安装的软件包

apt / apt-get 和 aptitude 能够混用,没有大问题。

“aptitude why regex” 可以通过 “aptitude -v why regex” 列出更多的信息。类似的信息可以通过"apt rdepends package" 或 “apt-cache rdepends package” 获取。

当 aptitude 命令在命令行模式下启动后遇到了一些问题(例如软件包冲突),你可以在之后的提示中按下 “e” 键切换到全屏的交互模式。

注意
虽然 aptitude 命令提供了丰富的功能,例如增强的软件包解析器,但它的复杂程度导致了(或可能导致)一些退步,例如 Bug #411123、Bug #514930 及 Bug #570377。如有疑问,请使用 apt,apt-get 和 apt-cache 命令来替代 aptitude 命令。

你可以在 “aptitude” 后面使用的命令选项。

标签:get,管理,apt,aptitude,软件包,foo,安装
From: https://www.cnblogs.com/namevt/p/16841073.html

相关文章

  • 删掉Win11 22h2文件管理器中的 “主文件夹”
    Win1122h2升级后,文件管理器左侧多了一个"主文件夹"的链接,没啥用还占位置,之前一直较忙没有管它,今天研究了一下,可以通过注册表干掉它:WindowsRegistryEditorVersion5.......
  • 10.用户资料管理(查询和修改)
    用户资料管理(查询和修改)一、查询/***根据用户id查询UserInfo1.请求路径:/users2.请求参数:请求头的Authorization:token(必须),用户id:userID(非必须)3.响应数据:UserIn......
  • K8S入门篇-权限控制管理
    一、RBAC-基于角色的权限控制  范例1:聚合的权限 Aggregate创建一个clusterrolekind:ClusterRoleapiVersion:rbac.authorization.k8s.io/v1metadata:name:......
  • 分区内存管理分区选择法
    1.分区内存管理:把主存分为一段一段的,每一段的空间要比一页小很多,这种方法在空间利用率上比业式管理高很多,但有另外一个缺点:一个程序片段可能会被分为几十段,这样很多时间就......
  • HCIA-ICT实战基础09-远程接入安全管理
    HCIA-ICT实战基础-远程接入安全管理目录AAA概述AAA配置实现telnet原理与配置Stelnet(华为ssh的另一种称呼)配置1AAA概述1.1基本概念AAA是Authentication(认证)、......
  • VueX状态管理
    目录总览:一、VueX概念1.VueX的概念Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可......
  • 最新php多商户多仓库带扫描云进销存系统ERP管理系统Saas营销版无限商户源码
    1、电脑端+手机端,手机实时共享,手机端一目了然。2、多商户Saas营销版无限开商户,用户前端自行注册,后台管理员审核开通3、管理员开通商户,可以设置商户到期时间、权限等等,无......
  • 21级期中考试:校园社团活动管理系统
    昨天刚进行了期中考试,考的和19级期中差不多,以下是我的代码和一些体会,顺便写一下思路(没人讲,自己看太难受了)首先,基本思路都一样,就是增删改查,第一步要做的就是建一个网络界面......
  • test校园社团活动管理系统
    一、题目校园社团活动管理系统(20分)1、项目需求:校园社团作为高校课外活动的重要组成部分,发展十分迅速,也受到越来越多学生的欢迎,社团规模、数量等都在日益增长,社团活动也......
  • 管理篇:测试Leader应该做哪些事
    https://www.cnblogs.com/imyalost/p/8620579.html一、负责测试组的工作组织和管理1.参加软件产品开发前的需求调研和分析;2.根据需求,概要设计和开发计划编写项目总体测......