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

تو این پست در مورد نصب نسخه‌ای که سایت https://openfoam.org ارائه میده روی سیستم‌عامل لینوکس صحبت می‌کنیم.(در حال حاضر آخرین نسخه ارائه شده ۵ هست)

نصب OpenFOAM5

نحوه نصب رو سایت خودش تو این صفحه توضیح داده، ما همونو یکم بازترش می‌کنیم.

اولین نکته: برای نصب OpenFOAM لینوکس شما حتما باید ۶۴ بیتی باشه.

توی لینوکس ما به ۲ صورت می‌تونیم یک برنامه رو نصب کنیم:

- روش اول اینه که بریم برنامه موردنظرمون رو از سایتش دانلود کنیم و نصبش کنیم. حالا اون سایته ممکنه سورس برنامه رو برای دانلود گذاشته باشه، که در این صورت قبل از نصب باید برنامه رو کامپایل کنیم. یا اینکه برنامه رو به صورت یک فایل نصبی قرار داده باشه که دیگه نیاز به کامپایل نیست و راحت‌تر می‌تونیم برنامه رو نصب کنیم.

- روش دوم اینه که برنامه مورد نظرمون رو از مخزن لینوکسمون نصب کنیم. معمولا نسخه‌های لینوکسی که پرکاربردتر هستند و کاربران بیشتری دارند، یک سری مخازنی دارند که برنامه‌ها و پکیج‌های پرکاربردتر رو اونجا قرار میدن و کاربران خیلی راحت با زدن یه دستور میتونن برنامه موردنظرشون رو نصب کنند.


ما از طریق روش دوم می‌خوایم برنامه موردنظرمون رو نصب کنیم. برای همین بیشتر در مورد این روش توضیح میدیم.

برای نصب برنامه از طریق مخازن لینوکس (یا به قول خارجیا ریپوزیتوری - repository - که البته گاهی هم به صورت خلاصه فقط میگن repo)  ۲ تا مشکل ممکنه پیش بیاد:

اول اینکه همه برنامه‌های لینوکسی که توی مخازن لینوکس ما نیستن که. ممکنه ما یه برنامه‌ای رو بخوایم نصب کنیم ولی تو مخزنمون نباشه. باید چیکار کنیم؟؟

دوم اینکه وقتی یه برنامه‌ای به روز میشه، بلافاصله مخزن لینوکس هم اونو به روز نمیکنه. یعنی ممکنه که یه برنامه‌ای یک ماه از نسخه جدیدش گذشته باشه، ولی هنوز نسخه قبلی توی مخزن لینوکس باشه و ما از طریق اون مخزن نتونیم به نسخه جدید دسترسی پیدا کنیم.

راه حل هر ۲ مشکل اینه که ما بیایم مخزنی که خود سازنده اون برنامه ارائه میده رو به لیست مخازنمون اضافه کنیم و از اون مخزن جدید برناممون رو نصب کنیم!

این موضوع رو کمی بازتر کنیم:

گفتیم که می‌تونیم از طریق مخزن لینوکسمون و با یک دستور برنامه مورد نظرمون رو نصب کنیم. ولی خب این برنامه از کجا نصب میشه و روند این کار به چه صورته؟

توی سیستم‌عامل لینوکس یک فایل قرار داره که حاوی آدرس مخازن ما هست. هروقت ما بخوایم فایلی رو از طریق مخزن نصب کنیم، سیستم عامل میره و از اون فایل آدرس‌ها رو برمیداره و برنامه رو از اونجا برامون دانلود میکنه.

از اینجا به بعد فقط در مورد اوبونتو صحبت می‌کنیم. (البته شامل توزیع‌های دیگه لینوکس که مثل اوبونتو دبیان‌بیس هستند هم میشه.)


آدرس فایلی که گفتیم داخلش آدرس مخازن نوشته شده، اینجاست:

/etc/apt/sources.list

برای مشاهده محتوای یک فایل از دستور cat استفاده می‌کنیم:


خطوطی که با # شروع شدند کامنت هستند و بود و نبودشون فرقی نداره.

