۱ مقدمه
برنامه های بسیاری به صورت آزاد و رایگان برای سیستم عامل های خانواده یونیکس وجود دارد که معمولا این برنامه ها در قالب کد مبدا در دسترس هستند. قبل از اینکه این برنامه قابل استفاده شود نیاز دارد برروی سیستم شما پیکربندی، کامپایل و در آخر هم نصب شود، این اعمال دقیقا توسط برنامه ای به نام pkgsrc در سیستم عامل NetBSD انجام می شود.
برنامه pkgsrc شامل یک سری فرمان هایی برای کار با بسته های باینری (بسته های از پیش کامپایل شده و آماده نصب) است. بنابراین کاربران حتی نیازی به ساختن بسته های شخصی برای خود ندارند که این عمل بسیار زمان بر است.
برنامه pkgsrc شامل چندین هزار بسته است که معروف ترین آنها شامل بسته های زیر است:
- www/apache برای سرور apache
- www/firefox مرورگر معروف firefox
- meta-pkgs/gnome محیط گرافیکی gnome
- meta-pkgs/kde3 محیط گرافیکی KDE
- و بسته های بیشمار دیگر
برنامه pkgsrc طراحی شده به همراه پشتیبانی از همه وابستگی هایی مانند pthreads و X11 و ویژگی های توسعه یافته از جمله پشتیبانی از ipv6 در اکثر ساختار سیستم عامل ها.
-۱-۱ چرا pkgsrc؟
این برنامه شامل ویژگی های کلیدی زیر است:
- به راحتی برنامه های مورد نظر را از کد مبدا نصب می کند و همچنین از قابلیت نصب بسته های باینری هم حمایت می کند. کد سورس برنامه ها به همراه اخرین تغییرات امنیتی از سایت اصلی برنامه یا از سایت های پشتیبانی دریافت می شود و به وسیله checksum مورد تایید قرار می گیرد و بعد از آن برروی سیستم شما نصب می شود.
- همه بسته هایی که با این سیستم نصب می شود در یک ساختار ثابت قرار می گیرند مثل شاخه های مخصوص فایل های باینری توابع صفحات man و سایر مقالات کمکی.
- وابستگی بسته ها مثل بروزرسانی آنها به صورت خودکار نصب می شود. فایل های پیکربندی بسته های مختلف در زمان بروز رسانی به کار گرفته می شوند. بنابراین با این روش تغییرات محلی حفظ می شود.
- همانند سیستم عامل NetBSD برنامه pkgsrc قابل حمل بودن در بین بسیاری از ساختارهای مختلف را دارد. این امر باعث می شود که سرعت توسعه یک پورت بالا برود. قابل حمل بودن این ساختار تضمین می کند که این برنامه بر روی همه ساختارها نصب شود.
- پیشوند نصب، مجوزهای نرم افزارهای قابل قبول، گزینه های ساختاری زمان نصب و کد گذاری های بین المللی برای همه بسته های قابل نصب به راحتی از طریق یک فایل پیکربندی مرکزی قابل تنظیم است.
- سورس این برنامه (نه شامل همه بسته هایی که از طریق این سیستم نصب می شود) تحت لایسنس BSD ارایه می شود و این لایسنس به شما این امکان را می دهد تا برنامه pkgsrc را به تناسب نیاز خود تغییر دهید.
اصول پایه ای در pkgsrcعبارت است از:
- اگر همه چیز خوب باشد این برنامه به خوبی کار می کند، این بدین معناست که اگر یک بسته شامل باگی باشد بهتر است که مشکل بسته مورد نظر را رفع کنید تا بسته را به این امید نصب کنید که به درستی کار کند. کنترل های متعددی در برنامه pkgsrc وجود دارد تا باگ ها را کشف کند که شامل برنامه های دستی برای این منظور است و در زیر شاخه pkgtools/pkglint قرار دارد، در زمان نصب باگ ها چک می شود و بعد از نصب هم این عمل اتفاق می افتد.
- اگر برنامه ای کار کند باید همه جا کار کند، مثل سیستم عامل NetBSD که طراحی شده است برای ساختارهای سخت افزاری مختلف، برنامه pkgsrc هم برای همه نوع سیستم عامل که در لیست است طراحی شده است. همه بسته ها رفتارهای یکسانی از خود نشان می دهند.
-۱-۲ ساختارهای پشتیبانی شده
برنامه pkgsrc هم شامل کدهای منبع توزیع شده و هم بسته های باینری توزیع شده برای این سیستم عامل هاست. بعد از بازیابی دریافت کد منبع با بسته های باینری، می توانید برنامه pkgsrc را در کسری از ثانیه راه اندازی کنید.
برنامه pkgsrc از ساختار portدر سیستم عامل FreeBSD مشتق شده است و از ابتدا توسط پروژ NetBSD توسعه یافته است. بعد از توسعه یافتن، این برنامه در ساختار های زیر نیز نصب می شود.
ساختار سیستم عامل | زمان اضافه شدن پشتیبانی |
NetBSD(http://www.NetBSD.org/) | Aug 1997 |
Solaris (http://wwws.sun.com) | Mar 1999 |
Linux (http://www.kernel.org/) | Jun 1999 |
Mac OS X(http://developer.apple.com/macosx) | Oct 2001 |
FreeBSD (http://www.freebsd.org) | Nov 2002 |
OpenBSD(http://www.openBSD.org) | Nov 2002 |
RIX (http://www.sgi.com/software/irix) | Dec 2002 |
BSD/OS | Dec 2003 |
AIX(http://www.1.ibm.com/servers/aix) | Dec 2003 |
interix(/www.microsoft.com/windows/sfu) | Mar 2004 |
DragonflyBSD(http://www.DragonFlyBSD.com) | Oct 2004 |
OSF/1(http://www..tru64.org) | Nov 2004 |
HP-UX(http://www.hp.com/products1/unix) | Apr 2007 |
HaiKun(http://http://www.haiku-os.org) | Sep 2010 |
MirBSD (http://www.mirbsd.org) | Jan 2011 |
Minix3(http://www.minix3.org) | Nov 2011 |
cygwin(http://cygwin.com) | Mar 2013 |
GNU/kFreeBSD(http://www.debian.org) | Jul 2013 |
۱٫۲ بررسی اجمالی
در یک دید کلی این کتاب به سه دسته کلی تقسیم شده است. بخش اول The pkgsrc user’s guide است که توضیح جامعی در مورد نصب بسته های باینری و نصب از طریق کد برنامه را توضیح می دهد. بخش دوم pkgsrc developer’s guide این بخش به شما یاد خواهد داد بدون در نظر گرفتن دانش خاصی در زمینه ایجاد بسته به چه صورت بسته های باینری مورد نظر را ایجاد کنید و در بخش سوم The pkgsrc infrastructure internals برای کسانی در نظر گرفته شده است که قصد دارند بدانند یک بسته به چه صورتی ایجاد شده است.
۱٫۳ اصطلاحات به کار رفته
در ادامه این مطالب شاید بارها اصطلاحاتی از جمله بسته و یا port استفاده شود، در ادامه همین بخش با این قبیل اصطلاحات آشنا می شوید.
بسته (package)
مجموعه ای از فایل هاست که طبق یک دستورالعمل خاص توصیف داده شده است ان چیزی که نیاز است برای ایجاد کردن یک بخش کوچکی از برنامه که در pkgsrc استفاده می شود. بسته در این برنامه در زیر شاخه /usr/pkgsrc ذخیره می شوند.
NetBSD package system
این نام، نام سابق سیستم pkgsrc است. این سیستم یک بخشی از سیستم عامل NetBSD است که می توان آن را با bootstrapped کردن برروی سایر سیستم عامل های غیر از خانواده BSD نصب و راه اندازی کرد. این سیستم توانایی کامپایل کردن، نصب کردن و پاک کردن بسته ها را بر عهده دارد.
Distfile
این نام به فایل یا فایل هایی اشاره دارد که به وسیله سایر بخش های برنامه به وجود می آیند، برای این منظور که توزیع از یک برنامه به درستی کار کند.
:potrs
این اصطلاح بیشتر در سیستم عامل های FreeBSD وOpenBSD برای نصب برنامه ها در نظر گرفته شده است که این ساختار در NetBSD دارای معماری مختلفی از این دو سیستم عامل است.
بسته های باینری:
این بسته ها از دل برنامه pkgsrc تولید می شوند و بخش پایانی نام فایل به tgz ختم می شود و شما برای نصب کردن بسته های باینری نیازی به کامپایل کردن برنامه ندارید. این بسته ها به صورت پیش فرض در شاخه /usr/pkgsrc/packages قابل مشاهده است.
بخش های درگیر شده در pkgsrc:
کاربران pkgsrc
کاربران در این سیستم به اشخاصی گفته می شود که از بسته های ایجاد شده از آن برنامه استفاده می کنند که در اکثر موارد مدیران سیستم ها هستند. کاربرانی که فقط از بسته هایی که در این سیستم ایجاد شده استفاده می کنند به اصطلاح به آنها کاربر نهایی می گویند. مطالب ارایه شده در این مقالات برای این دسته از کاربران مفید نیست.
دو دسته کاربر در pkgsrc وجود دارد، دسته اول که با استفاده از این برنامه بسته های باینری از قبل تهیه شده را نصب می کنند و دسته دوم با استفاده از این برنامه بسته ها را از کد مبدا دریافت کرده و به تناسب نیاز خود آنها را به صورت بسته های باینری در می آورند. برای این دو دسته از کاربران بخش اول این مقاله مفید فایده است.
نگهدارنده بسته ها:
موارد مورد نیاز این گروه در بخش دوم از این مقاله در نظر گرفته شده است.
توسعه دهندگان زیرساخت:
این گروه از افراد با فایل هایی که در زیر شاخه mk قرار دارند کار می کنند و این افراد نیاز دارند که بخش سوم از این مقاله را مطالعه کنند.
حروف چینی:
زمانی که شما مثال هایی از فرامین اجرا شده را مشاهده می کند با دوسطح دسترسی کاربر معمولی و مدیر سیستم این فرامین را مشاهده می کنید. برای بخش کاربر با سطح دسترسی معمولی فرامین با علامت % شروع و فرامین مدیر سیستم با علامت # شروع می شود و همه فرامین در در محیط tcsh و csh اجرا و نمایش داده می شود.