صفحه 1 از 1

دستور rpm ( مدیریت بسته RedHat )

ارسال شده: جمعه 12 آبان 1396, 5:20 pm
توسط phoenix
هدف از RPM
هرکسی از کامپایل کد منبع لذت نمیبردیا تمایل ندارد جستجو در اینترنت برای پیدا کردن آخرین نسخه هر بسته ای که وجود دارد. برای مردم مثل این بسته های باینری وجود دارد مانند مدیریت بسته RedHat موسوم به RPM که حاوی فایل اجرایی و سفارشی برای توزیع مورد نظر میباشد. توزیع هایی که از بسته های RPM استفاده میکنند شامل RedHat , OpenSuse , Mandrake و ..... میباشند.
هنگامیکه شما میخواهید یک بسته RPM را نصب کنید کارهایی که انجام میدهد به شرح زیر است:
  • بررسی میکند که کتابخانه های لازم و برنامه های نصب شده بر روی سیستم شما
  • کپی فایل از بسته بر روی سیستم فایل شما باینری برنامه ( در دایرکتوری bin/ و یا در دایرکتوری opt/ ) فایل پیکربندی برنامه (معمولا در دایرکتوری etc/ قرار میگیرد) و برخی از مستندات ( مانند صفحات راهنما)
  • اجرای یک اسکریپت پس از نصب مطمئن شوید که بسته با برخی از قابلیت های اساسی پیکربندی شده است علاوه بر این مسیر بسته های RPM نصب شده را نگه میدارد.
بد نیست این مطلب را یک بررسی داشته باشید فقط زمانی که این مطلب رو در حال نگارش هستم هنوز فرصت برای کامل کردن این بخش آموزشی نداشتم :lol: شاید در زمانی که این مطلب را مطالعه میکنید کامل شده باشد :معرفی سلسله مراتب فایل سیستم در gnu/linux یا file system hierarchy پایگاه داده RPM
RPM مسیری از فایل های که روی سیستم شما نصب شده اند به عنوان بخشی از بسته های RPM نگه میدارد. این پایگاه داده در دایرکتوری var/lib/rpm/ ذخیره شده است. برای هریک از بسته ها اطلاعاتی در دسترس است که به شرح زیر میباشد:
  • نام, شماره نسخه و شماره نسخه اصلاح شده بسته
  • یک توضیح کامل و طولانی از بسته
  • یک لیست از فایل هایی که توسط بسته نصب میشوند همراه با مقایسه های فایل موجود با فایل اصلی md5
  • وابستگی هایی که بسته به آن نیاز دارد و ارائه توسط این بسته
  • اسکریپت برای قبل و بعد از نصب و حذف بسته اجرا شود
نصب و مدیریت بسته های RPM
هنگامیکه یک برنامه کاربردی که با فرمت rpm است به دستتان میرسد این بسته معمولا فقط شامل یک فایل است دستوری که شما برای مدیریت و استفاده از بسته های نرم افزاری rpm استفاده میکنید دستور rpm است.
برای مدیریت بسته های rpm دستور rpm گزینه هایی را برای لیست کردن بسته های نصب شده - ارتقا بسته های نصب شده - بدست آوردن اطلاعات از محتویات یک بسته و .... ارائه میکند. همچنین گزینه هایی وجود دارند که توسط آنها میتوانید بررسی نمایید که کلیه فایل های یک بسته نصب شده و جود داشته و تغییر نکرده باشند. دستور rpm در حالت های زیر کار میکند:
  • نصب نرم افزار (install) با سوئیچ i-
  • ارتقاء نرم افزار (upgrade) با سوئیچ u-
  • کسب اطلاعات از بسته (query) با سوئیچ q-
  • چک کردن بسته (verify) با گزینه v-
  • بررسی امضاء بسته (signature check) با گزینه checksig
  • حذف بسته (unistall) با سوئیچ e-
  • ساخت بسته (build) با سوئیچ b-
  • ساخت مجدد بانک اطلاعاتی (rebuild database) با گزینه rebuilddb
  • تصحیح مجوزها (fix permissions) با گزینه setperms
  • تعیین مالک/گروه (set owners/group) با گزینه setugids

