首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用任务组、APT中的任务还是安装常规的元包?

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

Ask Ubuntu用户
提问于 2013-02-06 17:11:31
回答 1查看 25.4K关注 0票数 47

Tasksel还是普通Apt?

在过去,我总是使用tasksel来安装所谓的“任务”。然而,这似乎已被纳入防止酷刑协会:

代码语言:javascript
复制
apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]

并且我可以通过在其上附加一个插入符(^)来安装这样的“任务”,如下所示:

代码语言:javascript
复制
sudo apt-get install lamp-server^

这是否相当于以下内容?

代码语言:javascript
复制
sudo tasksel install lamp-server

哪一种更好?

Metapackages

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

代码语言:javascript
复制
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
EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2013-02-17 02:38:36

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

看看你的例子:

The apt-get way

sudo apt-get install 'lamp-server^'将评估执行以下操作:

  1. 搜索缓存(包列表文件)的所有“任务:”字段,并获得所有与“灯-服务器”。
  2. 以标准方式安装这些软件包: sudo apt-get Install package1 package2.

任务组方式

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

  1. 搜索配置文件中的"Task:“字段,名为"lamp-server”。
  2. 检查所有先决条件是否可用("Key:“字段),如果没有安装,请记住它们。
  3. 选择方法来选择包(" packages :“字段)。如果这个ist“列表”,只需按名称安装以下软件包。
  4. 读取以下所有包名,并将其传递给以前选择的方法以生成包名。
  5. 去找/usr/lib/tasksel/info/lamp-server.preinst。如果它存在,请执行此脚本。
  6. 使用以下命令安装带有apt-get的软件包:debconf APT-progress get -q -y -o APT::Install -推荐= -o APT::Get::AutomaticRemove=true package1 package2 .
  7. 去找/usr/lib/tasksel/info/lamp-server.postinst。如果它存在,请执行此脚本。

结论

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

回到你的第一个问题:

在特殊情况下,这两个命令几乎是等价的(假设您同时启用了APT::Install-RecommendsAPT::Get::AutomaticRemove)。唯一的区别是mysql-serverapache2依赖项的扩展包状态(通过普通apt设置为“手动安装”)。

和元文件包呢?

如果您不使用tasksel的特性,比如选择任务(特别有助于安装),以及在某些任务块之前和之后执行额外的命令,那么任务非常类似于元打包。不同之处在于:任务没有注册为APT缓存中的包。

因此,如果您卸载一个任务依赖项,其他任务dep就不会被标记为自动安装,因为它们是明确安装的。如果卸载元打包,则依赖项将使用autoremove删除,因为它们的扩展包状态是“自动安装”(如果不是手动安装的话)。

注意: Debian中的所有分布式任务都安装了一个名为task-TASKNAME的元包。

举你的例子:

  1. sudo apt-get install kubuntu-desktop
    • 将安装元包kubuntu-desktop。依赖项是“自动安装”。

  2. sudo apt-get install kubuntu-desktop^
    • 将选择所有带有任务标记的包“kubuntu-桌面”。这些都是元打包kubuntu-desktop的依赖项。它们都被标记为“手动安装”。

  3. sudo tasksel install kubuntu-desktop
    • 在安装任务包之前,确保安装了X。
    • 将安装元包kubuntu-desktop。依赖项是“自动安装”。
票数 44
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/252056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档