دوستان سلام. تقریبا چند روز پیش میخواستم برنامه gambas3 رو روی مانجارو نصب کنم، برنامه رو نصب کردم ولی برنامه اجرا نشد و یک ارور داد به این شکل:
از ظاهر اررور میشه فهمید که یک ایرادی در رابطه با پجیج های کیوت وجود داره ولی چند روز از این قضیه میگذره و هنوز نتونستم این مشکل رو برطرف بکنم. راستش رو بخواید دیروز احساس کردم بعد از حدود ۴ ۵ سال کار کردن با لینوکس، هیچ چیز از پکیج ها نمیدونم و به همین خاطر تصمیم گرفتم یک مقاله ی خیلی جامع درباره پکیج ها و پکیج منیجر ها در لینوکس بنویسم تا هم خودم ۰ تا ۱۰۰ این قضیه رو یاد گرفته باشم و هم به شما یاد بدم. پس با من همراه باشید.
عنوان این مقاله هست "نگاهی بر پیکیج منیجر های لینوکس - pacman"
هر وقت خواستید از ۰ تا ۱۰۰ داستان پکیج منیجر ها در لینوکس رو بدونید، این مقاله رو در گوگل سرچ کنید، یا اونو به دوستان خودتون معرفی بکنید :)
من از مانجارو دارم استفاده میکنم که یک توزیع مبتنی بر Arch هست و پکیج منیجرش pacman هست. خب، پکیج منیجر پکمن خیلی سرراسته و دستوراتش، ساختار و نظم مشخصی داره و راحت و قابل فهم هست.
ساختار همه ی دستورات پکمن به این شکل هست:
pacman <operation> <options> <package(s)>
ینی دستور پکمن رو که نوشتیم، ۳ تا گزینه مقابلش باید بزاریم، یکیش operation و دیگری options و اخری هم نام پکیج (یا پکیج های) مد نظرمون
بچه ها دوتا کلمه ی اولی خیلی به هم شبیه هستن، بنابراین بهشون دقت کنید و تلفظشون رو با همدیگه اشتباه نگیرید. برای تلفظ درست میتونید از گوگل ترنزلیت کمک بگیرید
نکته ی ۲:
ممکنه در برخی موارد شما فقط operation رو داشته باشید، یا operation و options رو داشته باشید، و یا در مواردی هم هر سه ۳ تا رو با هم بنویسید. مقاله رو بخونید در مثال هایی که زدم متوجه می شید.
حالا از کجا بفهمیم که این دو گزینه اول چی هستن؟ خیلی راحت. کافیه دستور pacman -help رو توی ترمینال بزنید:
pacman -help usage: pacman <operation> [...] operations: pacman {-h --help} pacman {-V --version} pacman {-D --database} <options> <package(s)> pacman {-F --files} [options] [package(s)] pacman {-Q --query} [options] [package(s)] pacman {-R --remove} [options] <package(s)> pacman {-S --sync} [options] [package(s)] pacman {-T --deptest} [options] [package(s)] pacman {-U --upgrade} [options] <file(s)> use 'pacman {-h --help}' with an operation for available options
همونطور که میبینید، ما بجای operation، هشت تا دستور میتونیم بنویسم: ینی V- و D- و F- و Q- و R- و S- و T- و U- (یادتون باشه همیشه operation با حرف بزرگ هست)
V- | که اول واژه ی version هست و برای بررسی ورژن ازش استفاده میکنیم |
D- | که اول واژه ی database هست و برای کارهای مربوط به دیتابیس پکیج منیجر ازش استفاده میکنیم |
F- | که اول واژه ی files هست و برای کار بار فایل ها ازش استفاده میکنیم |
Q- | که اول واژه ی query هست. کوعری به معنی جستجو هست و ما با استفاده از این میتونم اطلاعاتی رو درباره پکیج ها جستجو بکنیم |
R- | که اول واژه ی remove هست و برای پاک کردن پکیج ها ازش استفاده میکنیم |
S- | که اول واژه ی sync هست و برای نصب پجیج ها ازش استفاده میکنیم |
T- | |
U- | که اول واژه ی upgrade هست و برای آپدیت کردن سیستم عامل و بسته ها ازش استفاده میکنیم |
حالا، هر کدوم از این دستور ها، برای خودشون چندین تا option دارن. ینی مثلا D- برای خودش چندین تا option داره. (یادتون باشه همیشه option با حرف کوچک هست)
برای دیدن آپشن ها کافیه بعد از هر operation، دستور help- رو بزنید. مثلا ما میخواهیم بفهمیم D operation- دارای چند option هست، مانند زیر:
pacman -D -help usage: pacman {-D --database} <options> <package(s)> options: -b, --dbpath <path> set an alternate database location -k, --check test local database for validity (-kk for sync databases) -q, --quiet suppress output of success messages -r, --root <path> set an alternate installation root -v, --verbose be verbose --arch <arch> set an alternate architecture --asdeps mark packages as non-explicitly installed --asexplicit mark packages as explicitly installed --cachedir <dir> set an alternate package cache location --color <when> colorize the output --config <path> set an alternate configuration file --confirm always ask for confirmation --debug display debug messages --disable-download-timeout use relaxed timeouts for download --gpgdir <path> set an alternate home directory for GnuPG --hookdir <dir> set an alternate hook location --logfile <path> set an alternate log file --noconfirm do not ask for any confirmation --sysroot operate on a mounted guest system (root-only)
خب همونطور که می بینید، D operation- دارای چندین تا آپشن (option) هست از جمله b- و k- و -q و r- و v-
آپشن ها رو به دو صورت میتونید بنویسید، یا بصورت اختصاری فقط حرف اولش رو بنویسید مثل v- و یا بصورت کامل بنوبسید مثل verbose--
همونطور که در بالا می بینید، D operation- دارای ۱۹ تا آپشن هست که ۴ تای اولی حالت اختصار هم دارن ولی بقیه حالت اختصار ندارن
نکته ی ۲:
هر کدوم این حروفات انگلیسی، حرف اول یک کلمه هستن. مثلا Q حرف اول query (به معنی جستجو هست)، i حرف اول کلمه ی info هس، d حرف اول کلمه ی database هست، F حرف اول کلمه ی files هست. این ها رو اینجوری یاد بگیرید از یادتون نمیره ;)
خب، تا اینجا فکر میکنم با ساختار کلی دستورات pacman آشنا شدید :) ، اگر تا اینجا سوالی دارید حتما توی کامنتها بپرسید.
حالا بریم سراغ مثال های عملی و موارد بالایی رو به همراه مثال بررسی کنیم :
مثال اول: می خواهیم تمام پکیج هایی که روی سیستم ما نصب هست رو (به همراه توضیحات کامل هر پکیج) ببینیم. از این دستور استفاده میکنیم pacman -Q -i
(اگه بخوایم فقط اسم پکیج هارو ببینیم و توضیحاتش رو نبینیم، فقط دستور pacman -Q رو میزنیم )
pacman -Q -i Name : zvbi Version : 0.2.35-3 Description : VBI capture and decoding library Architecture : x86_64 URL : http://zapping.sourceforge.net/cgi-bin/view/ZVBI/WebHome Licenses : GPL Groups : None Provides : None Depends On : libpng libx11 Optional Deps : None Required By : gst-plugins-bad Optional For : vlc Conflicts With : None Replaces : None Installed Size : 1367.00 KiB Packager : Maxime Gauduin <alucryd@archlinux.org> Build Date : Fri 24 Aug 2018 12:18:59 PM +0430 Install Date : Wed 11 Sep 2019 03:50:27 PM +0430 Install Reason : Installed as a dependency for another package Install Script : No Validated By : Signature
دوستان، خروجی این دستور خیلی زیاد هست، من فقط مقدار کمی از خروجی رو براتون نوشتم. همونطور که می بینید، پکیج zvbi روی سیستم من نصب هست و تمام اطلاعات مربوط به این پکیج از جمله اسم، ورژن، توضیحات، url، لایسنس، Depends On (ینی اینکه این پکیج به چه پکیج های دیگه ای وابسته هست)، Required By (ینی این پکیج توسط چه پکیج های دیگه ای مورد نیاز هست) و تمام اطلاعات دیگر رو درباره پکیج zvbi بهمون داد.
مثال دوم: می خواهیم اطلاعات یک پکیج خاص رو بدست بیاریم. برای مثال می خواهیم اطلاعات پکیج nettle رو بدست بیاریم. از این دستور استفاده میکنیم pacman -Q -i nettle
pacman -Q -i nettle Name : nettle Version : 3.5.1-1 Description : A low-level cryptographic library Architecture : x86_64 URL : https://www.lysator.liu.se/~nisse/nettle Licenses : GPL2 Groups : None Provides : None Depends On : gmp Optional Deps : None Required By : dnsmasq gnutls gtkhash lib32-nettle stoken xorg-server Optional For : None Conflicts With : None Replaces : None Installed Size : 857.00 KiB Packager : Andreas Radke <andyrtr@archlinux.org> Build Date : Sun 30 Jun 2019 01:51:56 PM +0430 Install Date : Wed 11 Sep 2019 03:48:14 PM +0430 Install Reason : Installed as a dependency for another package Install Script : No Validated By : Signature
خب، همونطور که می بینید تمام اطلاعات مربوط به پکیج nettle رو دریافت کردیم.
مثال سوم: می خواهیم پکیج هایی رو که بصورت دیپندنسی (توسط سایر پکیج ها) نصب شدن رو ببینیم. از این دستور استفاده میکنیم pacman -Q -d
pacman -Q -d a52dec 0.7.4-10 aalib 1.4rc5-13 acl 2.2.53-1 adobe-source-code-pro-fonts 2.030ro+1.050it-5 adwaita-icon-theme 3.32.0-1 alsa-lib 1.1.9-2 alsa-plugins 1.1.9-2 aom 1.0.0.errata1-1 appstream-glib 0.7.15-1 apr 1.7.0-1 apr-util 1.6.1-5 archlinux-appstream-data 20190825-1 archlinux-keyring 20200108-1 argon2 20190702-1
همونطور که میبینید، یک لیست بهم داد. البته این لیست خیلی طولانی بود و من فقط قسمت کمی از لیست رو براتون اوردم. اینها پکیج هایی هستند که توسط سایر پکج ها (بصورت dependency ) نصب شدن.
مثال چهارم: می خواهیم یک پکیجی رو روی سیستم خودمون نصب کنیم. از دستور زیر استفاده میکنیم
<نام پکیج> sudo pacman -S (در این روش، پکیج به همراه تمام وابستگی هایش (دیپندنسی) نصب میشه. برای مثال من پکیج gimp رو نصب میکنم
sudo pacman -S gimp resolving dependencies... looking for conflicting packages... Packages (1) gimp-2.10.18-2 Total Download Size: 20.38 MiB Total Installed Size: 111.44 MiB Net Upgrade Size: 7.76 MiB :: Proceed with installation? [Y/n]
همونطور که دیدید اگه y رو بزنم پکیج gimp به همراه تمام دیپندنسی هایش نصب میشه
مثال پنجم: می خواهیم یک پکیج رو از سیستم حذف کنیم، از دستور sudo pacman -R استفاده میکنیم. برای مثال من پکیج gimp رو از سیستم حذف میکنم
sudo pacman -R gimp checking dependencies... Packages (1) gimp-2.10.12-2 Total Removed Size: 103.68 MiB :: Do you want to remove these packages? [Y/n] ^C Interrupt signal received
همونطور که می بینید، اگه y رو بزنید پکیج gimp از سیستم حذف میشه
دوستان گرامی، اینها بخش کوچکی از کارهایی بود که میشه با pacman انجام داد. درباره ی پکمن به قدری مطلب زیاد هست که میشه یک کتاب کامل دربارش نوشت. من در پست های بعدی مطالب بیشتر و عمیق تری درباره پکیج منیجر ها در لینوکس و خصوصا پکیج منیجر pacman خواهم نوشت.
واسم حتما کامنت بزارید
مرسی.مانجارو نصب کردم .از قسمت ریبلس بارتیشن استفاده کردم.درایورا به هم ریخته.انگار تو یه کشور خارجی گیر کردم.