Tasksel ou Apt simples?
No passado, eu sempre costumava tasksel
instalar as chamadas "tarefas". Parece, no entanto, que isso foi integrado ao APT:
apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]
e que eu posso instalar essas "tarefas" anexando um sinal de intercalação ( ^
) a ele, assim:
sudo apt-get install lamp-server^
Isso é equivalente ao seguinte?
sudo tasksel install lamp-server
E qual é o preferido?
Metapacotes
Além disso, como os metapacotes entram em jogo aqui? Algumas tarefas parecem não ser um metapacote, enquanto outras são:
apt-cache show lamp-server
N: Unable to locate package lamp-server
apt-cache show kubuntu-desktop
Package: kubuntu-desktop
[...]
Task: kubuntu-desktop
Portanto, usando o último exemplo, qual é a diferença entre as três maneiras possíveis de instalar?
sudo apt-get install kubuntu-desktop
sudo apt-get install kubuntu-desktop^
sudo tasksel install kubuntu-desktop
apt
package-management
tasksel
metapackages
gertvdijk
fonte
fonte
apt-get install -s lubuntu-desktop
versusapt-get install -s lubuntu-desktop^
. Neste último, você verá algo adicional como este: Nota, selecionando 'policykit-1-gnome' para a tarefa 'lubuntu-desktop' / Nota, selecionando 'gnome-keyring' para a tarefa 'lubuntu-desktop' / Nota, selecionando 'libplist1' para a tarefa 'lubuntu-desktop' / Nota, selecionando 'aspell-pt' para a tarefa 'lubuntu-desktop' / Nota, selecionando 'libsdl1.2debian' para a tarefa 'lubuntu-desktop' / Portanto, neste caso em particular , Não tenho certeza de que a "cenoura" seja melhor.Respostas:
Em suma: Não é uma diferença entre tasksel e processo de instalação apt-get de tarefas.
Olhando para o seu exemplo:
O jeito apt-get
sudo apt-get install 'lamp-server^'
avaliará para fazer o seguinte:Instale esses pacotes da maneira padrão:
O modo de tarefas
sudo tasksel install lamp-server
procurará uma tarefa chamada "lamp-server" em um de seus arquivos de configuração em/usr/share/tasksel/**/*.desc
:/usr/lib/tasksel/info/lamp-server.preinst
. Se existir, execute este script.Instale os pacotes com o apt-get usando o seguinte comando:
Procure
/usr/lib/tasksel/info/lamp-server.postinst
. Se existir, execute este script.Conclusão
taskel é mais poderoso no processamento e seleção de tarefas. Pode executar scripts extras antes / após a instalação / remoção de tarefas. E o maior benefício: você pode modificar tarefas e criar novas com muita facilidade. Não é possível editar um arquivo oficial da lista de pacotes sem inconvenientes (assinatura válida).
Voltando à sua primeira pergunta:
no seu caso especial, os dois comandos são quase equivalentes (suponha que você tenha ativado os dois
APT::Install-Recommends
eAPT::Get::AutomaticRemove
). A única diferença é o estado estendido do pacotemysql-server
e asapache2
dependências (definido como "instalado manualmente" com o apt-get simples).E os metapacotes?
Se você não usar os recursos do tasksel, como selecionar tarefas (especialmente úteis na instalação) e executar comandos extras antes e depois de alguns blocos de tarefas, uma tarefa será muito semelhante a um metapacote. A diferença é: Uma tarefa não está registrada como um pacote no cache do APT.
Portanto, se você desinstalar uma dependência de tarefa, outras tarefas não serão marcadas como instaladas automaticamente porque foram explicitamente instaladas. Se você desinstalar um metapacote, as dependências serão removidas
autoremove
porque o estado do pacote estendido é "instalado automaticamente" (se não for instalado manualmente).Nota: Todas as tarefas distribuídas no Debian instalam um metapacote chamado
task-TASKNAME
.Dando seu exemplo:
sudo apt-get install kubuntu-desktop
kubuntu-desktop
. As dependências são "instaladas automaticamente".sudo apt-get install kubuntu-desktop^
kubuntu-desktop
. Todos eles estão marcados como "instalados manualmente".sudo tasksel install kubuntu-desktop
kubuntu-desktop
. As dependências são "instaladas automaticamente".fonte