Ogni comando Linux ha una o più opzioni e flag per eseguire diverse operazioni. Oggi impariamo a conoscere una delle opzioni utili e importanti che ci consentono di simulare i comandi di Linux ma non di modificare effettivamente il sistema.
Ad esempio, possiamo simulare (o eseguire il dry run) il processo di installazione o rimozione di un pacchetto o programma, ma senza installare o rimuovere effettivamente il pacchetto previsto da un sistema Linux.
Come già saprai, la simulazione è solo un'imitazione del funzionamento di un processo o di un sistema reale per verificare come funzionerà il processo in tempo reale.
La simulazione viene utilizzata in molti campi per l'insegnamento, il test, la formazione e la risoluzione di problemi. Ora torniamo indietro e impariamo come simulare i comandi Linux.
Perché eseguire il dry run o simulare i comandi Linux?
Semplice. Possiamo trovare esattamente cosa farà un comando Linux anche prima di eseguirlo. Ad esempio, potresti voler installare l'editor Vim sulla tua macchina Linux. Non sai quali dipendenze aggiuntive questo pacchetto ha portato con sé. Simulando il processo di installazione, saprai quante dipendenze verranno installate insieme al pacchetto. È lo stesso anche per la rimozione del pacchetto. Saprai quali dipendenze non sono più necessarie dopo aver disinstallato un pacchetto. Ti aiuta anche ad assicurarti che un comando funzioni correttamente anche prima di eseguirlo. Ancora non capisci? Nessun problema. Permettetemi di mostrarvi un esempio.
Simula i comandi di Linux
Diciamo che vuoi installare Vim editor sul tuo sistema Ubuntu.
Per simulare l'installazione di Vim su Ubuntu, esegui semplicemente:
$ sudo apt install vim --dry-run
Oppure,
$ sudo apt install vim --simulate
O a breve:
$ sudo apt install vim -s
Esempio di output dei comandi precedenti:
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])
Come puoi vedere nell'output sopra, abbiamo solo simulato il processo di installazione di Vim, ma in realtà non l'abbiamo installato. Nulla è cambiato nel sistema, solo una simulazione. Osservando la simulazione, possiamo trovare quali pacchetti aggiuntivi (dipendenze) verranno installati con il pacchetto effettivo.
Allo stesso modo, possiamo simulare la rimozione di un programma installato come di seguito.
$ sudo apt remove vim --dry-run
Oppure,
$ sudo apt remove vim --simulate
O a breve:
$ sudo apt remove vim -s
Risultato di esempio:
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]
Ancora una volta, abbiamo solo simulato il processo di rimozione, ma non abbiamo rimosso nulla dal sistema. Puoi assicurarti quali programmi verranno eliminati se esegui i comandi sopra in tempo reale.
Possiamo anche simulare l'intero processo di aggiornamento su Ubuntu come di seguito.
$ 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])
Simulando il processo di aggiornamento, avrai un'idea chiara di quali pacchetti verranno aggiornati.
Tieni presente che anche gli utenti non root possono eseguire la simulazione . Se esegui la simulazione senza sudo, vedrai un messaggio di avviso come di seguito.
$ 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]
Cosa succede se l'opzione "Dry Run" non è disponibile?
Per quanto ne so, la maggior parte dei comandi Linux e unix ha l'opzione dry run, ma alcuni comandi no. Ad esempio, il yum
il comando non ha l'opzione di funzionamento a secco. Se vuoi simulare le operazioni di installazione o rimozione di Yum, usa "setopt"
opzione come di seguito.
$ yum install --setopt tsflags=test vim
Se vuoi simulare l'installazione di un .rpm
pacchetto, fare:
$ sudo rpm -ivh --test vim-enhanced-7.4.629-6.el7.x86_64.rpm
I comandi precedenti non installeranno vim, ma mostreranno come "yum install vim"
e "rpm -ivh"
i comandi verranno eseguiti in tempo reale.
Forse dovresti provare "forse"
In alternativa, puoi utilizzare un'utilità della riga di comando denominata "forse" per simulare i comandi di Linux. Ti permette di eseguire un comando e vedere cosa fa ai tuoi file senza farlo davvero! Dopo aver esaminato l'output elencato, puoi quindi decidere se desideri eseguirlo o meno. Per maggiori dettagli, visitare il seguente link.
- Come sapere cosa farà esattamente un comando o un programma prima di eseguirlo
Spero che questo aiuti.