| MANPATH(5) | فایلهای پیکربندی | MANPATH(5) |
نام (NAME)
manpath.config - ساختار و قالب فایل پیکربندی مسیرهای صفحات راهنما
توضیحات (DESCRIPTION)
فایل manpath.config توسط ابزارهای پایگاه داده صفحات راهنما (man-db) برای مشخص کردن مسیرهای سیستم، نگاشت دایرکتوریهای باینری به دایرکتوریهای man، و درختهای سلسلهمراتبی صفحات راهنما استفاده میشود. این فایل در زمان اجرا مسیرهای راهنما (manpaths) را برای کاربران ارزیابی میکند، مشخص میسازد کدام سلسلهمراتب صفحات راهنما به عنوان سلسلهمراتبهای سیستمی تلقی شوند و چه دایرکتوریهایی برای ذخیره فایلهای cat (صفحات پیشفرمتشده) به آنها اختصاص یابد.
چنانچه متغیر محیطی $MANPATH از قبل مقداردهی شده باشد، اطلاعات موجود در /etc/manpath.config آن را بازنویسی نخواهد کرد.
مسیر جستجو (SEARCH PATH)
بهطور پیشفرض، man-db متغیر محیطی $PATH کاربر را بررسی میکند. به ازای هر path_element که در آن یافت شود، manpath_element را به مسیر جستجو اضافه میکند.
اگر هیچ خط MANPATH_MAP در فایل پیکربندی برای یک path_element معین وجود نداشته باشد، تمام موارد path_element/../man, path_element/man, path_element/../share/man و path_element/share/man که به عنوان دایرکتوری وجود داشته باشند را به مسیر جستجو میافزاید.
سپس هر مدخل MANDATORY_MANPATH از فایل پیکربندی را به مسیر جستجو اضافه میکند.
در نهایت، اگر گزینه --systems به کار رود یا متغیر محیطی $SYSTEM تنظیم شده باشد، آنگاه مقدار آن باید شامل دنبالهای از نامهای سیستمعامل باشد که با کاما یا دونقطه از هم جدا شدهاند. این به عنوان یک الگو عمل میکند و مسیر جستجو را یک بار دیگر گسترش میدهد تا امکان دسترسی به صفحات راهنمای سایر سیستمعاملها فراهم شود: به ازای هر نام سیستم، man-db آن نام را به عنوان یک زیرشاخه در هر ورودی مسیر جستجو بررسی کرده و در صورت وجود، آن را به مسیر جستجوی نهایی میافزاید. نام سیستمی با مقدار man مسیر جستجوی عادی را بدون زیرشاخهها درج میکند.
برای نمونه، اگر مسیر جستجو در حالت عادی /usr/share/man:/usr/local/man میبود، و $SYSTEM روی newOS:man تنظیم شده باشد، آنگاه مسیر جستجوی نهایی به صورت زیر خواهد بود:
/usr/share/man/newOS:/usr/share/man:/usr/local/man/newOS:/usr/local/man
متغیر محیطی $MANPATH مسیرهای پیشفرض جستجوی صفحات راهنمای man-db را لغو و بازنویسی میکند. اکثر کاربران نیازی به تنظیم آن ندارند. ساختار آن مشابه متغیر محیطی $PATH است: از دنبالهای از نامهای دایرکتوری تشکیل شده که با دونقطه از هم جدا شدهاند. این متغیر بر مسیر جستجوی پیشفرض شرح داده شده در بالا اولویت دارد.
اگر مقدار $MANPATH با دونقطه آغاز شود، مسیر جستجوی پیشفرض به ابتدای آن اضافه میشود.
اگر مقدار $MANPATH به دونقطه ختم شود، مسیر جستجوی پیشفرض به انتهای آن افزوده میشود.
اگر مقدار $MANPATH شامل دو دونقطه پشت سر هم (::) باشد، مسیر جستجوی پیشفرض در میانه مقدار و بین دو دونقطه درج میگردد.
قالب (FORMAT)
انواع فیلدهای زیر در حال حاضر شناخته میشوند:
- # comment
- خطوط خالی یا خطوطی که با # شروع میشوند به عنوان توضیح (کامنت) در نظر گرفته شده و نادیده گرفته میشوند.
- MANDATORY_MANPATH manpath_element
- خطوط با این قالب، مسیرهای راهنمایی را مشخص میکنند که هر $MANPATH تولیدشده به صورت خودکار باید شامل آنها باشد. این معمولاً شامل /usr/man یا /usr/share/man میشود.
- MANPATH_MAP path_element manpath_element
- خطوط با این قالب نگاشتهای $PATH به $MANPATH را تنظیم میکنند. به ازای هر path_element یافتشده در $PATH کاربر، manpath_element به $MANPATH اضافه خواهد شد.
- MANDB_MAP manpath_element [ catpath_element ]
- خطوط با این فرم مشخص میکنند کدام مسیرهای راهنما به عنوان مسیرهای راهنمای سیستمی در نظر گرفته شوند، و به صورت اختیاری فایلهای cat آنها در کجا باید ذخیره گردد. این نوع فیلد به ویژه هنگامی مهم است که man یک برنامه با بیت setuid باشد، زیرا (هنگامی که به جای فایل پیکربندی هر کاربر یعنی .manpath در فایل پیکربندی سیستم یعنی /etc/manpath.config باشد) مشخص میکند به کدام سلسلهمراتب صفحات راهنما به عنوان کاربر setuid و به کدام یک به عنوان کاربر فراخواننده دسترسی پیدا شود.
سلسلهمراتبهای صفحات راهنمای سیستم معمولاً مواردی هستند که زیر /usr ذخیره شدهاند مانند /usr/man, /usr/local/man و /usr/X11R6/man.
اگر صفحات cat یک manpath_element خاص قرار نیست ذخیره شوند یا قرار است در مکان سنتی ذخیره گردند، catpath_element میتواند حذف شود.
قرارگیری سنتی cat برای سلسلهمراتبهای صفحات راهنمای مونتشده به صورت فقطخواندنی غیرممکن خواهد بود و به همین دلیل میتوان هر سلسلهمراتب دایرکتوری معتبری را برای ذخیرهسازی آنها تعیین نمود. برای رعایت استاندارد Linux FSSTND میتوان از کلیدواژه FSSTND به جای یک دایرکتوری واقعی استفاده کرد.
متأسفانه لازم است تمام مسیرهای درخت man سیستم تعیین شوند، از جمله مسیرهای سیستمعاملهای جایگزین مانند /usr/man/sun و هرگونه مسیرهای مربوط به NLS locale نظیر /usr/man/de_DE.88591.
از آنجا که اطلاعات سطر به سطر به ترتیب نوشتهشده پردازش میشوند، لازم است هر manpath که زیرسلسلهمراتب یک سلسلهمراتب دیگر است ابتدا فهرست شود، در غیر این صورت تطابق نادرست انجام میگیرد. به عنوان مثال، /usr/man/de_DE.88591 باید قبل از /usr/man بیاید.
- DEFINE key value
- خطوط با این قالب متغیرهای متفرقه پیکربندی را تعریف میکنند؛ برای متغیرهای استفاده شده توسط ابزارهای صفحهبندی راهنما به فایل پیکربندی پیشفرض مراجعه کنید. آنها شامل مسیرهای پیشفرض برای برنامههای گوناگون (مانند grep و tbl) و مجموعههای پیشفرض آرگومانها برای آن برنامهها هستند.
- SECTION section ...
SECTION 1 n l 8 3 0 2 3type 5 4 9 6 7
اگر چندین دایرکتیو SECTION داده شود، لیستهای بخشهای آنها به یکدیگر متصل (الحاق) خواهند شد.
اگر یک پسوند خاص در این لیست نباشد (مثلاً 1mh) همراه با بقیه بخشی که به آن تعلق دارد نمایش داده خواهد شد. اثر این امر این است که شما تنها در صورتی نیاز دارید پسوندها را به طور صریح فهرست کنید که بخواهید ترتیب خاصی را اعمال نمایید. بخشهای دارای پسوند معمولاً باید مجاور بخش اصلی خود باشند (مانند "1 1mh 8 ...").
نام SECTIONS نیز به عنوان نامی جایگزین برای این دایرکتیو پذیرفته میشود.
- MINCATWIDTH width
- اگر عرض ترمینال کمتر از width باشد، صفحات cat ایجاد نمیشوند (در صورت موجود نبودن) یا نمایش داده نخواهند شد. مقدار پیشفرض 80 است.
- MAXCATWIDTH width
- اگر عرض ترمینال بیشتر از width باشد، صفحات cat ایجاد نمیشوند یا نمایش داده نخواهند شد. مقدار پیشفرض 80 است.
- CATWIDTH width
- اگر مقدار width غیرصفر باشد، صفحات cat همیشه برای ترمینالی با عرض مشخصشده قالببندی میشوند، صرفنظر از عرض ترمینالی که در عمل استفاده میشود. این گزینه بر MINCATWIDTH و MAXCATWIDTH اولویت دارد و آنها را بازنویسی میکند.
- NOCACHE
- این فلگ از ایجاد خودکار صفحات cat توسط man(1) جلوگیری میکند.
اشکالات (BUGS)
مگر اینکه قواعد بالا دقیقاً دنبال و رعایت شوند، ابزارهای صفحهبندی راهنما طبق انتظار عمل نخواهند کرد. قوانین فوق بیش از حد پیچیده هستند.
https://gitlab.com/man-db/man-db/-/issues
https://savannah.nongnu.org/bugs/?group=man-db
| مه ۲۰۲۵ | man-db |