توی چند خطی که نمایش داده شده، همونجوری که مشخصه آدرس مخازن من http://ir.archive.ubuntu.com هست. این مخزن یکی از مخازن اوبونتو در ایران هست. توزیع‌هایی از لینوکس که کاربران خیلی زیادی دارند، مثل اوبونتو، توی کشور‌های مختلف سرورهایی براشون در نظر گرفتن و مخازنشون رو اونجا هم قرار دادن. اینجوری دسترسی کاربران اون کشور به مخزن راحت‌تر و با سرعت بیشتری برقرار میشه و اگه یکی از مخزن‌ها یه روز با مشکل مواجه بود و در دسترس نبود، کاربران میتونن از یه مخزن دیگه استفاده کنند.

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

https://launchpad.net/ubuntu/+archivemirrors

مخازن ایران:


برای اضافه کردن یک مخزن جدید به لیست مخزن‌های سیستم‌عاملمون از ۲ روش می‌تونیم استفاده کنیم:

- به صورت دستی فایل sources.list که در بالا بهش اشاره شد رو ویرایش کنیم و طبق فرمت خودش مخزن موردنظرمون رو تهش اضافه کنیم.

- روش دوم استفاده از دستور add-apt-repository هست.


ما فعلا از روش اول استفاده نمی‌کنیم و اگه شما هم کاربر تازه‌کار اوبونتو هستید توصیه میشه که فایل sources.list رو بدون دانش کافی خراب نکنید:دی


فکر کنم تا الان اطلاعات کافی از روند کار بدست آوردیم و الان می‌تونیم بریم سراغ نصب برنامه موردنظرمون.

خود OpenFOAM توی مخازن اصلی اوبونتو هست و شما خیلی راحت می‌تونید نصبش کنید. ولی نسخه ۴ اون توی مخزن رسمی اوبونتو هست و هنوز نسخه ۵ بهش اضافه نشده.

برای نصب نسخه ۵ همونجوری که اشاره کردیم باید از آدرس مخزنی که خود سایت OpenFOAM معرفی کرده استفاده کنیم.

برای نصب طبق راهنمایی سایت OpenFOAM که آدرسشو بالا هم گذاشتم، در ابتدا دستورات زیر رو باید وارد کنیم:

sudo add-apt-repository http://dl.openfoam.org/ubuntu
sudo sh -c "wget -O - http://dl.openfoam.org/gpg.key | apt-key add -"

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


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


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

دستور دوم هم مربوط به دریافت کلید عمومی رمزنگاری مخزن هست. اگه دستور رو درست وارد کنید، بعد از اجرای اون یه دونه OK تو صفحه می‌بینید.

دستوری بعدی اینه:

sudo apt-get update

این دستور برای به روز کردن لیست پکیج‌هایی هست که از مخازنمون می‌تونیم دانلود کنیم. ما قبل از این دستور یه مخزن به مخازن سیستممون اضافه کردیم، ولی هنوز لیست پکیج‌هایی که تو این مخزن جدیدمون وجود دارن رو نداریم. برای اینکه لیستمون به روز بشن باید از دستور بالا استفاده کنیم. (می‌تونید قبلش یه بار دستور رو بدون sudo اجرا کنید و نتیجه رو ببینید:) )

آخرین دستور:

sudo apt-get -y install openfoam5

در نهایت با دستور بالا نسخه ۵ اوپن‌فوم رو نصب می‌کنیم. این دستوری هست که برای نصب برنامه از طریق مخازن استفاده میشه. فقط به جای openfoam5 می‌تونیم هر برنامه دیگه‌ای که توی مخزن هست رو نصب کنیم. اگه دستور رو بدون y- وارد کنیم، در ابتدا بهمون میگه این پکیج‌ها میخوان نصب بشن و اینقدر فضا میخوان و منتظر تایید میمونه که ما می‌تونیم با زدن اینتر تایید کنیم تا نصب انجام بشه. این y- همون تایید هست که زودتر خودمون واردش کردیم.

به همین راحتی برناممون رو نصب کردیم. :)


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

source /opt/openfoam5/etc/bashrc

دقت کنید که ابتدای نام فایل .bashrc یه دونه نقطه وجود داره. توی لینوکس وقتی اول نام فایلی یه نقطه قرار میدیم فایل hidden میشه. پس اینجا هم این فایل به صورت hidden هست.

چند تا ادیتور توی اوبونتو موجود هستند که می‌تونید از اونها استفاده کنید و فایل مورد نظر رو ادیت کنید. gedit و nano از جمله ادیتورهای موجود توی اوبونتو هستند. gedit چون محیط گرافیکی داره برای کاربران تازه‌کار مناسب‌تره. دستور زیر رو بزنید تا فایل .bashrc با ادیتور gedit باز بشه:

