امروز داشتم با شبکه کوچیک بلوتوثیم که تازه راه اندازی کردم و توی ا
این
پست توضیح دادم بازی میکردم ، همونطور که توی اون پست توضیح دادم اینترنت رو هم از سیستم اول share کردم ... بعد متوجه شدم که نزدیک 40 50 مگابایت آپدیت دارم ... اومدم دکمه آپدیت رو بزنم که به فکر فرو رفتم ... ... ... با خودم گفتم من اون بسته ها رو چطوری روی سیستم بعدی هم نصب کنم ؟؟؟ باید بسته ها رو دستی کپی کنم و دونه دونه نصب کنم ؟ دایرکتوری رو share کنم و مخزن بسازم؟ بیخیال بشم و دوباره دانلود کنم ؟ مخزن remote بسازم ؟ در هر صورت هر کاری بخوام بکنم دفعه بعد هم کلی باید دردسر داشته باشم و کار هارو دوباره انجام بدم ...
توی این حین و بین به فکر راه اندازی یه cache server افتادم که خیلی ساده باشه و با یک بار تنظیم کارهارو خودش انجام بده ...
توی گوگل گشتم و بالاخره یه cache server کوچولو مخصوص مخازن پیدا کردم ، شاید اسمش رو شنیده باشید apt-cacher ...
از فواید cache server هم که دیگه خودتون خبر دارین ... روی سیستم های دیگه سرعت به روز رسانی فوق العاده بالاست چون دیگه دوباره دانلود نمیکنه و حتی به روز رسانی لیست بسته های موجود هم با سرعت بالا انجام میشه چون اونها رو هم نگهداری می کنه ... فعلا در همین حد متوجه شدم . خوب توی این پست راهنمای نصب و راه اندازی و یکی دو تا نکته کوچیک و کاربردی رو می نویسم برای کسایی که همچین مشکلی دارن.
بسته ای که باید نصب کنیم خیلی کم حجمه و توی مخازن هم هست ، این رو روی سرور نصب کنید :
sudo apt-get install apt-cacher
بعد از نصب اول باید یک سری تنظیمات کوچیک رو روی سرور انجام انجام بدیم :
sudo gedit /etc/default/apt-cacher
خط زیر رو پیدا کنید :
AUTOSTART=0
و صفر رو به یک تغییر بدید .
با فرض اینکه آی پی کلاینت 192.168.0.6 باشه :
sudo gedit /etc/apt-cacher/apt-cacher.conf
و خط زیر رو :
allowed_hosts=127.0.0.1
به
allowed_hosts=Server-ip , 192.168.0.5
تغییر بدید.این Server-ip که نوشتم آدرس آی پی خارجی سرورمون هست ، برای من این آدرس 10.0.0.6 هست که با اون به اینترنت وصل میشم و آدرسی که با اون با شبکه داخلی ارتباط دارم 192.168.0.5 ... من باید از 10.0.0.6 استفاده کنم. این کار برای اینه که server هم بتونه از cache استفاده کنه ، چون ممکنه یک کلاینت قبلا بسته ای رو درخواست کرده باشه و الان در cache موجود باشه .(استفاده از آدرس loopback مجاز نیست چون در فیلد "ارسال کننده" packet ارسال شده برای درخواست بسته ، آدرس ip خارجی قرار می گیره ....حداقل روی سیستم من جواب نداد)
بعد :
sudo /etc/init.d/apt-cacher restart
خوب اینجا اول یه چیز کوچیک رو توضیح بدم . این سرویسی که نصب کردیم به طور پیش فرض به پورت 3124 گوش میده ، هر درخواستی از سوی برنامه های apt-get ، aptitude ، synaptic و هر برنامه دیگه ای که از مخازن استفاده میکنه ، توسط این سرویس بررسی میشه و اول داخل cache رو نگاه میکنه ، اگر بسته درخواست شده با همون ورژن درخواستی موجود بود همون رو به کلاینت می فرسته ، در غیر اینصورت شروع به دانلود بسته از مخان میکنه و به طور همزمان هم به کلاینت می فرسته و هم توی cache ذخیره میکنه ... در واقع cache به فرم یک مخزن روی دیسک ذخیره میشه ... نه به فرمی که در دایرکتوری
var/cache/apt/archives/ میبینیم .
خوب میریم سراغ کلاینت. ما باید روی کلاینت تنظیماتی انجام بدیم تا وقتی خواست برنامه ای رو از مخازن بگیره apt-cacher متوجه بشه و اقدام کنه. برای این کار دوتا راه وجود داره که هر کردوم مزایا و معایبی دارن...
راه اول :تغییر مخازن ، با یک مثال مسئله رو توضیح می دم :
فرض کنیم لیست مخازن من روی کلاینت اینطوری باشه :
deb http://repository.debuntu.org/ hardy multiverse
deb-src http://repository.debuntu.org/ hardy multiverse
من تغییرات رو روش انجام میدم و ذخیرش می کنم ، نتیجه اینطوری میشه :
deb http://192.168.0.5:3142/repository.debuntu.org/ hardy multiverse
deb-src http://192.168.0.5:3142/repository.debuntu.org/ hardy multiverse
فکر کنم واضح باشه ، 192.168.0.5 آدرس ip سرور در شبکه داخلیه و 3142 هم شماره پورتیه که apt-cacher به اون گوش میده ، برای همه ی مخازن باید همین کار رو بکنیم . اگر بسته ای در cache موجود نباشه apt-cacher از همون لینک که بعد از شماره پورت اومده استفاده میکنه...
بعد از این کار باید لیست مخازن رو به روز رسانی بکنیم :
sudo apt-get update
روش دوم : ست کردن P-*-r-*-o-*-x-*-y (عجب حکایتیه!!!!) از این به بعد به جای این کلمه زشت میگم کدو ، اینم معلومه چیکار میکنه ، شماره ip داخلی سرور و پورت مربوط به apt-cacher رو به جای کدووووو!!! به خورد برنامه های مدیریت بسته ها میده .
اینطوری :
sudo gedit /etc/apt/apt.conf.d/70debconf
و اینو توش مینویسیم :
Acquire::http::Proxy "http://192.168.0.5:3142";
192.168.0.5:3142 هم که توضیح دادم ip داخلی سرور ...
و سمت سرور :
Acquire::http::Proxy "http://127.0.0.1:3142";
و بعد :
sudo apt-get update
خوب حالا مقایسه این دو روش :
در روش اول تغییر دادن sources.list سخته و اگر روزی نخواستیم از cache استفاده کنیم در صورت نداشتن نسخه پشتیبان باید دستی به حالت اول برگردونیم.
در روش دوم تغییرات زیادی اعمال نمیشه و برگشتن به حالت اول هم سادست...
در روش دوم از مخازن FTP نمیشه استفاده کرد ... و ظاهرا فعلا قصد طراحی FTP کدو رو هم ندارن... یه بنده خدایی می گفت از همون http برای مخازن ftp استفاه کن ، که من این کارو نکردم هرکسی خواست امتحان کنه .... ضمنا من روی سیستمم از مخازن ftp استفاده نمیکنم (البته تا به حال ، شاید بعدها...) من روش اول رو ترجیح میدم...
خب یه نکته : چطور وقتی apt-cacher رو نصب کردیم بسته هایی که الان توی دایرکتوری var/cache/apt/archives/ هستن رو به cache اضافه کنیم ؟
خیلی راحت :
sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives
این روش رو میشه روی یک سیستم هم اجرا کرد ، مثلا یه بنده خدایی دوباره اوبونتو نصب میکنه و میخواد از بسته هایی که قبلا دانلود کرده استفاده کنه ...
تموم شد...