هشدار: برای نصب یا حذف بسته های rpm باید با کاربر root وارد سیستم شده باشید. نمایش بسته های نصب شده - کسب اطلاعات از بسته و نمایش محتویات بسته نیاز به داشتن مجوز root ندارد.
بسته های rpm را کجا جستجو کنیم؟ http://rpmfind.net/
https://www.redhat.com/en
https://freshrpms.net/
https://rpmfusion.org/
http://rpm.pbone.net/
چطور امضای یک بسته RPM را بررسی نماییم؟
همیشه قبل از نصب یک بسته rpm امضای PGP یا اصطلاحا PGP Signature آنها را روی سیستم لینوکسی خود بررسی نمایید و مطمئن شوید که یکپارچگی و اصالت بسته ok باشد. برای این منظور میتوانید از گزینه checksig-- یا check signature استفاده نمایید. برای مثال در اینجا ما قصد داریم امضای RPM بسته megamario را بررسی کنیم. برای این منظور:

کد: انتخاب همه

-> $rpm --checksig megamario-1.7-2.fc27.x86_64.rpm 
megamario-1.7-2.fc27.x86_64.rpm: NOT OK
که در مثال ما PGP تایید نشده است :lol:
نصب بسته های RPM
برای نصب بسته های rpm با استفاده از دستور rpm باید از روش زیر استفاده کنید:

کد: انتخاب همه

rpm -i [option] package
package نام بسته rpm است. این بسته ممکن است در مسیر جاری شما قرار داشته باشد یا بر روی درایو CD-ROM و یا روی سایت FTP یا هر چیزه دیگر مشابه
توجه: در صورتیکه دستور نصب بسته ای را صادر کنید که روی سایت FTP قرار دارد این بسته ابتدا از سایت دانلود شده و سپس نصب میگردد.
همراه با سوئیچ i- هنگام نصب میتوانید از سوئیچ های زیر استفاده نمایید:
سوئیچ vv- : این سوئیچ اطلاعات Debugging را هنگام نصب چاپ میکند. با این گزینه تمام آنچه را هنگام نصب رخ میدهد خواهید دید.
سوئیچ h- : فرآیند نصب بسته را بصورت تعدادی کاراکتر # نشان میدهد. این کاراکترها در کنار هم تشکیل یک نوار پیشروی (Progress bar) را میدهند که برای کسب اطلاعات از وضعیت نصب بسیار مفید است.
سوئیچ percent-- : درصد پیشرفت نصب بسته را حین فرآیند نصب چاپ میکند.
قبل از اینکه نصب بسته شروع شود ابزار rpm بررسی هایی مبنی بر نصب بودن نسخه جدیدتر بسته و یا بسته های دیگری که به آن نیاز میباشد به عمل میآورد. در صورتیکه بسته های جدیدتر وجود داشته باشد. بسته نصب نخواهد شد برای عبور از این شرایط میتوانید از گزینه های زیر استفاده کنید:
سوئیچ force-- : با استفاده از این گزینه حتی اگر بسته در حال نصب قدیمی تر از بسته نصب شده باشد نصب خواهد شد این کار فایل های جدیدتر را با فایل های قدیمی تر جایگزین خواهد کرد این گزینه مشابه استفاده از گزینه های oldpackage - rplacefiles و replacepkgs است.
سوئیچ nodeps-- : بسته های مورد نیاز را نادیده گرفته و بسته را نصب میکند. البته ممکن است بسته ای که اینگونه نصب شود کار نکند. :!:
سوئیچ ignorearch-- : با استفاده از این گزینه اگر بسته با معماری پردازنده شما سازگاری نداشته باشد نیز نصب خواهد شد.
سوئیچ ignoreos-- : در صورتیکه بسته با سیستم عامل کامپیوترتان سازگاری نداشته باشد نصب خواهد شد.
مثال زیر چگونگی نصب یک بسته را نشان میدهد:

کد: انتخاب همه

rpm -i pidgin.rpm
من شخصا ترجیح میدهم هنگام نصب بسته مطلع باشم که چه چیزی رخ میدهد برای این کار معمولا سوئیچ vv- را هم اضافه میکنم:

کد: انتخاب همه

rpm -ivv pidgin.rpm
با استفاده از یک خروجی اینچنینی میتوانید به تمام جزئیات عملیاتی که هنگام نصب بسته انجام میشود پی ببرید. راه دیگری که میتوانید بررسی کنید که آیا بسته به درستی نصب شده است یا خیر استفاده از سوئیچ h- است. به مثال زیر توجه کنید:

کد: انتخاب همه

rpm -ivh pidgin.rpm
بوسیله این گزینه همانطور که در کمی بالاتر ذکر کردیم تعدادی کاراکتر # روی صفحه ترمینال چاپ میشود که بیانگر صحت نسب بسته است. همانطور که دیدید در صورتیکه اشکالی وجود نداشته باشد نصب بسته های rpm بسیار آسان است. برخی اوقات ممکن است در نصب بسته ها اشکالاتی ایجاد شود که نمونه هایی از آنها در زیر شرح داده شده اند.
  • خطای بسته های مورد نیاز (Package dependencies errors) :
