すべてのLinuxコマンドには、さまざまな操作を実行するための1つ以上のオプションとフラグがあります。今日は、Linuxコマンドをシミュレートできるが、実際にはシステムを変更しない、便利で重要なオプションの1つについて学びましょう。
たとえば、パッケージまたはプログラムのインストールまたは削除のプロセスをシミュレート(またはドライラン)できますが、Linuxシステムから目的のパッケージを実際にインストールまたは削除する必要はありません。
すでにご存知のように、シミュレーションは、プロセスがリアルタイムでどのように機能するかを検証するための、実際のプロセスまたはシステムの操作の単なる模倣です。
シミュレーションは、教育、テスト、トレーニングの目的、および問題の解決のために多くの分野で使用されています。では、戻ってLinuxコマンドをシミュレートする方法を学びましょう。
Linuxコマンドをドライランまたはシミュレートする理由
単純。 Linuxコマンドを実行する前でも、そのコマンドが何をするかを正確に知ることができます。たとえば、LinuxボックスにVimエディターをインストールしたい場合があります。このパッケージがどのような追加の依存関係をもたらしたかはわかりません。インストールプロセスをシミュレートすることにより、パッケージとともにインストールされる依存関係の数を知ることができます。パッケージの取り外しについても同じです。パッケージをアンインストールした後、どの依存関係が不要になったのかがわかります。また、コマンドを実行する前でも、コマンドが正しく機能するかどうかを確認するのに役立ちます。まだ分かりませんか?問題ない。例を示しましょう。
Linuxコマンドをシミュレートする
Vimをインストールしたいとしましょう Ubuntuシステムのエディター。
UbuntuへのVimのインストールをシミュレートするには、次のコマンドを実行します。
$ 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]
「ドライラン」オプションが利用できない場合はどうなりますか?
私の知る限り、ほとんどのLinuxおよびUNIXコマンドにはドライランオプションがありますが、一部のコマンドにはありません。たとえば、 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"
コマンドはリアルタイムで実行されます。
「たぶん」を試してみるべきかもしれません
または、「たぶん」という名前のコマンドラインユーティリティを使用することもできます。 Linuxコマンドをシミュレートします。コマンドを実行して、実際に実行しなくても ファイルに対して何が行われるかを確認できます! リストされた出力を確認した後、それを本当に実行するかどうかを決定できます。詳細については、次のリンクをご覧ください。
- コマンドまたはプログラムが実行する前に正確に何をするかを知る方法
これがお役に立てば幸いです。