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
دستور
میدهد
هشدارهای
مربوط به
تکرار
چندباره
بستهها یا
ماژولها
را صادر
نکند. این
متغیر باید
روی
دایرکتوریای
تنظیم شود
که
بستههای
نادیدهگرفتهشده
برای این
هشدار در آن
قرار دارند.