Каждая команда Linux имеет один или несколько параметров и флагов для выполнения различных операций.
Сегодня давайте узнаем об одном полезном и важном параметре, который позволяет нам моделировать команды Linux, но фактически не меняет систему.
Например, мы можем смоделировать процесс установки или удаления пакета или программы, но без фактической установки или удаления нужного пакета из системы Linux.
Как вы уже знаете, симуляция – это просто имитация работы реального процесса или системы, чтобы проверить, как процесс будет работать в режиме реального времени.
Моделирование используется во многих областях для обучения, тестирования, обучения и решения проблем.
Теперь давайте вернемся и научимся моделировать команды Linux.
Зачем имитировать команды Linux?
Все просто.
Мы можем точно определить, что будет делать команда Linux, еще до ее запуска.
Например, вы можете захотеть установить редактор Vim на свой компьютер с Linux.
Вы не знаете, какие дополнительные зависимости принесет за собой этот пакет.
Моделируя процесс установки, вы будете знать, сколько зависимостей будет установлено вместе с пакетом.
Это также относится и к удалению пакета.
Вы будете знать, какие зависимости больше не нужны после удаления пакета.
Это также поможет вам убедиться, что команда работает должным образом даже до ее запуска.
Все еще не понимаешь? Нет проблем. Позволь мне показать вам пару примеров.
Как симулировать команды Linux, ничего не меняя в системе
Допустим, вы хотите установить редактор Vim в вашей системе Ubuntu.
Чтобы смоделировать установку Vim в Ubuntu, просто запустите:
$ sudo apt install vim --dry-run
или
$ sudo apt install vim --simulate
Или коротко:
$ sudo apt install vim -s
Пример вывода вышеуказанных команд:
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])
Как видно из вышеприведенного вывода, мы только смоделировали процесс установки Vim, но фактически не установили его.
В системе ничего не изменилось, только симуляция.
Посмотрев на симуляцию, мы можем найти, какие дополнительные пакеты (зависимости) будут установлены вместе с реальным пакетом.
Аналогичным образом мы можем смоделировать удаление установленной программы, как показано ниже.
$ sudo apt remove vim --dry-run
или
$ sudo apt remove vim --simulate
или коротко
$ sudo apt remove vim -s
Пример вывода:
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]
$ 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])
Моделируя процесс обновления, вы получите четкое представление о том, какие пакеты будут обновлены.
Обратите внимание, что пользователи без полномочий root также могут выполнять симуляцию.
$ 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]
Что если опция «Dry Run» недоступна?
$ yum install --setopt tsflags=test vim
$ sudo rpm -ivh --test vim-enhanced-7.4.629-6.el7.x86_64.rpm