¿Debo usar taskel, tareas en APT o instalar metapaquetes regulares?

37

Tasksel o simple Apt?

En el pasado, siempre solía taskselinstalar las llamadas "tareas". Parece, sin embargo, que esto se ha integrado en APT:

apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]

y que puedo instalar tales "tareas" añadiéndole un caret ( ^) de esta manera:

sudo apt-get install lamp-server^

¿Es esto equivalente a lo siguiente?

sudo tasksel install lamp-server

¿Y cuál es el preferido?

Metapaquetes

Además, ¿cómo entran en juego los metapaquetes? Algunas tareas parecen no ser un metapaquete mientras que otras son:

apt-cache show lamp-server
N: Unable to locate package lamp-server

apt-cache show kubuntu-desktop
Package: kubuntu-desktop
[...]
Task: kubuntu-desktop

Entonces, usando el último ejemplo, ¿cuál es la diferencia entre las siguientes tres formas posibles de instalación?

  • sudo apt-get install kubuntu-desktop
  • sudo apt-get install kubuntu-desktop^
  • sudo tasksel install kubuntu-desktop
gertvdijk
fuente
2
Mira la salida de apt-get install -s lubuntu-desktopversus apt-get install -s lubuntu-desktop^. En este último, verá algo adicional como esto: Nota, seleccionando 'policykit-1-gnome' para la tarea 'lubuntu-desktop' / Note, seleccionando 'gnome-keyring' para la tarea 'lubuntu-desktop' / Note, seleccionando 'libplist1' para la tarea 'lubuntu-desktop' / Note, seleccionando 'aspell-en' para la tarea 'lubuntu-desktop' / Note, seleccionando 'libsdl1.2debian' para la tarea 'lubuntu-desktop' / Entonces, en este caso particular , No estoy seguro de que la "zanahoria" sea mejor.
Más lectura aquí: askubuntu.com/a/249373/25656
1
# advertencia sobre taskel: nunca lo use para eliminar tareas - vea el informe de error en el launchpad
guntbert

Respuestas:

36

En pocas palabras: No es una diferencia entre tasksel proceso de instalación apt-get de tareas.

Mirando tu ejemplo:

El camino apto

sudo apt-get install 'lamp-server^' evaluará para hacer lo siguiente:

  1. Busque en el caché (archivos de la lista de paquetes) todos los campos de "Tarea:" y obtenga todo con "servidor-lámpara".
  2. Instale esos paquetes de la manera estándar:

    sudo apt-get install package1 package2...
    

El camino de la tarea

sudo tasksel install lamp-serverbuscará una tarea llamada "lamp-server" en uno de sus archivos de configuración en /usr/share/tasksel/**/*.desc:

  1. Busque en los archivos de configuración un campo "Tarea:" llamado "servidor-lámpara".
  2. Compruebe si todos los requisitos previos están disponibles (campo "Clave:") y recuérdelos si no están instalados.
  3. Elija el método para seleccionar paquetes (campo "Paquetes:"). Si esta es "lista" simplemente instale los siguientes paquetes por nombre.
  4. Lea todos los siguientes nombres de paquetes y páselo al método seleccionado previamente para generar nombres de paquetes.
  5. Buscar /usr/lib/tasksel/info/lamp-server.preinst. Si existe, ejecute este script.
  6. Instale paquetes con apt-get usando el siguiente comando:

    debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
    
  7. Buscar /usr/lib/tasksel/info/lamp-server.postinst. Si existe, ejecute este script.

Conclusión

taskel es más poderoso en el procesamiento y selección de tareas. Puede ejecutar scripts adicionales antes / después de la instalación / eliminación de tareas. Y el mayor beneficio: puede modificar tareas y crear otras muy fácilmente. No es posible editar un archivo de lista de paquete oficial sin inconvenientes (firma válida).

Volviendo a la primera pregunta:
en su caso especial, ambos comandos son casi equivalentes (se supone que ha habilitado ambos APT::Install-Recommendsy APT::Get::AutomaticRemove) La única diferencia es el estado del paquete extendido de mysql-serveryapache2 dependencias (establecido en "instalado manualmente" con apt-get simple).

¿Y qué hay de los metapaquetes?

Si no utiliza las funciones de taskel como seleccionar tareas (especialmente útiles en la instalación) y ejecutar comandos adicionales antes y después de algunos bloques de tareas, entonces una tarea es muy similar a un metapaquete. La diferencia es: una tarea no está registrada como un paquete en el caché APT.
Entonces, si desinstala una dependencia de tareas, otros departamentos de tareas no se marcan como autoinstalados porque se instalaron explícitamente. Si desinstala un metapaquete, las dependencias se eliminan autoremoveporque su estado de paquete extendido es "autoinstalado" (si no se instala manualmente).
Nota: Todas las tareas distribuidas en Debian instalan un metapaquete llamadotask-TASKNAME .

Dando tu ejemplo:

  1. sudo apt-get install kubuntu-desktop
    • Instalará el metapaquete kubuntu-desktop. Las dependencias son "auto instaladas".
  2. sudo apt-get install kubuntu-desktop^
    • Seleccionará todos los paquetes etiquetados con la tarea "kubuntu-desktop". Todas esas son dependencias del metapaquete kubuntu-desktop. Todos están marcados como "instalados manualmente".
  3. sudo tasksel install kubuntu-desktop
    • Asegúrese de que X esté instalado antes de instalar paquetes de tareas.
    • Instalará el metapaquete kubuntu-desktop. Las dependencias son "auto instaladas".
Lasall
fuente