در صورتیکه بسته هایی که نصب میکنید برای کارکرد صحیح به بسته های دیگری نیاز داشته باشند این خطا را دریافت خواهید کرد. برای حل این مشکل کافی است که بسته های مورد نیاز را نیز تهیه کرده و قبل از نصب بسته اصلی آنها را نصب کنید. البته همانطور که در بالا شرح داده شد میتوانید rpm را مجبور کنید تا بسته های مورد نیاز را بررسی نکند ولی این کار به هیچ وجه توصیه نمیشود زیرا بسته نصب شده کار نخواهد کرد.
  • خطاهای کاربر غیر root :
در صورتیکه در حالت کاربر root نباشید و دستور rpm را با سوئیچ i- اجرا کنید این خطاها را دریافت خواهید کرد برای رفع این مشکل کافی است با استفاده از دستور sudo بصورت کاربر root وارد شوید.
ارتقا بسته های rpm :
گزینه ارتقاء یا U بسیار شبیه به گزینه نصب بسته جدید میباشد با این تفاوت که ابتدا بسته قدیمی را از روی سیستم حذف کرده و سپس بسته جدید را نصب میکند به روش زیر توجه کنید:

کد: انتخاب همه

rpm -U [options] package
ممکن است پس از نصب بسته جدید به دلایلی نرم افزار مربوطه کار نکند برای بازگشت به حالت قبلی و نصب بسته قدیمی تر ( به نوعی downgrade کردن) باید از گزینه oldpackage استفاده نمایید. برای روشن شدن مطلب به مثال زیر توجه کنید:

کد: انتخاب همه

rpm -U --oldpackage pidgin.rpm
در صورتیکه بسته جدیدتر نصب باشد از روی سیستم برداشته شده و بسته قدیمی تر نصب خواهد شد.
نکته: از سوئیچ U- میتوانید چه برای نصب جدید به جای سوئیچ i- و چه برای ارتقاء استفاده نمایید سوئیچ U- همیشه کار خواهد کرد ولی سوئیچ i- در وصورتیکه بسته قبلا نصب شده باشد کار نخواهد کرد.
حذف بسته های rpm
در صورتیکه دیگر به یک بسته نیازی ندارید و میخواهید برای آزاد شدن فضای دیسک سخت خود آن را از روی سیستم حذف کنید باید از سوئیچ e- استفاده نمایید. روش اینکار بصورت زیر است:

کد: انتخاب همه

rpm -e package
در صورتیکه هیچ بسته ای به بسته مورد نظر نیازی نداشته باشد بسته از روی سیستم حذف خواهد شد. ممکن است قبل از حذف بسته بخواهید این امر را بررسی نمایید. برای اینکار باید از سوئیچ q- استفاده کنید با استفاده از این سوئیچ میتوانید بررسی های مختلفی انجام داده و اطلاعات با ارزشی بدست آورید. برای بررسی اینکه بسته مورد نظر مورد نیاز بسته ای میباشد یا خیر از روش زیر استفاده کنید:

کد: انتخاب همه

rpm -q --whatrequires pakage
در صورتیکه تصمیم گرفتید تا بسته ای را حذف نمایید توصیه میشود تا از سوئیچ vv- به همراه سوئیچ e- استفاده کنید.این کار به شما نشان میدهد که آیا واقعا فایل های بسته حذف شده اند یا خیر.
به دلیل اینکه معمولا در این موارد خروجی طولانی خواهد بود و از صفحه terminal فراتر خواهد رفت میتوانید خروجی را از طریق piping به یک برنامه دیگر و یا یک فایل هدایت نمایید.به مثال زیر توجه کنید:

کد: انتخاب همه

rpm -evv pidgin|more
در مثال فوق خروجی rpm به برنامه more هدایت میشود و از طریق آن میتوانید خروجی را بصورت صفحه به صفحه مطالعه نمایید برا یاینکار میتوانید از کلید space استفاده کنید.
سایر گزینه هایی که میتوانید همراه با سوئیچ e- برای نادیده گرفتن شرایطی که مانع حذف شدن یک بسته میشوند استفاده کنید به شرح زیر هستند:
  • سوئیچ nodeps-- : بسته را بدون توجه به سایر بسته هایی که به آن نیاز دارند حذف میکند
  • سوئیچ noscripts-- : بسته را بدون اجرای هرگونه اسکریپتی حذف میکند
