GNU/Linux >> Linux の 問題 >  >> Linux

システム内で何も変更せずにLinuxコマンドをドライランまたはシミュレーションする方法

すべての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コマンドをシミュレートします。コマンドを実行して、実際に実行しなくても ファイルに対して何が行われるかを確認できます! リストされた出力を確認した後、それを本当に実行するかどうかを決定できます。詳細については、次のリンクをご覧ください。

  • コマンドまたはプログラムが実行する前に正確に何をするかを知る方法

これがお役に立てば幸いです。


Linux
  1. OSとLinuxのバージョンを確認する方法

  2. LinuxシステムのIDを変更する方法

  3. システム管理者(root)としてコマンドを実行する方法は?

  1. Linuxでパッケージの依存関係を一覧表示する方法

  2. Linuxにインストールせずにパッケージをテストする方法

  3. バックグラウンドでスクリプトを実行する方法 (linux openwrt)?

  1. SSH経由でリモートシステムでLinuxコマンドを実行する方法

  2. Linuxコマンドをバックグラウンドで実行する方法

  3. シェルから Vim コマンドを実行するには?