چه چیز هایی در مورد لینوکس باید بدونید

برنامه نویس های تازه کار ، عموما جو استفاده از لینوکس روشون تاثیر میزاره و دوست دارند که تست کنند. من سعی میکنم چیز هایی که قبلش باید بدونید رو به شما بگم تا بعدش پشیمون نشید.خب ، اول از همه اینکه لینوکس یک سیستم عامل شبه یونیکس هست، یعنی شبیه سیستم عامل یونیکس که یک سیستم عامل قدیمی و خیلی قوی و ساختار یافته بود کار میکنه. پس در نتیجه سیستم عامل شما کاملا متفاوت تر از ویندوزه و اصلا و ابدا چیزی که در ویندوز می بینید در لینوکس نخواهید دید.توزیع خودتون رو انتخاب کنید: برای مبتدی ها Linux Mint عالی هست. تجربه خیلی نزدیک به ویندوز 7 به شما خواهد داد. اکثر ابزار های گرافیکیش هم خوبند و کمتر به ترمینال نیاز میشه (اما نیاز میشه)اوبونتو هم خوبه ولی تازگی ها کاربراش ناراضی اند ولی به نظرم دلیلی نداره. اوبونتو میخواد یک چارچوب و استاندارد رو لینوکس پیاده کنه تا از این متفرق بودن در بیاد ولی کاربران دوست ندارند.مثلا اینکه اوبونتو خیلی به snap تاکید داره باعث عصبانیت کاربرانش شده. ولی به نظرم خوبه. تفاوت عرضه (Release) های Fixed و Rolling :در حالت fixed ،‌ بروز رسانی بر روی سیستم فعلی یا نرم افزار فعلی انجام میشه و اون رو overwrite میکنه. یعنی نسخه جدید جایگزین میشه. این حالت بسیار پایداره و تست های زیادی انجام میشه تا بهترین سازگاری به وجود بیاد. اما چندین ماه طول میکشه که عرضه بشه. در نتیجه همیشه چند ماه عقب ماندگی هست و بروز ترین نیست. در حالت Rolling ، سیستم عامل و نرم افزار هاش یکبار نصب میشند اما پی در پی آپدیت میگیرند و نسخه قدیمی رو جایگزین نمیکنند. در واقع به نسخه فعلی آپدیت داده میشه. این روش ناپایدار تره چون پی در پی آپدیت میگیره و ممکنه تست های لازم همیشه انجام نشه. هر دوی Linux Mint و Ubuntu حالت عرضه Fixed هستند ترمینال و محیط خطی رو بلد باشید. لینوکس با اینکه طرفدار هاش میگن دیگه مثل قدیم ها نیست و به ترمینال وابسته نیست ولی هست. باید بلد باشید. ترمینال در واقع چیزی شبیه cmd داخل ویندوز هست. زبانش فرق میکنه. زبانش bash script هست. ترمینال اوبونتوآدرس ها فرق دارند:در ویندوز معمولا این شکلی هست :C:\Program Files\Internet Explorerدر سیستم عامل های بر پایه یونیکس یا شبه یونیکس. یعنی مک ، لینوکس ، اندروید ، آی او اس و ... ساختار به این شکل هست. یادتون باشه این ها مثال هست/etc/mnt/init.dبجای ‍'\' ویندوز '/' دارید. و ساختار فولدر ها فرق داره که الان توضیح میدم. ساختار فولدر ها :شما چیزی به اسم program files یا نمیدونم program files (x86) یا فلان و بهمان ندارید. ساختار سیستم فایل این شکلی هست:فولدر bin : باینری ها و برنامه های قابل اجرای کاربر رو داخل خودش قرار داده. مثلا وقتی میزنید nano که چیزی رو از ترمینال ویرایش کنید ، از همینجا خونده میشه. فولدر sbin : یا سیستم باینری. شبیه فولدر bin هست اما در سطح سیستمی اجرا میشه و کاربر عادی نمیتونه بهش دسترسی داشته باشه. سطح دسترسی بالاتری میخوادفولدر etc : داخل ویندوز تنظیمات هر برنامه داخل فولدر خودش هست اما در لینوکس این تنظیمات داخل فولدر etc قرار میگیرند. کانفیگ های برنامه هایی که نصب کردید میرن اونجا.فولدر dev : دیوایس هارو نشون میده ، مثلا dev/sda که عموما اگر دو تا هارد دیسک داشته باشید، هارد دیسک اول شما خواهد بود. فولدر proc : این فولدر یکم پیچیده س. در واقع این فولدر واقعی نیست و یک جور سراب هست! لینوکس برای رصد پردازش ها این فولدر رو میسازه. دقیق مطمئن نیستم ولی فکر کنم موقع خاموش کردن کامپیوتر از بین میره. چون همونطور که گفتم فولدر واقعی نیست. فولدر var : همه متغیر های برنامه تون داخل این فولدر میره. مثلا متغیر هایی که مقدار مشخصی از یک چیزی رو تعیین میکنند. فرض کنید مثلا سکه های بازی که نصب کردید. اینکه چقدر سکه دارید میره اونجا (مثال ساده)فولدر tmp : زیاد استفاده ش نکردم، دقیق نمیدونم چیه. گویا فایل های موقت رو داخلش ذخیره میکنهفولدر usr : فرض کنید فولد user داخل ویندوز هست. هر فولدر متعلق به یک یوزر هست. فولدر home : همه فولدر های عمومی کاربر داخل اون قرار میگیره. مثل دانلود ها ، دسکتاپ ، داکیومنت ها و ... فولدر boot : راه اندازی و بوت سیستم عامل از اینجا انجام میشه ، هر تغییر بدون دقت و خطرناک باعث از کار افتادن سیستم عامل میشه. باید تا حد امکان با این فولدر کار نداشت. فولدر lib : کتابخانه های مورد نیاز سیستم عامل اونجا هستند. مثلا فرض کنید یک برنامه ای نیاز به یک کتابخانه پایتونی داره که کار کنه. این کتابخانه در این محل بایستی باشه. فولدر opt : فرض کنید برنامه ای دارید که همه کتابخانه ها و پکیج هاش رو میخواید ببرید داخل یک فولدر (عین ویندوز) ، در این حالت بایستی داخل فولدر opt قرار بدید. که همونطور که از اسمش پیداس ، چیز های optional و اختیاری داخلش هست. میتونید داخل /usr/local هم قرار بدید اما انجام اینکار نیاز به دسترسی مدیر سیستم داره و کاربر عادی نباید چنین دسترسی داشته باشه. فولدر mnt : هر درایوی که به کامپیوتر وصل میشه ،‌ دارای یک mount point هست. یعنی از یک نقطه ای وصل شده. این همون جا هست. فولدر media : معمولا فلش و هر چیزی که از بیرون وصل میکنید داخل این فولدر mount میشه. فولدر srv : نمیدانم! استفاده نکردم تا حالا!یه نکته :‌ سیستم عامل مک او اس ، دارای فولدری به اسم private هستند که فایل های ضروری سیستم عامل و کَش اون رو نگه داری میکنه.نصب برنامه ها گیج نکنه شما رو!همه توزیع های لینوکس یک فروشگاه نرم افزاری یا software center دارند ،‌ اما این فقط و فقط یک روش هست در میان روش های خیلی زیاد.روش AppImage : در واقع این روش نصب برنامه نیست ولی من کلی ، همه رو توضیح خواهم داد.فایل هایی اند با پسوند AppImage. این ها خیلی راحت اند. نصبی نیستند و پرتابل اند. دانلود میکنید و روش کلیک میکنید و کار میکنه. البته باید قبلش دسترسی اجرا بهش بدید که توضیح خواهم داد. روش bundle :عاشق این مدل نصب برنامه ام ، کاش برای کل لینوکس اینطوری بود. در واقع یک فایلی با پسوند bundle. هست که بهش دسترسی اجرا میدید و یک ویزارد عین ویندوز باز میشه و next next میزنید و تمام!خیلی رایج نیست. VMware لطف کرده و از این روش استفاده میکنه. روش sh :اسکریپت هایی با پسوند sh. هستند. این روش هم روش خیلی خوبیه. اتوماتیک همه چیز رو به صورت ترمینالی نصب میکنه. فقط خیلی مراقب باشید چون یک اسکریپتی رو داخل ترمینال اجرا میکنید. خیلی میتونه خطرناک باشه اگه از منبع مطمئنی دانلود نکرده باشید. برای اجرا از /. استفاده میکنید. مثلا setup.sh/. روش rpm و deb :برای توزیع های مخصوص فدورا یا اوپن سوزا ، فایلی دارید با پسوند rpm. که میتونید یا با دابل کلیک کردن نصب کنید. که در این حالت فروشگاه نرم افزاری باز میشه و بهتون میگه که آیا میخواید این رو نصب کنید یا نه یا با دستور پکیج منیجر سیستم عامل خودتون نصبش میکنید. در سیستم عامل های بر پایه دبیان مثل اوبونتو و ... هم فایل های deb. استفاده میشند.در مورد پکیج منیجر ها توضیح خوام داد.روش AUR :خدای من.... اگه سیستم عاملی بر پایه Arch Linux دارید میتونید با AUR که یک جور مخزن نرم افزاری ساخته شده توسط کاربران هست ، برنامه رو از سورس کد بگیرید. کامپایلش کنید و نصبش کنید. خییییلی باید مواظب باشید و نگه دارید برنامه نصب شده از این راه خیلی سخته. در کل Arch Linux رو به هیچ عنوان برای مبتدی ها توصیه نمیکنم!روش Snap :یک فروشگاهی اوبونتو ساخته به اسم snapcraft store. از اونجا میتونید با این روش برنامه نصب کنید فقط نمیدونم چرا اگر تمی روی کامپیوترتون باشه روی برنامه ای که از این روش نصب شده اعمال نمیشه. روش flatpack : میتونید از فروشگاه نرم افزاری flathub این flatpack هارو استفاده کنید. در واقع زمانی که میخواید برنامه تون روی اکثر توزیع های لینوکس قابل نصب باشه. این روش خیلی خوبه. روش tarball :با این روش میتونید برنامه تون رو اگر اوپن سورس باشه ، روی هر توزیعی از لینوکس نصب کنید اما بسیییار سخته.کد رو باید دانلود کنید. که یک فایل عموما با پسوند tar.gz هست بعد استخراجش میکنید بعد یک فایل makefile داره. با اون کامپایلش میکنید و بعد هزار جور درد سر دیگه که یادم نیست. آخرین بار پارسال انجامش دادم و نمیخوام دیگه اصلا سراغ این روش برم. دسترسی ها :ما داخل لینوکس گروه هایی داریم :گروه primary کاربران (کاربران اصلی) : که به اونها sudoers هم میگن.دسترسی به sudo دارند. دستوری که اجازه دسترسی سیستمی به همه فایل ها میده و بالاترین سطح دسترسی هست. معمولا ادمین سیستم این دسترسی رو دارهگروه secondary یا ثانویه کاربران : دسترسی های محدودی دارند و جزو گروه sudoers نیستند. و نمیتونند داخل ترمینال با نوشتن sudo و دستور مد نظرشون تغییری ایجاد کنند. مثل کاربران مهمان. گروهی هم هست به عنوان service : زیاد رایج نیست ولی اصولا این ها انسان نیستند و توسط سیستم عامل ساخته میشند. برای اینکه به یک فایلی مثل فایل نصبی های sh یا bundle اجازه اجرا بدید باید sudoer باشید. و با دستور sudo chmod +x دسترسی اجرا بهش بدید. یا با - اون دسترسی رو ازش بگیرید.chomd + (دسترسی مد نظر)x : اجراr : خواندنw: نوشتنبا عدد میشه همه این هارو تعیین کرد که میتونید در موردش جستجو کنید. پکیج منیجر ها‌:میتونید بدون فروشگاه نرم افزاری هم داخل ترمینال برنامه هارو نصب کنید که من خودم بیشتر اینکارو میکنم و تقریبا یکبار هم نشده که بخوام فروشگاه نرم افزاری رو باز کنم. در سیستم عامل های بر پایه دبیان مثل ubuntu و یا لینوکس مینت. دستور sudo apt install "نام برنامه"یا sudo apt-get install "نام برنامه "استفاده میشه. فرق apt-get با apt اینه که روش apt-get install سنتی تره و توزیع های بر پایه دبیان حذفش نکردند تا قدیمی ها هم استفاده ش کنند. من داخل اوبونتو 12.04 اون موقع همچین چیزی نداشتم. در واقع از اوبونتو 14 به بعد این قابلیت اضافه شده و دستورش ساده تر شده. همین. در فدورا و مشتقات اون هم از پکیج منیجر dnf استفاده میشه. sudo dnf install "نام برنامه"یعنی بدون دسترسی root نمیشه برنامه نصب کرد؟نه. با پکیج منیجر نمیشه. باید سورس کد رو دانلود و کامپایل کنید تا همچین چیزی بشه. یا اینکه فایل deb. اون رو دانلود کنید و این دستور رو استفاده کنید:‌dpkg -x package.deb dirبرای نصب برنامه در صورتی که دسترسی روت دارید به این شکل میتونید عمل کنید (اوبونتو و دبیان):sudo dpkg -i "نام پکیج"امیدوارم مفید بوده باشه. بازم سوالی داشتید تا جایی که بلد باشم کمک میکنم. بپرسید.