برای اینکه مطمئن شوید هنگام حذف بسته چه اتفاقاتی رخ میدهد میتوانید با استفاده از گزینه test-- فقط حذف بسته را شبیه سازی نمایید. با اینکار مشکلات احتمالی را مشاهده خواهید کرد و بهتر میتوانید آنها را رفع کنید. همراه با گزینه test-- میتوانید از سوئیچ vv- استفاده کنید. به مثال زیر توجه کنید:

کد: انتخاب همه

rpm -evv --test pidgin|more
در صورتیکه همه چیز به خوبی پیش رفت میتوانید دستور خود را بدون گزینه test-- اجرا نمایید تا بسته از روی سیستم حذف شود.
 ! پیام از: phoenix
برای توضیحات تکمیلی در ارتباط با دستور more میتوانید بر روی دستور کلیک تا به صفحه همان دستور ارجاع داده شوید

قسمت دوم دستور rpm ( مدیریت بسته RedHat )

ارسال شده: شنبه 21 بهمن 1396, 11:43 pm
توسط phoenix
بخش دوم به دلیل طولانی شدن در پستی جدا ادامه مطلب را نوشتم
  • بدست آوردن اطلاعات از بسته های rpm :
با استفاده از سوئیچ q- میتوانید اطلاعات با ارزشی را از بسته های rpm دریافت نمایید. این اطلاعات میتواند از لیست بسته های نصب شده تا اطلاعات جزئی هر بسته متغییر باشد. روش استفاده از این گزینه بصورت زیر است:

کد: انتخاب همه

rpm -q [options]
اطلاعات مفیدی که میتوانید با استفاده از این گزینه بدست آورید به شرح زیر هستند:
  • سوئیچ های qa- : لیستی از بسته های نصب شده را نمایش میدهد.
  • سوئیچ های qf file- : بسته ای که یک فایل خاص به آن تعلق دارد را چاپ میکند. به جای file باید مسیر کامل فایل مورد نظر را تایپ کنید و در صورتیکه فایل در دایرکتوری جاری قرار دارد تنها کافی است که نام فایل را تایپ کنید.
  • سوئیچ های qi- : اطلاعات جزئی یک بسته را چاپ میکند
  • سوئیچ های qR- : اجزای مورد نیاز (پیشنیازها یا dependency ها) بسته را چاپ میکند
  • سوئیچ های ql- : لیست فایلهایی که در بسته قرار دارند با چاپ میکند
  • سوئیچ های qd- : مستنداتی که در بسته وجود دارند را چاپ میکند
  • سوئیچ های qc- : فایل های پیکربندی که در بسته قرار دارند را چاپ میکند
همانطوریکه که در بالا گفته شد برای لیست کردن تمام بسته های موجود روی کامپیوترتان میتوانید از سوئیچ های qa- استفاده کنید به دلیل اینکه این لیست بسیار طولانی خواهد بود میتوانید خروجی آنرا به یک فایل هدایت نموده و یا با استفاده از دستور grep بسته های مورد نیازتان را پیدا کنید.برای روشن شدن مطلب به مثال های زیر توجه کنید.

کد: انتخاب همه

-> $rpm -qa>myPack
یا

کد: انتخاب همه

-> $rpm -qa |grep megasync                      
megasync-3.6.0-1.1.x86_64
در مثال اول خروجی دستور به فایلی به نام myPack هدایت میشود. این فایل یک فایل متنی است که میتوانید آنرا در یک ویرایشگر متنی مانند vim یا هر ویرایشگر دیگر مشاهده کنید.
در مثال دوم خروجی دستور به فیلتر grep هدایت شده و خواسته میشود تا نام های حاوی megasync نمایش داده شوند.نتیجه وجود یک بسته نصب شده است.
  • چطور همه بسته های rpm نصب شده را لیست کنیم؟ برای این منظور دستور زیر را تایپ کنید تا نام همه بسته های نصب شده روی سیستم شما چاپ شود.

کد: انتخاب همه

