🐧 Как симулировать команды Linux, ничего не меняя в системе

by itisgood

Каждая команда 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]
Опять же, мы только смоделировали процесс удаления, но ничего не удалили из системы.
Вы можете убедиться, какие программы будут удалены, если вы запустите указанные выше команды в режиме реального времени.
Мы даже можем смоделировать весь процесс обновления в Ubuntu, как показано ниже.
$ 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 также могут выполнять симуляцию.

Если вы запустите симуляцию без sudo, вы увидите предупреждающее сообщение, как показано ниже.
$ 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» недоступна?

Насколько я знаю, большинство команд Linux и Unix имеют опцию dry run, но некоторые команды все же не имеют.
Например, команда yum не имеет такой опции.
Если вы хотите смоделировать операции установки или удаления Yum, используйте опцию «setopt», как показано ниже.
$ yum install --setopt tsflags=test vim
Если вы хотите смоделировать установку пакета .rpm, выполните:
$ sudo rpm -ivh --test vim-enhanced-7.4.629-6.el7.x86_64.rpm
Приведенные выше команды не устанавливают vim, но показывают, как команды «yum install vim» и «rpm -ivh» будут работать в режиме реального времени.
Может быть, вы должны попробовать «maybe»
Кроме того, вы можете использовать утилиту командной строки с именем «Maybe» для имитации команд Linux.
Это позволяет вам запустить команду и посмотреть, что она делает с вашими файлами, фактически не делая этого!
После просмотра перечисленных результатов вы можете решить, действительно ли вы хотите запустить его или нет.
Для более подробной информации, пожалуйста, перейдите по следующей ссылке.

You may also like

Leave a Comment