هر دستور لینوکس معمولاً دارای چندین گزینه و پرچم برای انجام عملیات‌های مختلف دارد. در این مقاله، یکی از گزینه‌های مفید و مهم این دستورات آموزش داده شده است که به شما امکان شبیه سازی دستورات لینوکس را میدهد؛ بگونه‌ای که دستور بدون ایجاد هیچگونه تغییر در سیستم اجرا می‌شود.

 

به عنوان مثال، شما میتوانید فرایند نصب یا حذف یک بسته یا برنامه را شبیه سازی کنید؛ بگونه‌ای که در واقع بسته مورد نظر در سیستم نصب یا حذف نخواهد شد. همانطور که می‌دانید، شبیه سازی تنها تقلیدی از عملکرد یک فرآیند یا سیستم واقعی، برای تأیید نحوه عملکرد این فرآیند در زمان واقعی است. در بسیاری از زمینه‌ها، شبیه سازی به منظور آموزش، تست، یادگیری و حل مشکلات استفاده می‌شود. در ادامه، نحوه شبیه سازی دستورات لینوکس ارائه شده است.

 

این مطلب نیز ممکن است برای شما مفید باشد: استفاده از تگ به منظور بازیابی دستورات لینوکس

 

دلیل شبیه سازی دستورات لینوکس

با استفاده از شبیه سازی می‌توان حتی قبل از اجرای دستور دانست که یک دستور لینوکس چگونه عمل خواهد کرد. به عنوان مثال، ممکن است بخواهید ویرایشگر Vim را در لینوکس خود نصب کنید. قبل از نصب، شما نمی‌دانید این بسته چه بسته‌های دیگری را به همراه دارد. اما با استفاده از شبیه سازی فرایند نصب، خواهید دانست که چه تعداد ابزار دیگر نیز به همراه بسته نصب خواهند شد. همچنین برای حذف بسته نیز به همین صورت است. بدین معنی که با استفاده از شبیه سازی خواهید دانست که پس از حذف بسته، دیگر به چه ابزارهایی نیاز نیست. علاوه بر این، شبیه سازی به شما کمک می‌کند تا حتی قبل از اجرای یک دستور مطمئن شوید که آن دستور به درستی کار می‌کند. در ادامه، یک نمونه از نحوه شبیه سازی دستورات لینوکس ارائه شده است.

 

شبیه سازی دستورات لینوکس بدون ایجاد هیچ گونه تغییر در سیستم

فرض کنید می‌خواهید، ویرایشگر Vim را برروی سیستم اوبونتوی خود نصب نمایید.

به منظور شبیه سازی نصب 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 تنها شبیه سازی شده است و در واقع 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 نیز می‌توانند شبیه سازی را انجام دهند و چنانچه شبیه سازی را بدون 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

اکثر دستورات لینوکس و یونیکس گزینه Dry run را دارند، اما بعضی از دستورات چنین نیستند. به عنوان مثال، دستور yum گزینه Dry run را ندارد. بنابراین، اگر بخواهید Yum install یا Yum remove را شبیه سازی کنید، باید بصورت زیر از گزینه 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”برای شبیه سازی دستورات لینوکس استفاده نمایید. این ابزار نیز اجازه میدهد، بدون اجرای واقعی یک دستور، نحوه عملکرد آن دستور را مشاهده کرده و پس از بررسی خروجی ذکر شده، تصمیم بگیرید که آیا واقعاً می‌خواهید آن را اجرا نمایید یا خیر.

 

 

 

منبع:

ostechnix