-> $rpm -qa|more
tumbler-0.2.0-3.fc27.x86_64
libexttextcat-3.4.4-7.fc27.x86_64
perl-Compress-Raw-Zlib-2.076-1.fc27.x86_64
python-qt5-5.9.1-2.fc27.x86_64
python2-dateutil-2.6.0-4.fc27.noarch
mesa-libOpenCL-17.2.4-3.fc27.x86_64
libmetalink-0.1.3-4.fc27.x86_64
openssh-askpass-7.6p1-5.fc27.x86_64
python2-ptyprocess-0.5.2-2.fc27.noarch
rp-pppoe-3.12-10.fc27.x86_64
  • چطور از اطلاعات بسته rpm نصب شده یک query ی اطلاعات بگیریم؟ در صورتیکه به اطلاعات جزئی در مورد بسته خاص نیاز داشتید میتوانید از سوئیچ qi- یا query info استفاده کنید به مثال زیر توجه کنید:

کد: انتخاب همه

-> $rpm -qi megasync 
Name        : megasync
Version     : 3.6.0
Release     : 1.1
Architecture: x86_64
Install Date: Thu Feb  1 19:55:29 2018
Group       : Applications/Others
Size        : 8330276
License     : Freeware
Signature   : RSA/SHA256, Thu Jan 18 22:26:15 2018, Key ID 03c3ad3a7f068e5d
Source RPM  : megasync-3.6.0-1.1.src.rpm
Build Date  : Thu Jan 18 22:26:00 2018
Build Host  : linux
Relocations : (not relocatable)
Packager    : MEGA Linux Team <linux@mega.co.nz>
Vendor      : MEGA Limited
URL         : https://mega.nz
Summary     : Easy automated syncing between your computers and your MEGA cloud drive
Description :
Secure:
Your data is encrypted end to end. Nobody can intercept it while in storage or in transit.

Flexible:
Sync any folder from your PC to any folder in the cloud. Sync any number of folders in parallel.

Fast:
Take advantage of MEGA's high-powered infrastructure and multi-connection transfers.

Generous:
Store up to 50 GB for free!
برای کسب اطلاعات از محتوای یک بسته باید از سوئیچ ql- یا query list استفاده کنید. مثال زیر محتویات بسته megasync را نمایش میدهد:

کد: انتخاب همه

-> $rpm -ql megasync 
/etc/sysctl.d/100-megasync-inotify-limit.conf
/usr/bin/megasync
/usr/lib/.build-id
/usr/lib/.build-id/ae
/usr/lib/.build-id/ae/2c20bd6517e4847b29604fb4061f1a86a5361f
/usr/share/applications/megasync.desktop
/usr/share/doc/megasync
/usr/share/doc/megasync/distro
/usr/share/doc/megasync/version
/usr/share/icons/hicolor/128x128/apps/mega.png
/usr/share/icons/hicolor/16x16/apps/mega.png
/usr/share/icons/hicolor/256x256/apps/mega.png
/usr/share/icons/hicolor/32x32/apps/mega.png
/usr/share/icons/hicolor/48x48/apps/mega.png
/usr/share/icons/hicolor/scalable/status/megalogging.svg
/usr/share/icons/hicolor/scalable/status/megapaused.svg
/usr/share/icons/hicolor/scalable/status/megasynching.svg
/usr/share/icons/hicolor/scalable/status/megauptodate.svg
/usr/share/icons/hicolor/scalable/status/megawarning.svg
/usr/share/icons/ubuntu-mono-dark/status/24/megalogging.svg
/usr/share/icons/ubuntu-mono-dark/status/24/megapaused.svg
/usr/share/icons/ubuntu-mono-dark/status/24/megasynching.svg
/usr/share/icons/ubuntu-mono-dark/status/24/megauptodate.svg
/usr/share/icons/ubuntu-mono-dark/status/24/megawarning.svg
  • آیا دوست دارید بدانید که همراه یک بسته خاص چه مستنداتی ارائه شده است؟ کافی است از سوئیچ qd- یا qdf- که به معنی query document file است استفاده کنید. با این کار میتوانید به محل مستندات یک برنامه به راحتی پی ببرید. به مثال زیر توجه کنید:

کد: انتخاب همه

-> $rpm -qd megasync 
/usr/share/doc/megasync/distro
/usr/share/doc/megasync/version
یا به عنوان مثال دستور زیر همه صفحات manual مرتبط با بسته vmstat را نشان میدهد.

کد: انتخاب همه

