# منطقِ بسته ها در این کتاب

&#x9;همونطور که قبلاً گفتیم، هدف LFS ساخت یه سیستم پایه قابل استفاده و کامله و این شامل تمام بسته های مورد نیاز برای باز تولید خودش میشه به طوریکه در عین حال یه پایه ی نسباتا ابتدایی برای ساختن یه سیستم کامل تر بر اساس تصمیمات کاربر فراهم کنه.

&#x20;این به این معنی نیست که LFS کوچیک ترین سیستمیه که میشه ساخت. بسیاری از بسته های مهمی که آورده شده واقعاً نیاز نیستند. لیست پایین،‌ کارایی و دلیل استفاده از هر بسته رو نشون میده.

* &#x20;**Acl**

&#x20;این بسته شامل ابزارهاییه که برای مدیریت لیست های دسترسی(Access Control Lists) -که برای تعریف کردن دسترسی های ریزتر برای فایل‌ها و پوشه هاست- بکار میره.

* &#x20;**Attr**

&#x20;این بسته شامل برنامه‌هایی برای مدیریت ویژگی‌های فایل‌های سیستمیه

* &#x20;Autoconf

&#x20;این بسته شامل برنامه هاییه که میتونن اسکریپت های شِلی تولید کنن که به صورت خودکار تنظیمات کدمنبع رو بر اساس قالب توسعه‌دهنده انجام بده. معمولاً زمانی استفاده میشه که بخواین بسته ای رو بعد از آپدیت، دوباره بسازین.

* &#x20;Automake

&#x20;این بسته شامل برنامه هاییه که میتونن فایل‌های Make رو بر اساس یک قالب تولید کنن. این بسته معمولاً زمانی استفاده میشه که بخواین بسته ای رو بعد از آپدیت، دوباره بسازین.

* &#x20;Bash

&#x20;این بسته یکی از الزامات هسته ی LSB هست که یک رابط Bourn Shell برای سیستم میسازه. این بسته به این دلیل از بین بقیه ی بسته های shell انتخاب شده که متداوله و قابلیت‌های زیادی رو – با توجه به کارکرد ساده ی شل- ارائه میده.

* &#x20;Bc

&#x20;این بسته یک زبان برای پردازش اعداد با دقت دلخواه ارائه میده. این بسته برای ساخت کرنل لینوکس لازمه.

* &#x20;Binutils

&#x20;این بسته شامل یک پیوند دهنده(linker)، یک سرهم کننده(assembler) و ابزار های دیگه ایه که برای رسیدگی به فایل‌ها استفاده میشه. برنامه‌های درون این بسته برای کامپایل کردن بیشترِ بسته های LFS و غیره نیازه.

* &#x20;Bison

&#x20;این بسته شامل ورژن گنوییِ yacc (همونYet Another Compiler Compiler) هست که برای ساخت بسیاری از برنامه‌های LFS کاربرد داره.

* &#x20;Bzip2

&#x20;این بسته شامل برنامه هاییه که برای فشرده کردن و یا خارج کردن از حالتِ فشرده فایل‌ها کاربرد دارن. این بسته برای بسیاری از بسته های LFS ای از حالت فشرده نیاز میشه.

* &#x20;Check

&#x20;این بسته ایه که بررسی خطاها رو برای بقیه برنامه‌ها انجام میده و فقط توی toolchain موقت نصب میشه.

* &#x20;Coreutils

&#x20;این بسته شامل تعدادی از برنامه‌های ضروری برای مشاهده و دستکاری فایل‌ها و پوشه هاست. این برنامه‌ها برای مدیریت فایل‌ها تحت خط فرمان و نصب همه ی بسته های LFS ای نیاز میشن.

* &#x20;DejaGNU

&#x20;این بسته یه framework داره که برای تست کردن بقیه ی برنامه‌ها استفاده میشه و توی toolchain موقت نصب میشه.

* &#x20;Diffutils

&#x20;این بسته شامل برنامه هاییه که تفاوت‌های بین فایل‌ها و یا پوشه هارو نشون میده. این برنامه‌ها میتونن برای ساخت وصله ها استفاده بشن. همچنین برای ساخت بسیاری از پکیج ها هم مورد استفاده قرار میگیرن.

* &#x20;E2fsprogs

&#x20;این بسته شامل ابزارهایی برای رسیدگی به فایل‌های سیستمی از نوع ext2 ، ext3 و ext4 هست. این فایل‌های سیستمی متداول ترین و قابل اطمینان ترین نوع فایل‌های سیستمی ای هستن که لینوکس پشتیبانی میکنه.

* &#x20;Eudev

