我应该使用 APT 中的 taskel、任务还是安装常规元包?

我应该使用 APT 中的 taskel、任务还是安装常规元包?

Tasksel 还是普通的 Apt?

过去我总是习惯tasksel安装所谓的“任务”。不过,这似乎已经集成在 APT 中了:

apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]

^我可以通过在其后附加插入符号 ( ) 来安装此类“任务” ,如下所示:

sudo apt-get install lamp-server^

这相当于以下内容吗?

sudo tasksel install lamp-server

哪一个更受欢迎?

元包

此外,元包在这里如何发挥作用?有些任务似乎不是元包,而其他任务则是:

apt-cache show lamp-server
N: Unable to locate package lamp-server

apt-cache show kubuntu-desktop
Package: kubuntu-desktop
[...]
Task: kubuntu-desktop

那么,使用最后一个例子,以下三种可能的安装方式有什么区别?

  • sudo apt-get install kubuntu-desktop
  • sudo apt-get install kubuntu-desktop^
  • sudo tasksel install kubuntu-desktop

答案1

简而言之:taskel 和 apt-get 任务的安装过程有区别。

看看你的例子:

apt-get 方式

sudo apt-get install 'lamp-server^'将评估以下内容:

  1. 在缓存(包列表文件)中搜索所有“任务:”字段,并使用“lamp-server”获取所有内容。
  2. 以标准方式安装这些软件包:

    sudo apt-get install package1 package2...
    

Taskel 方式

sudo tasksel install lamp-server将在以下配置文件之一中查找名为“lamp-server”的任务/usr/share/tasksel/**/*.desc

  1. 在配置文件中搜索名为“lamp-server”的“任务:”字段。
  2. 检查所有先决条件是否可用(“密钥:”字段),如果未安装,则记住它们。
  3. 选择选择软件包的方法(“软件包:”字段)。如果这是“列表”,则只需按名称安装以下软件包即可。
  4. 读取以下所有包名称并将其传递给之前选择的方法来生成包名称。
  5. 查找/usr/lib/tasksel/info/lamp-server.preinst。如果存在,则执行此脚本。
  6. 使用以下命令通过 apt-get 安装软件包:

    debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
    
  7. 查找/usr/lib/tasksel/info/lamp-server.postinst。如果存在,则执行此脚本。

结论

taskel 在处理和选择任务方面更强大。它可以在安装/删除任务之前/之后执行额外的脚本。最大的好处是:您可以非常轻松地修改任务并创建新任务。编辑官方软件包列表文件时,不可能没有缺点(有效签名)。

回到您的第一个问题:
在您的特殊情况下,这两个命令几乎是等效的(假设您已启用APT::Install-Recommends和)。唯一的区别是和依赖项APT::Get::AutomaticRemove的扩展包状态(使用普通的 apt-get 设置为“手动安装”)。mysql-serverapache2

那么元包又如何呢?

如果您不使用taskel的功能,例如选择任务(在安装时特别有用)和在某些任务块之前和之后执行额外命令,那么任务与元包非常相似。区别在于:任务未在APT缓存中注册为包。
因此,如果您卸载一个任务依赖项,其他任务依赖项不会被标记为自动安装,因为它们是明确安装的。如果您卸载元包,依赖项将被删除,autoremove因为它们的扩展包状态为“自动安装”(如果不是手动安装)。
笔记:Debian 中的所有分布式任务都会安装一个名为的元包task-TASKNAME

举个例子:

  1. sudo apt-get install kubuntu-desktop
    • 将安装元包kubuntu-desktop。依赖项是“自动安装”。
  2. sudo apt-get install kubuntu-desktop^
    • 将选择所有带有任务“kubuntu-desktop”标签的软件包。它们都是 metapackage 的依赖项kubuntu-desktop。它们都被标记为“手动安装”。
  3. sudo tasksel install kubuntu-desktop
    • 在安装任务包之前请确保 X 已经安装。
    • 将安装元包kubuntu-desktop。依赖项是“自动安装”。

相关内容