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^'
将评估以下内容:
- 在缓存(包列表文件)中搜索所有“任务:”字段,并使用“lamp-server”获取所有内容。
以标准方式安装这些软件包:
sudo apt-get install package1 package2...
Taskel 方式
sudo tasksel install lamp-server
将在以下配置文件之一中查找名为“lamp-server”的任务/usr/share/tasksel/**/*.desc
:
- 在配置文件中搜索名为“lamp-server”的“任务:”字段。
- 检查所有先决条件是否可用(“密钥:”字段),如果未安装,则记住它们。
- 选择选择软件包的方法(“软件包:”字段)。如果这是“列表”,则只需按名称安装以下软件包即可。
- 读取以下所有包名称并将其传递给之前选择的方法来生成包名称。
- 查找
/usr/lib/tasksel/info/lamp-server.preinst
。如果存在,则执行此脚本。 使用以下命令通过 apt-get 安装软件包:
debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
查找
/usr/lib/tasksel/info/lamp-server.postinst
。如果存在,则执行此脚本。
结论
taskel 在处理和选择任务方面更强大。它可以在安装/删除任务之前/之后执行额外的脚本。最大的好处是:您可以非常轻松地修改任务并创建新任务。编辑官方软件包列表文件时,不可能没有缺点(有效签名)。
回到您的第一个问题:
在您的特殊情况下,这两个命令几乎是等效的(假设您已启用APT::Install-Recommends
和)。唯一的区别是和依赖项APT::Get::AutomaticRemove
的扩展包状态(使用普通的 apt-get 设置为“手动安装”)。mysql-server
apache2
那么元包又如何呢?
如果您不使用taskel的功能,例如选择任务(在安装时特别有用)和在某些任务块之前和之后执行额外命令,那么任务与元包非常相似。区别在于:任务未在APT缓存中注册为包。
因此,如果您卸载一个任务依赖项,其他任务依赖项不会被标记为自动安装,因为它们是明确安装的。如果您卸载元包,依赖项将被删除,autoremove
因为它们的扩展包状态为“自动安装”(如果不是手动安装)。
笔记:Debian 中的所有分布式任务都会安装一个名为的元包task-TASKNAME
。
举个例子:
sudo apt-get install kubuntu-desktop
- 将安装元包
kubuntu-desktop
。依赖项是“自动安装”。
- 将安装元包
sudo apt-get install kubuntu-desktop^
- 将选择所有带有任务“kubuntu-desktop”标签的软件包。它们都是 metapackage 的依赖项
kubuntu-desktop
。它们都被标记为“手动安装”。
- 将选择所有带有任务“kubuntu-desktop”标签的软件包。它们都是 metapackage 的依赖项
sudo tasksel install kubuntu-desktop
- 在安装任务包之前请确保 X 已经安装。
- 将安装元包
kubuntu-desktop
。依赖项是“自动安装”。