gedit ~/.bashrc

بعد از باز شدن فایل، به آخرش اون خط بالایی رو اضافه کنید و save کنید و ادیتور رو ببندید.

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

simpleFoam -help

اگه خروجی زیر رو ببینید تمامی مراحل رو درست انجام دادید و برنامه رو نصب رو کردید.



خطاها

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

تصاویر خطاهای زیر مربوط به سیستم دوستانی است که قبلا به خطاها برخورده بودند. (با تشکر از دوستان)

یادتون باشه که همیشه در برخورد با خطاها باید متن خطا رو دقیق بخونید.


خطای ا:

Unable to locate package PACKAGENAME

این خطا وقتی رخ میده که پکیجی که قصد نصبش رو داریم توی مخزنمون موجود نباشه. یا مثلا قبل از به روزرسانی مخزن قصد نصب برنامه رو داریم.

مثلا اینجا قصد داشتن یه نسخه دیگه‌ای از اوپن‌فوم رو نصب کنند که توی مخزن فعلی معرفی شده موجود نیست.

برای نصب نسخه‌های قبلی یا باید از مخزنی استفاده کنیم که اون نسخه توش موجود باشه یا اینکه از طریق سورس برنامه رو نصب کنیم.

برای اینکه ببینم کدوم ورژن‌های برنامه توی مخزن ما موجود هستند می‌تونیم بعد از نوشتن اسم برنامه یا نوشتن قسمتی از اسم اون ۲-۳ بار کلید تب رو بزنیم تا همه گزینه‌های انتخابی موجود رو بهمون نشون بده:



خطای ۲:

Unable to fetch some archives, maybe run apt-get update or try with --fix-missing

این خطا به علت‌های مختلفی میتونه به وجود بیاد. برای رفع این خطا همونجوری که خودش هم توضیح داده می‌تونید اول دستور apt-get update رو اجرا کنید(البته با sudo) و دوباره دستورتون رو اجرا کنید. اگه درست نشد به آخر دستورتون --fix-missing رو اضافه کنید و دوباره اجراش کنید. مثلا اگه من قصد نصب اوپن‌فوم رو داشتم، دستورم رو باید اینجوری وارد کنم:

sudo apt-get -y install openfoam5 --fix-missing

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

sudo apt-get autoremove 
sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade

و بعدش دوباره دستور نصب برنامتون رو وارد کنید.


خطای ۳:

گاهی اوقات با اجرای دستور apt-get update به خطای زیر برمی‌خوریم:

Failed to fetch ... 403 Forbidden

این خطا میگه وقتی میخوام به مخزن وصل بشم و لیست پکیج‌ها رو ازش بگیرم به خطای 403 Forbidden برمیخورم و آدرس مخزن اشکال داره.
البته در اینجا آدرس مخزن مشکلی نداره و کاملا درسته. همونجوری که مشخصه در اینجا این خطا مربوط به مخزن docker هست. docker هم لطف کرده و کشور ایران رو تحریم کرده. بنابراین هرکسی از داخل ایران در حالت عادی بخواد داکر رو از طریق مخزن نصب کنه با خطای بالا مواجه میشه. راه‌حلشم اینه که بریم فایل sources.list رو ویرایش کنیم و با گذاشتن یه دونه # در ابتدای خط مربوط به مخزن داکر کامنتش کنیم و دوباره دستور apt-get update رو اجرا کنیم.

خطای ۴:
گاهی اوقات با اجرای دستور apt-get update به خطای زیر برمی‌خوریم:
Problem executing scripts APT::Update ::Post-Invoke-Success ... Sub-process returned an error code
این خطا خیلی کم پیش میاد.
برنامه‌ای که زیرش با رنگ قرمز مشخص شده مشکل‌آفرین شده و باعث بروز خطای بالا شده.
راه‌حلشم اینه که برنامه مذکور رو حذف کنیم تا مشکل برطرف بشه.
مثلا در اینجا با حذف برنامه appstream از طریق دستور زیر:
sudo apt-get remove appstream
مشکل برطرف میشه و بعدش می‌تونیم بدون مشکل دستور apt-get update رو اجرا کنیم.


اگه به خطاهای دیگه‌ای هم برخوردم ان‌شاء‌الله این لیست به روز میشه.