ger*_*ijk 45 package-management apt tasksel metapackages
过去我一直习惯于tasksel
安装所谓的“任务”。但是,这似乎已集成到 APT 中:
apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]
Run Code Online (Sandbox Code Playgroud)
并且我可以通过^
向其附加插入符号 ( ) 来安装此类“任务” ,如下所示:
sudo apt-get install lamp-server^
Run Code Online (Sandbox Code Playgroud)
这是否等同于以下内容?
sudo tasksel install lamp-server
Run Code Online (Sandbox Code Playgroud)
哪个是首选?
此外,元包在这里是如何发挥作用的?有些任务似乎不是元包,而有些则是:
apt-cache show lamp-server
N: Unable to locate package lamp-server
apt-cache show kubuntu-desktop
Package: kubuntu-desktop
[...]
Task: kubuntu-desktop
Run Code Online (Sandbox Code Playgroud)
那么,使用最后一个示例,以下三种可能的安装方式有什么区别?
sudo apt-get install kubuntu-desktop
sudo apt-get install kubuntu-desktop^
sudo tasksel install kubuntu-desktop
Las*_*all 40
简而言之:tasksel 和 apt-get 安装任务的过程是有区别的。
看看你的例子:
sudo apt-get install 'lamp-server^'
将评估执行以下操作:
以标准方式安装这些包:
sudo apt-get install package1 package2...
Run Code Online (Sandbox Code Playgroud)sudo tasksel install lamp-server
将在以下配置文件之一中查找名为“lamp-server”的任务/usr/share/tasksel/**/*.desc
:
/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 ...
Run Code Online (Sandbox Code Playgroud)寻找/usr/lib/tasksel/info/lamp-server.postinst
. 如果存在,则执行此脚本。
tasksel 在处理和选择任务方面更强大。它可以在安装/删除任务之前/之后执行额外的脚本。最大的好处是:您可以非常轻松地修改任务和创建新任务。不可能在没有缺点的情况下编辑官方包列表文件(有效签名)。
回到你的第一个问题:
在你的特殊情况下,这两个命令几乎是等效的(假设你同时启用了APT::Install-Recommends
和APT::Get::AutomaticRemove
)。唯一的区别是扩展包状态mysql-server
和apache2
依赖项(使用普通 apt-get 设置为“手动安装”)。
如果您不使用 tasksel 的功能,例如选择任务(在安装时特别有用)和在某些任务块之前和之后执行额外的命令,那么任务与元包非常相似。区别在于:一个任务没有在APT缓存中注册为一个包。
因此,如果您卸载一个任务依赖项,则其他任务依赖项不会被标记为自动安装,因为它们是明确安装的。如果您卸载元包,则依赖项将被删除,autoremove
因为它们的扩展包状态为“自动安装”(如果未手动安装)。
注意: Debian 中的所有分布式任务都安装一个名为task-TASKNAME
.
举你的例子:
sudo apt-get install kubuntu-desktop
kubuntu-desktop
。依赖项是“自动安装的”。sudo apt-get install kubuntu-desktop^
kubuntu-desktop
。它们都被标记为“手动安装”。sudo tasksel install kubuntu-desktop
kubuntu-desktop
。依赖项是“自动安装的”。