بررسی pkgng در FreeBSD

تاریخچه FreeBSD

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 را با یک ویرایشگر متن باز کرده و مخزن مورد نظر خود را اضافه کنید:

سپس دستور زیر را اجرا کنید تا اطلاعات مربوط به مخزن دانلود یا به روز شود:

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