.TH "findlib.conf" "5" "The findlib package manager for OCaml" "User Manual" .SH "نام (NAME)" findlib.conf \- پیکربندی findlib/ocamlfind .SH "عمومی (GENERAL)" .ft R .ft R سه روش برای پیکربندی کتابخانه findlib وجود دارد:\c \& \& .PP .ft R .RS "2m" .ft R زمان ساخت (Build time):\c .RE .ft R .sp .RS "7m" .ft R .ft R پیش از کامپایل شدن findlib، یک اسکریپت "configure" اجرا می‌شود تا تنظیماتی\c \& \& را که بیشترین احتمال کارکرد صحیح روی سیستم دارند تعیین کند. بیشتر\c \& \& تنظیمات به سادگی در فایل‌های متنی وارد می‌شوند و پس از نصب به آسانی\c \& \& قابل تغییر هستند. ویژگی‌های زیر را نمی‌توان بعداً تغییر داد زیرا\c \& \& در باینری‌های حاصل کامپایل می‌شوند:\c \& \& \& .PP .ft R .RS "7m" .ft R \&\h'-3m'\z\(bu\h'3m'\c .ft R مسیر پیش‌فرض فایل پیکربندی findlib.conf. با این حال، می‌توانید\c \& \& با متغیر محیطی\c \& \& OCAMLFIND_CONF\c \& مسیری متفاوت تعیین کنید.\c \& \& .RE .ft R .sp .RS "7m" .ft R \&\h'-3m'\z\(bu\h'3m'\c .ft R اینکه نسخه OCaml نصب‌شده از پیوند خودکار (autolinking) پشتیبانی می‌کند یا خیر.\c \& \& .RE .ft R .PP .ft R .RE .ft R .sp .RS "2m" .ft R فایل پیکربندی findlib.conf:\c .RE .ft R .sp .RS "7m" .ft R .ft R نسخه اولیه این فایل توسط اسکریپت configure تولید می‌شود،\c \& \& اما بعداً در ویرایش آن آزاد هستید. مهم‌تر از همه، این فایل\c \& \& حاوی مسیر جستجوی سراسری سیستم برای یافتن بسته‌ها، و مسیر\c \& \& پیش‌فرض برای نصب بسته‌های جدید است.\c \& \& .PP .ft R تمام فایل‌های دارای پسوند ".conf" که در دایرکتوری\c \& \& findlib.conf.d یافت شوند نیز برای پارامترها بررسی می‌شوند.\c \& \& .RE .ft R .sp .RS "2m" .ft R متغیرهای محیطی (Environment variables):\c .RE .ft R .sp .RS "7m" .ft R .ft R تنظیمات findlib.conf را می‌توان توسط متغیرهای محیطی بازنویسی کرد.\c \& \& .RE .ft R .PP .ft R در نهایت، چندین تنظیم را می‌توان به عنوان گزینه‌های خط فرمان\c \& \& یا با فراخوانی تابع\c \& \& Findlib.init\c \& نیز منتقل کرد. .SH "findlib.conf" .ft R .ft R دایرکتوری حاوی findlib.conf در زمان ساخت (با اجرای اسکریپت configure)\c \& \& تعیین می‌شود، پیش‌فرض جایگزین\c \& \& /usr/local/etc\c \& است. می‌توانید با تغییر متغیر محیطی\c \& \& OCAMLFIND_CONF\c \& مکان متفاوتی تعیین کنید که باید حاوی مسیر مطلق findlib.conf باشد.\c .PP .ft R این فایل همان نحو META\c \& را دارد، یعنی از تعدادی خط با قالب زیر تشکیل شده است:\c \& \& .PP .ft R .ft B .nf .ft I variable\c .ft B \&\ =\ "\c .ft I value\c .ft B "\c .ft R .fi .PP .ft R در اینجا فهرست متغیرهای مجاز آمده است:\c \& \& .PP .ft R .RS "2m" .ft R path\c .RE .ft R .sp .RS "7m" .ft R .ft R مسیر جستجو برای فایل‌های META و دایرکتوری‌های بسته. این متغیر دایرکتوری‌هایی\c \& \& را که با دونقطه (در ویندوز: نقطه‌ویرگول) از هم جدا شده‌اند فهرست می‌کند،\c \& \& و این دایرکتوری‌ها به نوبت برای یافتن یک بسته خاص بررسی می‌شوند. به طور دقیق‌تر،\c \& \& اگر d چنین دایرکتوری‌ای و p بسته مورد جستجو باشد، الگوریتم جستجو ابتدا بررسی می‌کند\c \& \& که آیا d/p/META وجود دارد یا خیر. در این حالت، این فایل META برداشته شده و d/p\c \& \& دایرکتوری بسته خواهد بود. در مرتبه دوم، الگوریتم d/META.p را بررسی می‌کند، اما\c \& \& دایرکتوری بسته باید در این فایل META.p توسط دستورالعمل\c \& \& directory\c \& مشخص شده باشد.\c \& \& .PP .ft R توجه داشته باشید که نخستین فایل META یافت‌شده انتخاب می‌شود، بنابراین ترتیب\c \& \& دایرکتوری‌ها در مسیر جستجو اهمیت دارد.\c \& \& .PP .ft R این متغیر الزامی است.\c \& \& .PP .ft R مثال:\c \& \& \& .PP .ft R .ft B .nf path\ =\ "/usr/local/lib/ocaml/site-lib:/usr/lib/ocaml/site-lib"\c .ft R .fi \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R destdir\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر مکانی را مشخص می‌کند که ocamlfind install\c \& بسته‌ها را به طور پیش‌فرض در آن قرار می‌دهد: اگر d این دایرکتوری و p بسته مورد نظر برای\c \& \& نصب باشد، یک زیردایرکتوری جدید d/p شامل تمام فایل‌های بسته ایجاد خواهد شد.\c \& \& .PP .ft R مثال:\c \& \& .PP .ft R .ft B .nf destdir\ =\ "/usr/local/lib/ocaml/site-lib"\c .ft R .fi \& \& .PP .ft R این متغیر الزامی است.\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R metadir\c .RE .ft R .sp .RS "7m" .ft R .ft R در صورت تنظیم شدن، دستور ocamlfind install\c \& فایل‌های META بسته‌ها را در این دایرکتوری قرار می‌دهد (نام فایل‌ها META.p خواهد بود\c \& \& که در آن p=نام بسته است)؛ در غیر این صورت فایل‌های META مانند هر فایل دیگری\c \& \& در دایرکتوری‌های بسته قرار می‌گیرند.\c \& \& .PP .ft R مثال:\c \& \& .PP .ft R .ft B .nf metadir\ =\ "/var/lib/findlib/metaregistry"\c .ft R .fi \& \& .PP .ft R این متغیر اختیاری است. به طور پیش‌فرض استفاده نمی‌شود.\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R ocamlc\c ,\c \& \& ocamlopt\c ,\c \& \& ocamlcp\c ,\c \& \& ocamlmktop\c ,\c \& \& ocamldoc\c ,\c \& \& ocamldep\c ,\c \& \& ocamlbrowser\c \& \& .RE .ft R .sp .RS "7m" .ft R .ft R اگر می‌خواهید برنامه‌های اجرایی دیگری غیر از "ocamlc"، "ocamlopt"،\c \& \& "ocamlcp"، "ocamlmktop"، "ocamldoc"، "ocamldep" و\c \& \& "ocamlbrowser" را فراخوانی کنید، می‌توانید نام برنامه‌های اجرایی را در اینجا\c \& \& تنظیم کنید. دستور ocamlfind\c \& به این متغیرها نگاه می‌کند تا نام کامپایلرهایی را که باید فراخوانی شوند تعیین کند.\c \& \& .PP .ft R مثال:\c \& \& .PP .ft R .ft B .nf ocamlc\ \ \ \ \ =\ "ocamlc.opt"\c \& .br ocamlopt\ \ \ =\ "ocamlopt.opt"\c \& .br ocamlcp\ \ \ \ =\ "ocamlcp.opt"\c \& .br ocamlmktop\ =\ "ocamlmktop.opt"\c .ft R .fi \& \& .PP .ft R این متغیر اختیاری است. به طور پیش‌فرض استفاده نمی‌شود.\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R stdlib\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر مکان کتابخانه استاندارد را مشخص می‌کند. این مسیر باید همان دایرکتوری‌ای باشد\c \& \& که کامپایلرهای OCaml برای آن پیکربندی شده‌اند.\c \& \& .PP .ft R این متغیر اختیاری است. توصیه نمی‌شود این متغیر را تنظیم کنید\c \& \& مگر اینکه بدانید چه کار می‌کنید!\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R ldconf\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر مکان فایل ld.conf را مشخص می‌کند. این باید همان فایلی باشد\c \& \& که کامپایلرهای OCaml می‌خوانند؛ این فایل هنگام نصب و حذف بسته‌ها توسط\c \& \& ocamlfind به‌روزرسانی می‌شود. می‌توانید این متغیر را روی مقدار ویژه "\c ignore\c " تنظیم کنید تا تغییر خودکار فایل ld.conf غیرفعال شود.\c \& \& .PP .ft R در صورت عدم تنظیم، فرض می‌شود فایل ld.conf در دایرکتوری کتابخانه\c \& \& استاندارد OCaml قرار دارد.\c \& \& .PP .ft R این متغیر اختیاری است. توصیه نمی‌شود این متغیر را تنظیم کنید\c \& \& مگر اینکه بدانید چه کار می‌کنید!\c \& \& .RE .ft R .PP .ft R .ft R زنجیره‌های ابزار (Toolchains): داشتن گونه‌هایی از پیکربندی اصلی امکان‌پذیر است.\c \& این گونه‌ها "زنجیره‌های ابزار" یا همان toolchain نامیده می‌شوند چرا که هدف آن‌ها\c \& انتخاب کامپایلرهای مختلف، به عنوان مثال کامپایلرهای پچ‌شده است. برای\c \& تنظیم یک متغیر برای یک زنجیره ابزار خاص، از نحو زیر استفاده کنید:\c \& \& .PP .ft R .ft B .nf .ft I variable\c .ft B (\c .ft I toolchain\c .ft B )\ =\ "\c .ft I value\c .ft B "\c .ft R .fi \& \& برای مثال:\c \& \& .PP .ft R .ft B .nf ocamlc(mypatch)\ =\ "ocamlc-mypatch"\c .ft R .fi \& \& هنگامی که زنجیره ابزار "mypatch" انتخاب شود، این کامپایلر به جای کامپایلر\c \& استاندارد استفاده خواهد شد.\c .PP .ft R برای جابجایی به یک زنجیره ابزار خاص، از گزینه -toolchain دستور ocamlfind\c \&.\c .SH "محیط (ENVIRONMENT)" .ft R .ft R تعدادی از متغیرهای محیطی رفتار findlib/ocamlfind را تغییر می‌دهند:\c \& \& .PP .ft R .RS "2m" .ft R OCAMLFIND_CONF\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر مسیر فایل پیکربندی findlib.conf را بازنویسی می‌کند.\c \& \& این متغیر باید حاوی نام مسیر مطلق این فایل باشد.\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R OCAMLFIND_TOOLCHAIN\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر زنجیره ابزار انتخاب‌شده فعلی را در زمانی که گزینه\c \& -toolchain\c \& در خط فرمان داده نشده باشد، تعیین می‌کند.\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R OCAMLPATH\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر می‌تواند حاوی مسیر جستجوی اضافی برای دایرکتوری‌های بسته باشد.\c \& \& با آن به گونه‌ای رفتار می‌شود که گویی این دایرکتوری‌ها به ابتدای متغیر پیکربندی\c \& path\c \& اضافه شده‌اند.\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R OCAMLFIND_DESTDIR\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر، متغیر پیکربندی\c \& \& destdir\c \& را بازنویسی می‌کند.\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R OCAMLFIND_METADIR\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر، متغیر پیکربندی\c \& \& metadir\c \& را بازنویسی می‌کند.\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R OCAMLFIND_COMMANDS\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر متغیرهای پیکربندی\c \& \& ocamlc\c , ocamlopt\c ,\c \& \& ocamlcp\c , ocamlmktop\c ,\c \& \& ocamldoc\c , ocamldep\c \& و/یا\c \& \& ocamlbrowser\c \&. \& \& مقدار آن باید با نحو زیر مطابقت داشته باشد:\c \& \& \& .PP .ft R .ft B .nf ocamlc=\c .ft I name\c .ft B \&\ ocamlopt=\c .ft I name\c .ft B \&\ ocamlcp=\c .ft I name\c .ft B \&\ ocamlmktop=\c .ft I name\c .ft B \&\ ocamldoc=\c .ft I name\c .ft B \&\ ocamldep=\c .ft I name\c .ft B \&\ ocamlbrowser=\c .ft I name\c .ft B .ft R .fi \& \& .PP .ft R مثال:\c \& \& .PP .ft R .ft B .nf ocamlc=ocamlc-3.00\ ocamlopt=ocamlopt-3.00\ ocamlcp=ocamlcp-3.00\ ocamlmktop=ocamlmktop-3.00\c .ft R .fi \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R CAMLLIB\c \& یا\c \& OCAMLLIB\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر، متغیر پیکربندی\c \& \& stdlib\c \& را بازنویسی می‌کند.\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R OCAMLFIND_LDCONF\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر، متغیر پیکربندی\c \& \& ldconf\c \& را بازنویسی می‌کند.\c \& \& .RE .ft R .PP .ft R .ft R .RS "2m" .ft R OCAMLFIND_IGNORE_DUPS_IN\c .RE .ft R .sp .RS "7m" .ft R .ft R این متغیر به findlib دستور می‌دهد هشدارهای مربوط به تکرار چندباره بسته‌ها\c \& یا ماژول‌ها را صادر نکند. این متغیر باید روی دایرکتوری‌ای تنظیم شود\c \& که بسته‌های نادیده‌گرفته‌شده برای این هشدار در آن قرار دارند.\c \& \& .RE .ft R .PP .ft R