مقدمه:

شاید شما به خاطر یک سری دلایل قصد داشته باشید یک بخش یا همه بسته های ایجاد شده در برنامه pkgsrc  را در حالت باینری ایجاد کنید برای مثال شما تعداد زیادی سیستم دارید که همه آنها یک سری برنامه های خاص  و یکسانی را اجرا می کنند و برای شما نصب و راه اندازی از طریق سیستم سورس بسیار زمان گیر است. یا در یک سری از مواقع قصد دارید که برنامه ای را که می خواهید در سیستم خود راه اندازی و ارایه کنید تست کنید.  راه هایی برای  ایجاد کردن بسته های باینری در این سیستم وجود دارد: سیستم ایجاد bulk یا سیستم موازی bulk(pbulk).

در این فصل برای شما توضیح داده خواهد شد که به چه صورتی بسته های باینری را در این سیستم ایجاد کنید که بتوانید بعدا از آنها استفاده کنید.

۱-۷ آماده سازی:

قبل از تصمیم گرفتن برای ایجاد همه بسته ها یا بخشی از بسته های مورد نظر باید تصمیم بگیرید که کجا قصد دارید این کار را انجام دهید. ایجاد کردن همه بسته ها نیاز به فضا و زمان زیادی دارد تا ایجاد کردن یک بخش کوچکی از بسته ها. تعداد زیادی بسته حجیم و بلا استفاده در این سیستم وجود دارد که مخاطبان زیادی ندارد، پس برای محدود کردن حالت bulk builds باید لیستی از بسته های مورد نظر خود را تهیه کنید. در این حالت باید توجه کنید که بسته های مورد نیاز بسته های اصلی شما هم به صورت خودکار ایجاد می شود و نیازی به تنظیمات دستی ندارد.

در زمان ایجاد کردن بسته ها بسته های زیادی نصب یا از حالت نصب در شاخه /usr/pkg خارج می شوند  بنابراین توجه داشته باشید که به بسته های ایجاد شده نیازی نداشته باشید. پیشنهاد می شود که برای انجام این عمل بهتر است که یک سیستم جداگانه و تازه pkgsrc را نصب  و از آن برای ایجاد کردن  بسته ها استفاده کنید و یا با قابلیت chroot محدودیت برای این امر ایجاد کنید. به این نکته هم توجه کنید که عمل bulk builds هیچ گاه در سیستم شما به اصطلاح شکسته نشود.

۲٫۷راه اندازی کردن یک pbulk-style bulk build

مراحل راه اندازی pbulk-style bulk build تقریبا به شرح زیر است:

ابتدا زیر ساخت های مورد نیاز را در یک pkgsrc تازه نصب شده ایجاد کنید.

سپس هر بسته را به صورت نصب از ابتدا با استفاده از زیرساخت ایجاد کنید.

۱-۲-۷ مرحله پیکربندی

برای پیکربندی ساده یک اسکریپت ساده کمکی به نام pbulk.sh در شاخه /mk/pbluk

برای استفاده کردن از این اسکریپت شما نیاز به یک سیستم دست نخورده و بدون تغییر دهی در فایل های پیکربندی اصلی دارید و برای دریافت کردن فایل های برنامه ها به یک دسترسی به اینترنت نیاز دارید و کاربری به نام pbulk هم ایجاد کنید.

در بخش اول با استفاده از فرمان های زیر برنامه pkgsrc رو دریافت و از حالت فشرده خارج کنید:

 (cd /usr && ftp -o – http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz | tar -zxf-)#

(cd /usr && fetch -o – http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz | tar -zxf-)#

 (cd /usr && cvs -Q -z3 -d anoncvs@anoncvs.NetBSD.org:/cvsroot get -P pkgsrc)#

در بالا سه راحت روش دانلود بیان شده که البته برنامه های مشابه به نام wget و curl هم وجود دارد.

در مرحله بعدی اجرا و پیکربندی کردن ابزار pbulk به صورت زیر:

 sh pbulk.sh -n  # native (NetBSD)#

 sh pbulk.sh -n -c mk.conf.frag  # native, apply settings from given mk.conf fragment#

 sh pbulk.sh -nlc mk.conf.frag   # native, apply settings, configure for limited build#

به این نکته توجه کنید که فایل mk.conf.frag  یک بخشی از فایل mk.conf  است که شامل یک سری تغییراتی است که شما دوست دارید به بسته های ایجاد شده اعمال کنید مثل :

PKG_DEVELOPER= yes # perform more checks
X11_TYPE= modular # use pkgsrc X11
SKIP_LICENSE_CHECK= yes # accept all licences (useful when building all packages)

اگر قصد دارید که لیست بسته ها را محدود کنید بهتر است که لیست خودتان رو با لیست اصلی در فایل usr/pbulk/etc/pbulk.list جابجا کنید فقط به این نکته توجه کنید که نام هر بسته در یک خط قرار بگیرد و بین نام ها هم فاصله نداشته باشد. همانند مثال زیر:

