findlib.conf(5) File Formats Manual findlib.conf(5)

findlib.conf - پیکربندی findlib/ocamlfind

سه روش برای پیکربندی کتابخانه findlib وجود دارد:

زمان ساخت (Build time):
پیش از کامپایل شدن findlib، یک اسکریپت "configure" اجرا می‌شود تا تنظیماتی را که بیشترین احتمال کارکرد صحیح روی سیستم دارند تعیین کند. بیشتر تنظیمات به سادگی در فایل‌های متنی وارد می‌شوند و پس از نصب به آسانی قابل تغییر هستند. ویژگی‌های زیر را نمی‌توان بعداً تغییر داد زیرا در باینری‌های حاصل کامپایل می‌شوند:
مسیر پیش‌فرض فایل پیکربندی findlib.conf. با این حال، می‌توانید با متغیر محیطی OCAMLFIND_CONF مسیری متفاوت تعیین کنید.
اینکه نسخه OCaml نصب‌شده از پیوند خودکار (autolinking) پشتیبانی می‌کند یا خیر.
فایل پیکربندی findlib.conf:
نسخه اولیه این فایل توسط اسکریپت configure تولید می‌شود، اما بعداً در ویرایش آن آزاد هستید. مهم‌تر از همه، این فایل حاوی مسیر جستجوی سراسری سیستم برای یافتن بسته‌ها، و مسیر پیش‌فرض برای نصب بسته‌های جدید است.

تمام فایل‌های دارای پسوند ".conf" که در دایرکتوری findlib.conf.d یافت شوند نیز برای پارامترها بررسی می‌شوند.

متغیرهای محیطی (Environment variables):
تنظیمات findlib.conf را می‌توان توسط متغیرهای محیطی بازنویسی کرد.

در نهایت، چندین تنظیم را می‌توان به عنوان گزینه‌های خط فرمان یا با فراخوانی تابع Findlib.init نیز منتقل کرد.

دایرکتوری حاوی findlib.conf در زمان ساخت (با اجرای اسکریپت configure) تعیین می‌شود، پیش‌فرض جایگزین /usr/local/etc است. می‌توانید با تغییر متغیر محیطی OCAMLFIND_CONF مکان متفاوتی تعیین کنید که باید حاوی مسیر مطلق findlib.conf باشد.

این فایل همان نحو META را دارد، یعنی از تعدادی خط با قالب زیر تشکیل شده است:

variable
 = "
value
"

در اینجا فهرست متغیرهای مجاز آمده است:

path
مسیر جستجو برای فایل‌های META و دایرکتوری‌های بسته. این متغیر دایرکتوری‌هایی را که با دونقطه (در ویندوز: نقطه‌ویرگول) از هم جدا شده‌اند فهرست می‌کند، و این دایرکتوری‌ها به نوبت برای یافتن یک بسته خاص بررسی می‌شوند. به طور دقیق‌تر، اگر d چنین دایرکتوری‌ای و p بسته مورد جستجو باشد، الگوریتم جستجو ابتدا بررسی می‌کند که آیا d/p/META وجود دارد یا خیر. در این حالت، این فایل META برداشته شده و d/p دایرکتوری بسته خواهد بود. در مرتبه دوم، الگوریتم d/META.p را بررسی می‌کند، اما دایرکتوری بسته باید در این فایل META.p توسط دستورالعمل directory مشخص شده باشد.

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

این متغیر الزامی است.

مثال:

path = "/usr/local/lib/ocaml/site-lib:/usr/lib/ocaml/site-lib"
destdir
این متغیر مکانی را مشخص می‌کند که ocamlfind install بسته‌ها را به طور پیش‌فرض در آن قرار می‌دهد: اگر d این دایرکتوری و p بسته مورد نظر برای نصب باشد، یک زیردایرکتوری جدید d/p شامل تمام فایل‌های بسته ایجاد خواهد شد.

مثال:

destdir = "/usr/local/lib/ocaml/site-lib"

این متغیر الزامی است.

metadir
در صورت تنظیم شدن، دستور ocamlfind install فایل‌های META بسته‌ها را در این دایرکتوری قرار می‌دهد (نام فایل‌ها META.p خواهد بود که در آن p=نام بسته است)؛ در غیر این صورت فایل‌های META مانند هر فایل دیگری در دایرکتوری‌های بسته قرار می‌گیرند.

مثال:

metadir = "/var/lib/findlib/metaregistry"

این متغیر اختیاری است. به طور پیش‌فرض استفاده نمی‌شود.

ocamlc, ocamlopt, ocamlcp, ocamlmktop, ocamldoc, ocamldep, ocamlbrowser
اگر می‌خواهید برنامه‌های اجرایی دیگری غیر از "ocamlc"، "ocamlopt"، "ocamlcp"، "ocamlmktop"، "ocamldoc"، "ocamldep" و "ocamlbrowser" را فراخوانی کنید، می‌توانید نام برنامه‌های اجرایی را در اینجا تنظیم کنید. دستور ocamlfind به این متغیرها نگاه می‌کند تا نام کامپایلرهایی را که باید فراخوانی شوند تعیین کند.