&#x20;این بسته یک مدیریت کننده دستگاه (device manager) هست. این بسته به صورت پویا ورودی های موجود در پوشه ی dev/ رو به صورت دستگاه‌های اضافه و یا حذف شده کنترل میکنه.

* &#x20;Expat

&#x20;این بسته شامل کتابخونه های نسبتاً کوچیکی برای تجزیه ی XML داره که یکی از ملزومات ماژول XML::Parser پِرل(Perl) هست.

* &#x20;Expect

&#x20;این بسته شامل برنامه‌هاییه که ارتباط میان برنامه‌های تعاملی رو برقرار میکنه. بیشتر برای تست کردن بسته های دیگه استفاده میشه و فقط روی toolchain موقت نصب میشه.

* &#x20;File

&#x20;این بسته شامل ابزار هایی برای فهمیدن نوع فایل هاست و اندکی از بسته ها برای ساخته شدن بهش نیاز دارن.

* &#x20;Findutils

&#x20;این بسته شامل برنامه هاییه که برای جستجوی فایل‌ها در فایل‌های سیستمی استفاده میشن و توی بسیاری از اسکریپت های سازنده بسته های دیگه کاربرد داره.

* &#x20;Flex

&#x20;این بسته شامل ابزارهاییه که برای تولید برنامه‌های یابنده الگو در متن استفاده میشن. این بسته، نسخه ی گنوئیِ lex هست و برای ساخت بسیاری از بسته های LFS لازمه.

* &#x20;Gawk

&#x20;این بسته برنامه‌هایی داره که برای دستکاری فایل‌های متنی بکار میان. این بسته، ورژن گنوئی awk هست و برای تولید بسیاری از بسته های دیگه نیازه.

* &#x20;Gcc

&#x20;این بسته، مجموعه ی کامپایلر های گنوعه. این بسته شامل کامپایلر های C و ++C هست که مثل بسیاری از کامپایلر های دیگه، توسط LFS ساخته نمیشن.

* &#x20;GDBM

&#x20;این بسته شامل کتاب خونه های مدیریتِ دیتابیسِ گنوعه و توسط یکی دیگه از بسته های LFS ای به اسم Man-DB استفاده میشه.

* &#x20;Gettext

&#x20;این بسته ابزاراها و کتابخونه هایی داره که برای جهانی سازی(internationalization) و محلی سازی (localization) بسته های دیگه استفاده میشن.

* &#x20;Glibc

&#x20;این بسته شامل کتاب خونه های اصلیِ C هست و برنامه‌های لینوکس بدون این بسته اجرا نمیشن.

* &#x20;GMP

&#x20;این بسته کتابخونه های ریاضیاتی ای داره که توابع مفیدی برای محاسبه های با دقت دلخواه ارائه میدن. این بسته برای ساخت Gcc نیازه.

* &#x20;Gperf

&#x20;این بسته برنامه‌هایی داره که توابع باحالی برای ساخت یک هَش از یک کلید دارن و برای بسته یEudev ضروری ان

* &#x20;Grep

&#x20;این بسته شامل برنامه‌هاییه که برای جستجو بین فایل‌ها بدرد میخورن و این برنامه‌ها توسط اغلب اسکریپت های سازنده استفاده میشن.

* &#x20;Groff

&#x20;این بسته شامل برنامه‌هایی برای پردازش و فرمت دهی متن هاست. یکی از مهم‌ترین وظایف این برنامه‌ها قالب سازی صفحه های راهنما(man pages)--- هست.

* &#x20;GRUB

&#x20;این بسته(Grand Unified Boot Loader) یکی از چندین بوت لودر قابل استفاده ست که بین بقیه ی بوت لودر ها، منعطف ترینه.

* &#x20;Gzip

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

* &#x20;lana-etc

این بسته داده‌هایی برای سرویس ها و پروتکل ها ارائه میده و برای انجام درستِ کار های شبکه ای، نیازه.

* &#x20;Inetutils

&#x20;این بسته شامل برنامه‌های ابتدایی ای برای مدیریت شبکه ست.

* &#x20;Intltool

&#x20;این بسته ابزار هایی داره که برای استخراج رشته‌های قابل ترجمه از فایل‌های منبع استفاده میشن.

* &#x20;IProute2

&#x20;این بسته هم برنامه‌هایی برای انجام کار های شبکه ایِ ساده و یا پیچیده ی آی‌پی نسخه ۴ و ۶ داره. این بسته از بین بسته های شبکه ایِ رایج دیگه (مثل net-tools) برای به دلیل امکاناتی که برای آی‌پی نسخه ۶ میداد انتخاب شد.

* &#x20;Kbd

&#x20;این بسته شامل فایل‌های جداول-کلیدی(key-table) هست. ابزار های مربوط به کیبورد های غیر انگلیسی، و فونت‌های کنسول ها از این قبیل هستن.