-> $rpm -qdf /usr/bin/vmstat
/usr/share/doc/procps-ng/AUTHORS
/usr/share/doc/procps-ng/BUGS
/usr/share/doc/procps-ng/FAQ
/usr/share/doc/procps-ng/NEWS
/usr/share/doc/procps-ng/README
/usr/share/doc/procps-ng/README.top
/usr/share/doc/procps-ng/TODO
/usr/share/man/de/man1/free.1.gz
/usr/share/man/de/man1/pgrep.1.gz
/usr/share/man/de/man1/pidof.1.gz
/usr/share/man/de/man1/pkill.1.gz
/usr/share/man/de/man1/pmap.1.gz
/usr/share/man/de/man1/pwdx.1.gz
/usr/share/man/de/man1/skill.1.gz
/usr/share/man/de/man1/slabtop.1.gz
/usr/share/man/de/man1/tload.1.gz
/usr/share/man/de/man1/uptime.1.gz
/usr/share/man/de/man1/w.1.gz
/usr/share/man/de/man1/watch.1.gz
/usr/share/man/de/man5/sysctl.conf.5.gz
/usr/share/man/de/man8/sysctl.8.gz
/usr/share/man/de/man8/vmstat.8.gz
/usr/share/man/fr/man1/free.1.gz
/usr/share/man/fr/man1/pgrep.1.gz
/usr/share/man/fr/man1/pidof.1.gz
/usr/share/man/fr/man1/pkill.1.gz
/usr/share/man/fr/man1/pmap.1.gz
/usr/share/man/fr/man1/pwdx.1.gz
/usr/share/man/fr/man1/skill.1.gz
/usr/share/man/fr/man1/slabtop.1.gz
/usr/share/man/fr/man1/tload.1.gz
/usr/share/man/fr/man1/uptime.1.gz
/usr/share/man/fr/man1/w.1.gz
/usr/share/man/fr/man1/watch.1.gz
/usr/share/man/fr/man5/sysctl.conf.5.gz
/usr/share/man/fr/man8/sysctl.8.gz
/usr/share/man/fr/man8/vmstat.8.gz
/usr/share/man/man1/free.1.gz
/usr/share/man/man1/pgrep.1.gz
/usr/share/man/man1/pidof.1.gz
/usr/share/man/man1/pkill.1.gz
/usr/share/man/man1/pmap.1.gz
/usr/share/man/man1/ps.1.gz
/usr/share/man/man1/pwdx.1.gz
/usr/share/man/man1/skill.1.gz
/usr/share/man/man1/slabtop.1.gz
/usr/share/man/man1/snice.1.gz
/usr/share/man/man1/tload.1.gz
/usr/share/man/man1/top.1.gz
/usr/share/man/man1/uptime.1.gz
/usr/share/man/man1/w.1.gz
/usr/share/man/man1/watch.1.gz
/usr/share/man/man5/sysctl.conf.5.gz
/usr/share/man/man8/sysctl.8.gz
/usr/share/man/man8/vmstat.8.gz
/usr/share/man/pl/man1/pkill.1.gz
/usr/share/man/uk/man1/free.1.gz
/usr/share/man/uk/man1/pgrep.1.gz
/usr/share/man/uk/man1/pidof.1.gz
/usr/share/man/uk/man1/pkill.1.gz
/usr/share/man/uk/man1/pmap.1.gz
/usr/share/man/uk/man1/pwdx.1.gz
/usr/share/man/uk/man1/skill.1.gz
/usr/share/man/uk/man1/slabtop.1.gz
/usr/share/man/uk/man1/tload.1.gz
/usr/share/man/uk/man1/uptime.1.gz
/usr/share/man/uk/man1/w.1.gz
/usr/share/man/uk/man1/watch.1.gz
/usr/share/man/uk/man5/sysctl.conf.5.gz
/usr/share/man/uk/man8/sysctl.8.gz
/usr/share/man/uk/man8/vmstat.8.gz
  • چطور بدانیم فایل های یک نرم افزار یا سرویس در چه مسیری قرار دارند؟ بیشتر بسته های نرم افزاری به همراه خود چندین فایل پیکربندی دارند. برای پیدا کردن آنها باید از سوئیچ qc- استفاده کنید. به مثال زیر توجه کنید:

کد: انتخاب همه

-> $rpm -qc ppp
/etc/logrotate.d/ppp
/etc/pam.d/ppp
/etc/ppp/chap-secrets
/etc/ppp/eaptls-client
/etc/ppp/eaptls-server
/etc/ppp/options
/etc/ppp/pap-secrets
  • چطور از یک فایلی که متعلق به بسته rpm است query بگیریم؟ در صورتیکه نیاز دارید بدانید که یک فایل یا برنامه خاص به کدام بسته تعلق دارد میتوانید از سوئیچ qf- یا query file استفاده نمایید. به مثال زیر توجه کنید:

کد: انتخاب همه