www/firefox
mail/thunderbird
misc/libreoffice4

در این مرحله شما می توانید فایل هایی را که در شاخه /usr/pbulk/etc قرار دارند را مورد بازنگری قرار دهید و اگر مایل باشید تنظیمات خودتان را اعمال کنید.

برای شروع کردن این برنامه فرمان زیر را اجرا کنید:

 /usr/pbulk/bin/bulkbuild#

بعد از به اتمام رسیدن این برنامه، فایل های توزیع شده در شاخه mnt قرار می گیرند و خلاصه همه وقایع شامل ایجاد شدن بسته ها و گزارشات به صورت یک فایل متنی در مسیر زیر قرار می گیرد:

mnt/bulklog/meta/report.txt/

 

نکته: اسکریپت pbulk.sh همه حالت های ممکن را پوشش نمی دهد قبل از اجرا آن را خوب مطالعه کنید.

۳-۷ نیازهای سیستمی برای حالت کامل bulk

حالت کامل ایجاد کردن بسته ها به فضای دیسک زیادی نیاز دارد، بعضی از این فضاها باید فقط حالت خواندن داشته باشد وبعضی دیگر باید حالت نوشتن هم داشته باشد. در یک سری موارد نیاز به فایل سیستم های تحت شبکه است و در سایر موارد نیاز به فایل سیستم محلی و در بعضی از موارد هم نیاز به فایل سیستم های موقت دارید که بعد از راه اندازی مجدد، سیستم فایل های قرار گرفته در آن پاک شود، در زیر مقدار فضای مورد نیاز هر بخش را مشاهده می کنید:

۴۰ گیگابایت فضا برای فایل های دانلود شده به نام distfile که فضای در نظر گرفته شده برای این بخش می تواند  موقت و یا تحت شبکه باشد و هم قابلیت خواندن و هم نوشتن داشته باشد.

۳۰ گیگابایت فضا برای بسته های باینری ایجاد شده که فضای در نظر گرفته شده برای این  بخش باید دائم،  تحت شبکه یا محلی  باشد و هم قابلیت خواندن و هم نوشتن داشته باشد.

۱ گیگابایت فضا برای شاخه های برنامه pkgsrc که فضای در نظر گرفته شده برای این بخش باید دایمی، تحت شبکه با محلی و قابلیت فقط خواندن برای آن کافی است.

۵ گیگا بایت فضا برای localbase که در نصب بعدی به صورت کامل با آن آشنا می شوید این فضا می تواند موقت، محلی و دارای قابلیت خواندن و نوشتن باشد.

۱۰ گیگابایت برای فایل های گزارش یا همان log فایل. این فضا دایمی برروی شبکه و قابل خواندن و نوشتن باشد.

۵ گیگابایت برای فایل های موقت. این فضا می تواند موقت محلی و قابل خواندن و نوشتن باشد.

۴-۷ ایجاد کردن CD ها از بسته های ایجاد شده

بعد از به اتمام رسیدن مراحل شاید قصد داشته باشید که از بسته های ایجاد شده برای خودتان CD تهیه کنید تا بتوانید از بسته ها برروی سایر سیستم ها استفاده کنید. یک برنامه بسیار ساده و راحت به نام cdpack در شاخه pkgtools وجود دارد که برای ایجاد کردن تصاویر cd با فرمت ISO 9660 است. یکی از قابلیت های این برنامه این است که برنامه هایی که به هم مرتبط هستند را برروی CD قرار می دهد تا کارآمدتر باشد.

۱-۴-۷ مثالی از برنامه CDPACK

توضیحات کامل استفاده از این برنامه را در صفحه MAN برنامه به نام cdpack می توانید مطالعه کنید. در ادامه یک مثال ساده از این برنامه را مشاهده می کنید در این مثال فرض شده است که تمام بسته های نصب شده در شاخه /usr/pkgsrc/packagesa/all قرار گرفته و یک فضایی به نام u2 برای محل ذخیره سازی فایل های تصاویر Cd در نظر گرفته شده است.

 mkdir /u2/images #
 pkg_add /usr/pkgsrc/packages/All/cdpack#
 cdpack /usr/pkgsrc/packages/All /u2/images#

اگر شما قصد دارید که فایل های معمول به نام های copyright readme و غیره هم بر روی این cd ها قرار گیرد باید شاخه های مورد نظر را با نام فایل های مورد درخواست ایجاد کنید. به صورت زیر:

mkdir /tmp/common#
 echo "This is a README" > /tmp/common/README#
echo "Another file" > /tmp/common/COPYING#
mkdir /tmp/common/bin#
 echo "#!/bin/sh" > /tmp/common/bin/myscript#
 echo "echo Hello world" >> /tmp/common/bin/myscript#
 chmod 755 /tmp/common/bin/myscript#

حال با استفاده از برنامه cdpack به صورت زیر بسته ها را ایجاد کنید:

 cdpack -x /tmp/common /usr/pkgsrc/packages/All /u2/images#