* &#x20;Kmod

&#x20;این بسته برنامه‌هایی داره که برای مدیریت ماژول های کرنل نیاز میشن.

* &#x20;Less

&#x20;این بسته یه نمایش دهنده ی باحال برای فایل‌های متنیه که به شما امکان میده توی متن بالا و پایین برین. همچنین این بسته برای مشاهده ی صفحه های راهنمای داخل Man-DB استفاده میشه.

* &#x20;Libcap

&#x20;این بسته رابط های فضاییِ(user-space) کاربر رو برای قابلیت----- POSIX 1003.1e موجود در کرنل پیاده‌سازی میکنه.

* &#x20;Libelf

&#x20;پروژه ی elfutils کتابخونه ها و ابزار هایی برای فایل‌های ELF و داده‌های از نوع DWARF ارائه میده. بسیاری از ابزار های این بسته در داخل بسته های دیگه موجود هستن اما کتابخونه های این بسته برای ساخت کرنلِ لینوکس با استفاده از تنظیمات پیش‌فرض لازمه.

* &#x20;Libffi

&#x20;این بسته یک رابط قابل حمل و سطح بالای برنامه نویسی برای فراخوانی قرارداد های مختلف ارائه میده. یه سری برنامه‌ها در زمان کامپایل ممکنه ندونن که چه آرگومان هایی رو باید به یک تابع بدن. به عنوان مثال، ممکنه به یک مفسر در زمان اجرا درباره ی نوع و تعداد آرگومان های مربوط به فراخوانی یک تابع گفته بشه. Libffi توی همچین مواقعی استفاده میشه و یک پل بین برنامه ی مفسر و کد کامپایل شده ایجاد میکنه.

* &#x20;Libpipeline

&#x20;این بسته شامل کتاب خونه هایی برای دستکاری راحت‌تر و منعطف ترِ pipeline های زیرپروسه هاست(subprocesses). این بسته برای بسته ی Man-DB لازمه.

* &#x20;Libtool

&#x20;این بسته شامل کتابخونه های عمومیِ اسکریپت های پشتیبان گنوئه. ××××××××. این بسته برای مجموعه آزمون های بسته های دیگه ی LFS لازم میشه.

* &#x20;Linux Kernel

&#x20;این بسته، سیستم عامله. این همون «لینوکس» توی محیط گنو/لینوکس هست.

* &#x20;M4

&#x20;این بسته برای پردازش ماکروهاست و به عنوان ابزاری برای ساخت برنامه‌های دیگه مورد استفاده قرار میگیره.

* &#x20;Make

&#x20;این بسته شامل برنامه‌هایی برای ساخت بسته هاست و تقریباً همه ی بسته های موجود در LFS نیازمند بسته ی Make هستن.

* &#x20;Man-DB

&#x20;این بسته برای پیدا کردن و مشاهده ی صفحه های راهنماست. این بسته به دلیل ویژگی‌های خفن محلی سازیش، به جای بسته ی man انتخاب شد. خودِ این بسته برنامه ی man رو ارائه میده.

* &#x20;Meson

&#x20;این بسته یه ابزار نرم افزاری برای اتوماتیک کردن فرآیند ساخت نرم‌افزار هاست. هدف اصلی Meson اینه که زمانی که توسعه‌دهنده ها برای تنظیم سیستم ساخت‌شون استفاده میکنن کم بشه.

* &#x20;MPC

&#x20;این بسته دارای توابعی برای کار با اعدادِ مختلط هست و Gcc بهش نیاز داره.

* &#x20;MPFR

&#x20;این بسته شامل توابعی برای محاسبات با دقت چندگانه ست و Gcc بهش نیاز داره.

* &#x20;Ninja

&#x20;این بسته یه سیستمِ ساخت کوچیکه که تمرکزش بر روی سرعته. نینجا طراحیش اینجوریه که ورودی هارو به صورت فایل‌هایی که توسط یک سیستمِ ساختِ سطح بالاتر ایجاد شدن رو بگیره و فرآیند ساخت رو با بالاترین سرعت ممکن انجام بده.

* &#x20;Ncurses

&#x20;این بسته کتابخونه هایی مستقل از ترمینال داره که برای مدیریت نمایش حروف روی صفحه استفاده میشن. معمولاً برای اشاره گرهاش توی سیستم‌هایی که مِنو ارائه میدن کاربرد داره و توسط تعدادی از بسته های LFS استفاده میشه.

* &#x20;Openssl

&#x20;این بسته ابزارهای مدیریتی و کتابخونه های مربوط به کارای رمزنگاری رو داره که توابع مربوط به رمزنگاری ها رو در اختیار بسته های دیگه، مثل کرنل لینوکس، قرار میده.