-> $rpm -qf /usr/bin/aria2c
aria2-1.32.0-3.fc27.x86_64
  • چطور dependency های بسته rpm را پیش از نصب یا upgrade بررسی نماییم؟ جهت بررسی dependency های یک بسته rpm پیش از نصب یا upgrade آن میتوانید از سوئیچ qpR- استفاده کنید. برای مثال فرض کنید میخواهید پیشنیازهای بسته megasync را پیش از نصب مشاهده و لیست نماییم. برای این منظور:

کد: انتخاب همه

-> $rpm -qpR megasync-Fedora_27.x86_64.rpm 
/bin/sh
/bin/sh
/bin/sh
libGL.so.1()(64bit)
libQt5Core.so.5()(64bit)
libQt5Core.so.5(Qt_5)(64bit)
libQt5Core.so.5(Qt_5.9)(64bit)
libQt5DBus.so.5()(64bit)
libQt5DBus.so.5(Qt_5)(64bit)
libQt5Gui.so.5()(64bit)
libQt5Gui.so.5(Qt_5)(64bit)
libQt5Network.so.5()(64bit)
libQt5Network.so.5(Qt_5)(64bit)
libQt5Svg.so.5()(64bit)
libQt5Svg.so.5(Qt_5)(64bit)
libQt5Widgets.so.5()(64bit)
libQt5Widgets.so.5(Qt_5)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.25)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libc.so.6(GLIBC_2.9)(64bit)
libcares.so.2()(64bit)
libcrypto.so.1.1()(64bit)
libcrypto.so.1.1(OPENSSL_1_1_0)(64bit)
libcryptopp.so.6()(64bit)
libdl.so.2()(64bit)
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libmediainfo.so.0()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit)
libpthread.so.0(GLIBC_2.3.3)(64bit)
librt.so.1()(64bit)
librt.so.1(GLIBC_2.2.5)(64bit)
libsqlite3.so.0()(64bit)
libssl.so.1.1()(64bit)
libssl.so.1.1(OPENSSL_1_1_0)(64bit)
libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(CXXABI_1.3.1)(64bit)
libstdc++.so.6(CXXABI_1.3.8)(64bit)
libstdc++.so.6(CXXABI_1.3.9)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.11)(64bit)
libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
libzen.so.0()(64bit)
qt5-qtbase >= 5.6
qt5-qtsvg
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
rtld(GNU_HASH)
  • بدست آوردن اطلاعات بسته rpm قبل از نصب؟ فرض کنید که شما یک بسته rpm را از طریق اینترنت دانلود کرده اید و حالا پیش از نصب آن قصد دارید اطلاعات آن را بدانید. برای مثال گزینه qip- یا query info package اطلاعات یک بسته را چاپ خواهد کرد.

کد: انتخاب همه

-> $rpm -qip megasync-Fedora_27.x86_64.rpm 
Name        : megasync
Version     : 3.6.0
Release     : 1.1
Architecture: x86_64
Install Date: (not installed)
Group       : Applications/Others
Size        : 8330276
License     : Freeware
Signature   : RSA/SHA256, Thu Jan 18 22:26:15 2018, Key ID 03c3ad3a7f068e5d
Source RPM  : megasync-3.6.0-1.1.src.rpm
Build Date  : Thu Jan 18 22:26:00 2018
Build Host  : linux
Relocations : (not relocatable)
Packager    : MEGA Linux Team <linux@mega.co.nz>
Vendor      : MEGA Limited
URL         : https://mega.nz
Summary     : Easy automated syncing between your computers and your MEGA cloud drive
Description :
Secure:
Your data is encrypted end to end. Nobody can intercept it while in storage or in transit.

Flexible:
Sync any folder from your PC to any folder in the cloud. Sync any number of folders in parallel.

Fast:
Take advantage of MEGA's high-powered infrastructure and multi-connection transfers.

Generous:
Store up to 50 GB for free!
  • بررسی صحت نصب بسته های rpm : گاهی اوقات مدتی پس از نصب یک بسته به نظر میرسد که نرم افزار مربوطه بطور صحیح کار نمیکند. برای بررسی اینکه تمام محتویات یک بسته بدون تغییر باقی مانده اند یا خیر باید از سوئیچ V- استفاده نمایید اطلاعات هر بسته نصب شده در بانک اطلاعات rpm کامپیوترتان دخیره میشود بوسیله سوئیچ V- میتوانید بررسی کنید که فایل های مربوط به بسته دچار تغییر نشده باشند.
    هنگامیکه از این سوئیچ استفاده میکنید تعداد زیادی آزمایش سایز فایل ها و مجوزهای آنها صورت میگیرد در صورتیکه تمام فایل ها بدون مشکل باشند شما هیچ خروجی از دستور مشاهده نخواهید کرد تمام بخش هایی که پس از نصب بسته دچار تغییر شده باشند همراه با چگونگی تغییر آنها چاپ خواهند شد. به مثال زیر توجه کنید:

