pkgng نسل جدید مدیر بستهها در FreeBSD است. این ابزار قرار است جایگزینی برای دستورات pkg_* باشد. استفاده از pkgng بسیار سادهتر از ابزارهای pkg_* است. توجه داشته باشید که pkgng تنها برای مدیریت بستههای باینری و از قبل کامپایل شده استفاده میشود و شما نمیتوانید از آن برای کامپایل کردن پورت های FreeBSD استفاده کنید. همین طور قرار نیست pkgng جایگزینی برای portupgrade/portmaster باشد. در عوض شما با استفاده از pkgng می توانید بستههای باینری جدیدی را از یک مخزن راه دور نصب کنید، بستههای باینری نصب شده را حذف کرده، آنها را به روزرسانی کنید، و به طور کلی به مدیریت بستههای باینری بپردازید. در ادامه به چگونگی استفاده از این ابزار میپردازیم.
نصب pkgng
به خاطر اینکه pkgng هنوز به طور کامل آماده نیست (البته در مراحل پایانی قرار دارد) نسخههای فعلی FreeBSD فاقد این ابزار میباشند. اما قرار است در آینده pkgng به طور کامل جایگزین ابزارهای pkg_* شود. در هر صورت برای نصب کردن pkgng کافی است به صورت زیر عمل کنید:
# cd /usr/ports/ports-mgmt/pkg # make install clean
اگر درخت پورت ها را در سیستم خود ندارید، می توانید pkgng را از طریق بستههای باینری نصب کنید:
# pkg_add -r pkg
استفاده از pkgng
بعد از اتمام نصب، به کمک دستور pkg می توانید به مدیریت بستههای نرمافزاری بپردازید. اگر دستور pkg را بدون هیچ آرگومانی فراخوانی کنید، خروجی زیر را خواهید دید:
usage: pkg [-v] [-d] [-j <jail name or id>|-c <chroot path>] <command> [<args>] Global options supported: -d Increment debug level -j Execute pkg(1) inside a jail(8) -c Execute pkg(1) inside a chroot(8) -v Display pkg(1) version Commands supported: add Registers a package and installs it on the system audit Reports vulnerable packages autoremove Removes orphan packages backup Backs-up and restores the local package database check Checks for missing dependencies and database consistency clean Cleans old packages from the cache create Creates software package distributions delete Deletes packages from the database and the system fetch Fetches packages from a remote repository help Displays help information info Displays information about installed packages install Installs packages from remote package repositories query Queries information about installed packages register Registers a package into the local database remove Deletes packages from the database and the system repo Creates a package repository catalogue rquery Queries information in repository catalogues search Performs a search of package repository catalogues set Modifies information about packages in the local database shell Opens a debug shell
shlib Displays which packages link against a specific shared library
stats Displays package database statistics update Updates package repository catalogues updating Displays UPDATING information for a package upgrade Performs upgrades of packaged software distributions version Displays the versions of installed packages which Displays which package installed a specific file For more information on the different commands see 'pkg help <command>'.
یکی از جالب توجه ترین قابلیت های pkgng این است که به شما اجازه میدهد تا بستههای موجود در داخل یک jail را هم مدیریت کنید. کافی است از گزینه -j برای مشخص کردن jail مورد نظر خود استفاده کنید. گزینه -v باعث میشود تا pkg گزارش کاملی از فعالیتهایش را به شما ارائه دهد.
دستورات
دستور | توضیح |
---|---|
help <command> | نحوه استفاده از دستور مشخص شده را چاپ میکند. |
add | برای نصب کردن یک بسته از دیسک محلی یا از یک سیستم راه دور استفاده میشود. برای اینکه بستهای را از یک سیستم راه دور نصب کنید، باید پروتکل مورد استفاده راهم مشخص کنید. (مثلا http، ftp و … ) |
audit | این دستور بسته مورد نظر از نظر آسیبپذیریهای امنیتی بازرسی میکند. |
autoremove | این دستور بستههایی که به صورت خودکار و به عنوان وابستگیهای بستههای دیگر نصب شدهاند و دیگر به آنها احتیاج نیست را پاک میکند. |
backup | اطلاعات تمام بستههای نصب شده در یک بانک اطلاعاتی ذخیره میشود. این دستور از این بانک اطلاعاتی یک نسخه پشتیبان تهیه کرده و آن را در یک فایل ذخیره میکند. مکان این فایل را باید شما مشخص کنید. |
check | بستههای نصب شده را چک میکند. |
clean | بستهها بعد از دانلود در جایی ذخیره میشوند. این دستور بستههای دانلود شده را حذف میکند. |
create | یک بسته ایجاد میکند. |
delete | یک بسته را از سیستم حذف میکند. |
fetch | یک بسته را از مخازن راه دور دانلود میکند. |
info | اطلاعاتی را درباره بستههای نصب شده چاپ میکند. |
install | بستهای را از یک مخزن راه دور نصب میکند. اگر بسته مورد نظر در چند مخزن موجود باشد، اولین مخزن استفاده خواهد شد. |
query | برای پرسوجوی اطلاعات درباره بستههای نصب شده استفاده میشود. |
register | بستهای را در بانک اطلاعاتی ثبت میکند. |
repo | یک مخزن نرمافزاری ایجاد میکند. از این مخزن میتوانید از راه دور استفاده کنید. |
upgrade | یک بسته را به نسخه جدیدتر ارتقا میدهد. |
فایل pkg.conf
pkg یک فایل پیکربندی دارد که از طریق این فایل میتوانید رفتارهای پیش فرض pkg را کنترل کنید. این فایل به صورت پیش فرض در مسیر /usr/local/etc/pkg.conf قرار دارد. به کمک یک ویرایشگر متن میتوانید این فایل را ویرایش کنید. خطوطی که با کارکتر # شروع شوند، به صورت توضیح در نظر گرفته میشوند و از آنها صرف نظر میشود. یک فایل پیکربندی نمونه در مسیر /usr/local/etc/pkg.conf.sample قرار دارد که میتوانید آن را در مسیر مورد نظر خود کپی کنید:
cp /usr/local/etc/pkg.conf.sample /usr/local/etc/pkg.conf
دایرکتیو | توضیحات |
---|---|
ASSUME_ALWAYS_YES: boolean | وقتی که این دایرکتیو فعال باشد، pkg فرض میکند که کاربر به تمام پرسشها پاسخ yes داده است. (pkg همیشه قبل از انجام بعضی از کارها از کاربر سوالاتی پرسیده و در صورت موافقت کاربر اقدام به انجام آنها میکند.) فعال کردن این دایرکتیو معادل استفاده از گزینه -y است. |
PUBKEY: string | مخازن راه دور برای اطمینان از صحت ارسال بستهها، از یک کلید RSA برای امضا کردن بستهها استفاده میکنند. این دایرکتیو مشخص کننده موقعیت این کلید در سیستم است. این کلید به صورت پیش فرض در مسیر /etc/ssl/pkg.conf قرار دارد. |
PACKAGESITE: string | pkgng بستهها رااز یک مخزن راه دور نصب میکند. منظور از مخزن نرمافزاری، جایی است که تعدادی بسته جمعآوری شدهاند و کاربران میتوانند با اتصال به آن بستههای موجود در آن را دانلود کرده و نصب نمایند. به کمک این دایرکتیو میتوانید این مخازن را معرفی کنید. |
PKG_CACHEDIR: string | وقتی که بستهها از مخزن راه دور دانلود شدند، در جایی ذخیره میشوند تا در آینده دیگر نیازی به دانلود مجدد آنها نباشد. این دایرتیو مشخص میکند که بستهها بعد از دانلود در کجا ذخیره شوند. این مسیر به صورت پیش فرض /var/cache/pkg است. |
PKG_DBDIR: string | همان طور که قبلا گفته شد، اطلاعات مربوط به بستههای نصب شده در یک بانک اطلاعاتی ذخیره می شود. به کمک این دایرکتیو می توانید موقعیت این بانک اطلاعاتی را مشخص کنید. به صورت پیش فرض، این بانک اطلاعاتی در مسیر /var/db/pkg قرار دارد. |
PKG_MULTIREPOS: boolean | شما میتوانید از چند مخزن نرمافزاری استفاده کنید. این دایرکتیو باعث فعال شدن این قابلیت خواهد شد. |
PORTSDIR: string | این دایرکتیو موقعیت درخت پورت ها در سیستم را مشخص میکند. به صورت پیش فرض، مقدار این دایرکتیو /usr/ports است. |
SYSLOG: boolean | اگر این دایرکتیو فعال باشد (که به صورت پیش فرض فعال است) گزارشی از تمام عملیات نصب/ حذف/ به روزرسانی در سیستم ثبت خواهد شد. |
استفاده
ابتدا باید مخازن مورد نظر خود را اضافه کنید تا قادر به دانلود بستهها باشید. در حال حاضر یک سری مخازن بتا راهاندازی شده که میتوانید از آنها استفاده کنید. وارد سایت http://pkgbeta.freebsd.org شده و یکی از این مخازن را متناسب با نسخه FreeBSD خود انتخاب کنید. سپس فایل /usr/local/etc/pkg.conf را با یک ویرایشگر متن باز کرده و مخزن مورد نظر خود را اضافه کنید:
PACKAGESITE: http://pkgbeta.freebsd.org/freebsd-9-i386/latest/
سپس دستور زیر را اجرا کنید تا اطلاعات مربوط به مخزن دانلود یا به روز شود:
pkg update
دقت داشته باشید که حتما باید دستور بالا را اجرا کنید وگرنه مخازنی که اضافه کرده اید قابل استفاده نخواهند بود. بهتر است طی دوره های زمانی متفاوت این دستور را اجرا کنید تا اطلاعات مخزن به روز شده و بتوانید از آخرین نسخه نرمافزارها استفاده کنید.
حال که توانستیم مخازن را اضافه کنیم، می توانیم در آنها به دنبال نرم افزار مورد نظر خود جستجو کرده و نرمافزارهایی را برای انجام کارهای متفاوت کشف کنیم:
# pkg search pidgin pidgin-twitter-0.9.2_1 A pidgin plugin to help twitting via pidgin pidgin-encryption-3.1_1 Encryption Plugin for the Pidgin instant messenger client pidgin-audacious-remote-0.5_2 Pidgin-Audacious-Remote is a plug-in for Pidgin 2 pidgin-fetion-0.98.5.2_4 Fetion protocol plugin for libpurple e17-module-everything-pidgin-20111128 An e17 pidgin plugin for the "everything" module pidgin-birthday-reminder-1.7_4 The birthday reminder for Pidgin pidgin-pidgimpd-1.1.1_9 PidgiMPD is a Pidgin plugin for monitoring/controlling MPD pidgin-msn-pecan-0.1.0.r1_8 Alternative MSN protocol plugin for libpurple pidgin-privacy-please-0.7.1_2 A privacy plugin for the pidgin instant messenger pidgin-bs-1.3.0_6 Pidgin plugin to prevent instant message spam pidgin-2.10.6 Pidgin multi-protocol messaging client (GTK+ UI) pidgin-sipe-1.13.1_1 A plugin for Pidgin to provide LCS/OCS connectivity pidgin-rhythmbox-2.0_6 Plugin to update your status with info from Rhythmbox pidgin-osd-0.1.0_3 A pidgin plugin for displaying new messages on screen pidgin-otr-3.2.1 Allows deniable private conversations using Pidgin pidgin-manualsize-0.7_3 Plugin to allow manual resizing of Pidgin's message input area pidgin-latex-1.0_6 Display LaTeX output in your IMs pidgin-facebookchat-1.69_2 Facebook Chat for Pidgin pidgin-guifications-2.16_5 Plugin to add msn style "toaster" popups to Pidgin pidgin-musictracker-0.4.1_6 Plugin for Pidgin to displays the music track currently playing pidgin-libnotify-0.14_11 This plugin adds a libnotify interface to Pidgin pidgin-hotkeys-0.2.4_16 A pidgin plugin that allows user to assign global hotkeys #
بعد از پیدا کردن نرمافزارهای مورد نیاز خود میتوانیم آنها را از مخازن نصب کنیم:
# pkg install pidgin-2.10.6 Updating repository catalogue Repository catalogue is up-to-date, no need to fetch fresh copy The following packages will be installed: Installing pkgconf: 0.8.5 Installing xproto: 7.0.22 Installing libiconv: 1.14 Installing libpthread-stubs: 0.3_3 Installing libXau: 1.0.6 ... The installation will require 436 MB more space ۸۷ MB to be downloaded Proceed with installing packages [y/N]:
pkg لیست وابستگی ها را چاپ کرده و به شما میگوید که چقدر فضای خالی احتیاج دارید و چه میزان فایل باید از اینترنت دانلود شود. با y پاسخ مثبت دهید تا نرم افزار نصب شود. دقت کنید که pkg همیشه قبل از نصب یک نرمافزار دستورpkg update را اجرا کرده تا مخازن به روز شوند. برای به روزرسانی یک بسته کافی است دستور زیر را اجرا کنید:
# pkg upgrade pidgin
همین طور برای حذف یک بسته:
# pkg delete pidgin