* &#x20;Patch

&#x20;این بسته شامل برنامه‌هایی برای اصلاح و یا ساخت فایل‌ها با بکار بردن وصله هایی که معمولاً توسط برنامه یdiff ساخته شدن میشه. این بسته در فرآیند ساخت بسیاری از بسته های LFS ای نیازه.

* &#x20;Perl

&#x20;این بسته یه مفسر برای زبان پِرل هست و برای نصب و بررسی بسیاری از بسته های LFS ای نیاز میشه.

* &#x20;Pkg-config

&#x20;این بسته برنامه‌هایی داره که اطلاعاتی درباره ی کتابخونه ها و یا بسته های نصب شده به ما میدن.

* &#x20;Procps-NG

&#x20;این بسته برای مانیتور کردن پروسه هاست. برنامه‌های درون این بسته برای مدیریت سیستم خیلی مفیدن و همچنین توسط اسکریپت های بوت توی LFS مورد استفاده قرار میگیرن.

* &#x20;Psmisc

&#x20;این بسته شامل برنامه هاییه که برای نمایش اطلاعاتِ پروسه های درحال اجرا استفاده میشن و برای مدیریت سیستم خیلی مفیدن.

* &#x20;Python3

&#x20;این بسته یه زبانِ برنامه نویسیِ مفسری ارائه میده که فلسفه ی طراحیش افزایش خوانایی کد هاست.

* &#x20;Readlin

&#x20;این بسته مجموعه‌ای از کتابخونه هارو داره که ویژگی‌هایی مثل ویرایش کردن و تاریخچه ی دستورات رو به خط فرمان اضافه میکنه. این بسته توسط Bash استفاده میشه.

* &#x20;Sed

&#x20;این بسته این امکان رو میده که بتونیم یک متن رو بدون اینکه توی یه ویرایشگر بازش کنیم، ویرایش کنیم. اغلب اسکریپت های تنظیم کننده در بسته های LFS ای از این بسته استفاده میکنن.

* &#x20;Shadow

&#x20;این بسته شامل برنامه هاییه که برای مدیریت امنِ گذرواژه ها استفاده میشن.

* &#x20;Sysklogd

&#x20;این بسته شامل برنامه‌هایی برای ضبط پیام‌هایی هست که سیستم میفرسته(مثل همون پیام‌هایی که کرنل و یا پروسه ی دیمن در زمان وقوع یه اتفاق غیر عادی میفرستن).

* &#x20;Sysvinit

&#x20;این بسته، برنامه ی آغازگر(init) رو در خودش داره. برنامه ی آغازگر، والد همه ی پروسه های یک سیستم لینوکسیه.

* &#x20;Tar

&#x20;این بسته امکاناتی مثل آرشیو سازی و یا استخراج بسته های مورد استفاده در LFS رو به ما میده.

* &#x20;Tcl

&#x20;این بسته (Tool Command Language) توی بسیاری از آزمون بسته ها مورد استفاده قرار میگیره و فقط توی toolchain موقت نصب میشه.

* &#x20;Textinfo

&#x20;این بسته برای خوندن، نوشتن و تبدیل کردن صفحه های اطلاعاتی ئه. این بسته توی فرآیند نصب بسیاری از بسته های LFS استفاده میشه.

* &#x20;Util-linux

&#x20;این بسته شامل ابزار های متفرقه ست. ابزارایی برای مدیریت فایل‌های سیستمی، کنسول ها، پارتیشن ها و پیام ها.

* &#x20;Vim

&#x20;این بسته، یه ویرایشگره. این بسته به دلیل سازگاریش با ویرایشگر کلاسیک vi و قابلیت‌های خفنِ بسیارش انتخاب شد. ویرایشگر یه چیز کاملاً شخصی برای کاربر محسوب میشه و هرکسی میتونه از ویرایشگر مورد نظر خودش بجای vim استفاده کنه.

* &#x20;XML::Parse

&#x20;این بسته یه ماژول پرله که به عنوان یه رابط برای Expat استفاده میشه.

* &#x20;XZ Utils

&#x20;این بسته شامل برنامه‌هاییه که برای فشرده‌سازی و یا خارج کردن فایل‌ها از حالت فشرده استفاده میشن. این بسته بیشتر برای خارج کردن فایل‌هایی با فرمت XZ و یا LZMA از حالت فشرده استفاده میشه.

* &#x20;Zlib

&#x20;این بسته هم شامل روش‌هایی براش فشرده‌سازی و یا خارج کردن فایل‌ها از حالت فشرده ست که توسط بعضی از برنامه‌ها استفاده میشه.
