Cada comando de Linux tiene una o más opciones y banderas para realizar diferentes operaciones. Hoy, aprendamos sobre una de las opciones útiles e importantes que nos permiten simular los comandos de Linux pero que en realidad no cambian el sistema.
Por ejemplo, podemos simular (o ejecutar en seco) el proceso de instalación o eliminación de un paquete o programa, pero sin instalar o eliminar realmente el paquete deseado de un sistema Linux.
Como ya sabes, la simulación es solo una imitación de la operación de un proceso o sistema real para verificar cómo funcionará el proceso en tiempo real.
La simulación se está utilizando en muchos campos para enseñar, probar, entrenar y resolver problemas. Ahora regresemos y aprendamos a simular comandos de Linux.
¿Por qué ejecutar en seco o simular comandos de Linux?
Sencillo. Podemos encontrar exactamente lo que hará un comando de Linux incluso antes de ejecutarlo. Por ejemplo, es posible que desee instalar el editor Vim en su caja de Linux. No sabe qué dependencias adicionales trajo consigo este paquete. Al simular el proceso de instalación, sabrá cuántas dependencias se instalarán junto con el paquete. También es lo mismo para la eliminación de paquetes. Sabrá qué dependencias ya no son necesarias después de desinstalar un paquete. También lo ayuda a asegurarse de que un comando funcione correctamente incluso antes de ejecutarlo. ¿Aún no entiendes? No hay problema. Permítame mostrarle un ejemplo.
Simular comandos de Linux
Digamos que desea instalar Vim editor en su sistema Ubuntu.
Para simular la instalación de Vim en Ubuntu, simplemente ejecute:
$ sudo apt install vim --dry-run
O,
$ sudo apt install vim --simulate
O brevemente:
$ sudo apt install vim -s
Salida de muestra de los comandos anteriores:
Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: ctags vim-doc vim-scripts The following NEW packages will be installed: vim 0 upgraded, 1 newly installed, 0 to remove and 82 not upgraded. Inst vim (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) Conf vim (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Como puede ver en el resultado anterior, solo simulamos el proceso de instalación de Vim, pero en realidad no lo instalamos. No se cambia nada en el sistema, solo una simulación. Al observar la simulación, podemos encontrar qué paquetes adicionales (dependencias) se instalarán con el paquete real.
Del mismo modo, podemos simular la eliminación de un programa instalado como se muestra a continuación.
$ sudo apt remove vim --dry-run
O,
$ sudo apt remove vim --simulate
O brevemente:
$ sudo apt remove vim -s
Salida de muestra:
Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: vim 0 upgraded, 0 newly installed, 1 to remove and 82 not upgraded. Remv vim [2:8.0.1453-1ubuntu1.1]
Nuevamente, solo simulamos el proceso de eliminación, pero no eliminamos nada del sistema. Puede asegurarse de qué programas se eliminarán si ejecuta los comandos anteriores en tiempo real.
Incluso podemos simular todo el proceso de actualización en Ubuntu como se muestra a continuación.
$ sudo apt dist-upgrade --dry-run Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages will be upgraded: apt apt-utils base-files bash bsdutils cloud-init console-setup console-setup-linux debconf debconf-i18n dmeventd dmsetup dpkg fdisk friendly-recovery grep grub-common grub-pc grub-pc-bin grub2-common initramfs-tools initramfs-tools-bin initramfs-tools-core iputils-ping iputils-tracepath keyboard-configuration landscape-common language-selector-common libapt-inst2.0 libapt-pkg5.0 libblkid1 libdevmapper-event1.02.1 libdevmapper1.02.1 libdrm-common libdrm2 libfdisk1 libldap-2.4-2 libldap-common liblvm2app2.2 liblvm2cmd2.02 libmount1 libnss-systemd libpam-systemd libprocps6 libpython3.6 libpython3.6-minimal libpython3.6-stdlib libsmartcols1 libsystemd0 libudev1 libuuid1 linux-firmware lvm2 mdadm mount netplan.io nplan open-vm-tools procps python-apt-common python3-apt python3-debconf python3-distupgrade python3-gdbm python3-software-properties python3.6 python3.6-minimal snapd software-properties-common sosreport systemd systemd-sysv thermald ubuntu-minimal ubuntu-release-upgrader-core ubuntu-standard udev unattended-upgrades update-notifier-common util-linux uuid-runtime xkb-data 82 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Inst base-files [10.1ubuntu2.4] (10.1ubuntu2.7 Ubuntu:18.04/bionic-updates [amd64]) Conf base-files (10.1ubuntu2.7 Ubuntu:18.04/bionic-updates [amd64]) Inst bash [4.4.18-2ubuntu1] (4.4.18-2ubuntu1.2 Ubuntu:18.04/bionic-updates [amd64]) Conf bash (4.4.18-2ubuntu1.2 Ubuntu:18.04/bionic-updates [amd64]) Inst bsdutils [1:2.31.1-0.4ubuntu3.3] (1:2.31.1-0.4ubuntu3.4 Ubuntu:18.04/bionic-updates [amd64]) [..] Conf thermald (1.7.0-5ubuntu5 Ubuntu:18.04/bionic-updates [amd64]) Conf unattended-upgrades (1.1ubuntu1.18.04.13 Ubuntu:18.04/bionic-updates [all]) Conf cloud-init (19.3-41-gc4735dd3-0ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates [all]) Conf open-vm-tools (2:11.0.1-2ubuntu0.18.04.2 Ubuntu:18.04/bionic-updates [amd64])
Al simular el proceso de actualización, obtendrá una idea clara de qué paquetes se actualizarán.
Tenga en cuenta que los usuarios no root también pueden realizar la simulación . Si ejecuta la simulación sin sudo, verá un mensaje de advertencia como el siguiente.
$ apt remove vim --dry-run NOTE: This is only a simulation! apt needs root privileges for real execution. Keep also in mind that locking is deactivated, so don't depend on the relevance to the real current situation! Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: vim 0 upgraded, 0 newly installed, 1 to remove and 82 not upgraded. Remv vim [2:8.0.1453-1ubuntu1.1]
¿Qué sucede si la opción "Ejecución en seco" no está disponible?
Hasta donde yo sé, la mayoría de los comandos de Linux y Unix tienen la opción de ejecución en seco, pero algunos comandos no. Por ejemplo, yum
El comando no tiene la opción de ejecución en seco. Si desea simular operaciones de instalación o eliminación de Yum, use "setopt"
opción como la siguiente.
$ yum install --setopt tsflags=test vim
Si desea simular la instalación de un .rpm
paquete, hacer:
$ sudo rpm -ivh --test vim-enhanced-7.4.629-6.el7.x86_64.rpm
Los comandos anteriores no instalarán vim, pero muestran cómo "yum install vim"
y "rpm -ivh"
los comandos se ejecutarán en tiempo real.
Quizás deberías probar "quizás"
Alternativamente, puede usar una utilidad de línea de comando llamada “tal vez” para simular comandos de Linux. Le permite ejecutar un comando y ver qué hace con sus archivos ¡sin hacerlo realmente! Después de revisar el resultado de la lista, puede decidir si realmente desea ejecutarlo o no. Para obtener más detalles, visite el siguiente enlace.
- Cómo saber qué hará exactamente un comando o programa antes de ejecutarlo
Espero que esto ayude.