Devo usar o taskel, tarefas no APT ou instalar metapacotes regulares?

37

Tasksel ou Apt simples?

No passado, eu sempre costumava taskselinstalar 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
gertvdijk
fonte
2
Veja a saída de apt-get install -s lubuntu-desktopversus apt-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.
Mais leitura aqui: askubuntu.com/a/249373/25656
11
#WARNING sobre tasksel: nunca mais usá-lo para remover tarefas - ver relatório de bug no Launchpad
guntbert

Respostas:

36

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:

  1. Pesquise no cache (arquivos da lista de pacotes) todos os campos "Tarefa:" e obtenha todos com "lamp-server".
  2. Instale esses pacotes da maneira padrão:

    sudo apt-get install package1 package2...
    

O modo de tarefas

sudo tasksel install lamp-serverprocurará uma tarefa chamada "lamp-server" em um de seus arquivos de configuração em /usr/share/tasksel/**/*.desc:

  1. Procure nos arquivos de configuração um campo "Tarefa:" chamado "servidor de lâmpadas".
  2. Verifique se todos os pré-requisitos estão disponíveis (campo "Chave:") e lembre-se deles, se não estiverem instalados.
  3. Escolha o método para selecionar pacotes (campo "Pacotes:"). Se esta ist "lista" simplesmente instalar os seguintes pacotes pelo nome.
  4. Leia todos os seguintes nomes de pacotes e passe para o método selecionado anteriormente para gerar nomes de pacotes.
  5. Procure /usr/lib/tasksel/info/lamp-server.preinst. Se existir, execute este script.
  6. Instale os pacotes com o apt-get usando o seguinte comando:

    debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
    
  7. 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-Recommendse APT::Get::AutomaticRemove). A única diferença é o estado estendido do pacote mysql-servere as apache2dependê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 autoremoveporque 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:

  1. sudo apt-get install kubuntu-desktop
    • Irá instalar o metapacote kubuntu-desktop. As dependências são "instaladas automaticamente".
  2. sudo apt-get install kubuntu-desktop^
    • Irá selecionar todos os pacotes marcados com a tarefa "kubuntu-desktop". Todas essas são dependências do metapacote kubuntu-desktop. Todos eles estão marcados como "instalados manualmente".
  3. sudo tasksel install kubuntu-desktop
    • Verifique se o X está instalado antes de instalar os pacotes de tarefas.
    • Irá instalar o metapacote kubuntu-desktop. As dependências são "instaladas automaticamente".
Lasall
fonte