کد: انتخاب همه

-> $rpm -V ppp
S.5.....T  c /etc/ppp/chap-secrets
..?......  c /etc/ppp/eaptls-client
..?......  c /etc/ppp/eaptls-server
..?......  c /etc/ppp/pap-secrets
.M.......  g /run/lock/ppp
.M.......  g /run/ppp
خروجی مثال فوق نشان میدهد که از بسته ppp ( نرم افزاری که برای ایجاد تماس dialup با اینترنت بکار میرود) پس از نصب ۱ تغییر در فایل هایش داشته است. حرف S نشان دهنده تغییر در اندازه فایل, عدد ۵ نشان دهنده تغییر در ترکیب MD5 فایل, حرف T نشان دهنده تغییر در زمان تغییر فایل و حرف c نشان میدهد که این فایل ها فایل های پیکربندی هستند. با بررسی فایل ها متوجه میشویم که تغییرات اعلام شده تغییراتی است که خود من برای تنظیم برنامه ppp انجام داده ام. پس بسته ppp مشکلی ندارد. علائم نشان دهنده ای که با این گزینه با آنها برخورد خواهید کرد عبارتند از:
  • 5 : نشانگر تغییر در MD5 checksum است. نشان دهنده ایجاد تغییراتی در محتوای یک فایل میباشد.
  • S : نشانگر تغییر در اندازه فایل میباشد
  • L : نشانگر این است که فایل تبدیل به یک لینک ظاهری (symbolic) به فایل دیگری شده است.
  • T : زمان تغییر فایل را نشان میدهد.
  • D : فایل مورد نظر تبدیل به یک فایل مخصوص ابزار (Device Special File) شده است.
  • U : کاربر مالک فایل تغییر کرده است
  • G : گروه کاربری فایل تغییر کرده است
  • M : مالکیت یا مجوزهای دسترسی به فایل تغییر کرده است.
  • چطور یک بسته rpm را بررسی کنیم؟ جهت بررسی اطلاعاتی درباره فایل های یک Package نصب شده از طریق RPM Database میتوانید از سوئیچ Vp- یا verify package استفاده نمایید.

کد: انتخاب همه

-> $rpm -Vp anydesk-2.9.5-1.fc24.x86_64.rpm
  • چطور همه بسته های RPM را بررسی کنیم؟ دستور زیر را جهت بررسی همه بسته های RPM نصب شده تایپ کنید.

کد: انتخاب همه

-> $rpm -Va
  • چطور یک RPM GPG KEY را Import (وارد) کنیم؟ جهت بررسی بسته های RHEL/CentOS/Fedora شما میبایست کلید GPG آنها را وارد یا اصطلاحا Import نمایید. به عنوان مثال دستور زیر کلید GPG را در Centos وارد میکند.

کد: انتخاب همه

-> $rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  • چطور همه RPM GPG KEY های Import شده را لیست کنیم؟ جهت چاپ همه کلیدهای GPG در سیستم خود میتوانید از دستور زیر استفاده نمایید.

کد: انتخاب همه

-> $rpm -qa gpg-pubkey*                               
gpg-pubkey-7d838377-582f2494
gpg-pubkey-7f068e5d-563dc081
gpg-pubkey-b9c13282-582f265a
gpg-pubkey-f5282ee4-58ac92a3
  • ]چطور RPM Database آسیب دیده را بازسازی کنیم؟ گاهی اوقات اتفاق می افتد که RPM Database آسیب دیده و همه عملکردهای مربوط به rpm و دیگر برنامه های روی سیستم متوقف میشوند. بنابراین در چنین زمانی ما نیاز داریم که RPM Database را بازسازی کرده و آن را بازیابی کنیم. برای این منظور میتوان به ترتیب از دستورات زیر استفاده نمود.

کد: انتخاب همه

cd /var/lib/rpm
rm __db*
rpm --rebuilddb
rpm db_verify Packages
 ! پیام از: phoenix
برای توضیحات تکمیلی در ارتباط با دستورهای more - cd - rm - grep میتوانید بر روی هر دستور کلیک تا به صفحه همان دستور ارجاع داده شوید