مثال:

ocamlc     = "ocamlc.opt"
ocamlopt   = "ocamlopt.opt"
ocamlcp    = "ocamlcp.opt"
ocamlmktop = "ocamlmktop.opt"

این متغیر اختیاری است. به طور پیش‌فرض استفاده نمی‌شود.

stdlib
این متغیر مکان کتابخانه استاندارد را مشخص می‌کند. این مسیر باید همان دایرکتوری‌ای باشد که کامپایلرهای OCaml برای آن پیکربندی شده‌اند.

این متغیر اختیاری است. توصیه نمی‌شود این متغیر را تنظیم کنید مگر اینکه بدانید چه کار می‌کنید!

ldconf
این متغیر مکان فایل ld.conf را مشخص می‌کند. این باید همان فایلی باشد که کامپایلرهای OCaml می‌خوانند؛ این فایل هنگام نصب و حذف بسته‌ها توسط ocamlfind به‌روزرسانی می‌شود. می‌توانید این متغیر را روی مقدار ویژه "ignore" تنظیم کنید تا تغییر خودکار فایل ld.conf غیرفعال شود.

در صورت عدم تنظیم، فرض می‌شود فایل ld.conf در دایرکتوری کتابخانه استاندارد OCaml قرار دارد.

این متغیر اختیاری است. توصیه نمی‌شود این متغیر را تنظیم کنید مگر اینکه بدانید چه کار می‌کنید!

زنجیره‌های ابزار (Toolchains): داشتن گونه‌هایی از پیکربندی اصلی امکان‌پذیر است. این گونه‌ها "زنجیره‌های ابزار" یا همان toolchain نامیده می‌شوند چرا که هدف آن‌ها انتخاب کامپایلرهای مختلف، به عنوان مثال کامپایلرهای پچ‌شده است. برای تنظیم یک متغیر برای یک زنجیره ابزار خاص، از نحو زیر استفاده کنید:

variable
(
toolchain
) = "
value
"
برای مثال:
ocamlc(mypatch) = "ocamlc-mypatch"
هنگامی که زنجیره ابزار "mypatch" انتخاب شود، این کامپایلر به جای کامپایلر استاندارد استفاده خواهد شد.

برای جابجایی به یک زنجیره ابزار خاص، از گزینه -toolchain دستور ocamlfind.

تعدادی از متغیرهای محیطی رفتار findlib/ocamlfind را تغییر می‌دهند:

OCAMLFIND_CONF
این متغیر مسیر فایل پیکربندی findlib.conf را بازنویسی می‌کند. این متغیر باید حاوی نام مسیر مطلق این فایل باشد.
OCAMLFIND_TOOLCHAIN
این متغیر زنجیره ابزار انتخاب‌شده فعلی را در زمانی که گزینه -toolchain در خط فرمان داده نشده باشد، تعیین می‌کند.
OCAMLPATH
این متغیر می‌تواند حاوی مسیر جستجوی اضافی برای دایرکتوری‌های بسته باشد. با آن به گونه‌ای رفتار می‌شود که گویی این دایرکتوری‌ها به ابتدای متغیر پیکربندی path اضافه شده‌اند.
OCAMLFIND_DESTDIR
این متغیر، متغیر پیکربندی destdir را بازنویسی می‌کند.
OCAMLFIND_METADIR
این متغیر، متغیر پیکربندی metadir را بازنویسی می‌کند.
OCAMLFIND_COMMANDS
این متغیر متغیرهای پیکربندی ocamlc, ocamlopt, ocamlcp, ocamlmktop, ocamldoc, ocamldep و/یا ocamlbrowser. مقدار آن باید با نحو زیر مطابقت داشته باشد:
ocamlc=
name
 ocamlopt=
name
 ocamlcp=
name
 ocamlmktop=
name
 ocamldoc=
name
 ocamldep=
name
 ocamlbrowser=
name

مثال:

ocamlc=ocamlc-3.00 ocamlopt=ocamlopt-3.00 ocamlcp=ocamlcp-3.00 ocamlmktop=ocamlmktop-3.00
CAMLLIB یا OCAMLLIB
این متغیر، متغیر پیکربندی stdlib را بازنویسی می‌کند.
OCAMLFIND_LDCONF
این متغیر، متغیر پیکربندی ldconf را بازنویسی می‌کند.
OCAMLFIND_IGNORE_DUPS_IN
این متغیر به findlib دستور می‌دهد هشدارهای مربوط به تکرار چندباره بسته‌ها یا ماژول‌ها را صادر نکند. این متغیر باید روی دایرکتوری‌ای تنظیم شود که بسته‌های نادیده‌گرفته‌شده برای این هشدار در آن قرار دارند.
The findlib package manager for OCaml User Manual