.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "RRDBUILD 1" .TH RRDBUILD 1 2026-08-08 1.11.0 rrdtool .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" rrdbuild \- دستورالعمل‌های کامپایل و ساخت RRDtool .SH "نمای کلی (OVERVIEW)" .IX Header "OVERVIEW" اگر سورس‌کد RRDtool را دانلود کرده‌اید، باید آن را کامپایل کنید. این سند اطلاعاتی درباره نحوه انجام این کار ارائه می‌دهد. .PP برنامه RRDtool به خدمات کتابخانه‌های شخص ثالث وابسته است. برخی از این کتابخانه‌ها ممکن است از قبل روی سیستم شما نصب شده باشند. باید پیش از امکان ساخت RRDtool، نسخه‌هایی از سایر کتابخانه‌ها را کامپایل کنید. .PP این سند شما را از تمام مراحل لازم برای شروع کار آگاه می‌کند. .PP این دستورالعمل‌ها فرض می‌کنند که شما از شل \fBbash\fR استفاده می‌کنید. اگر از csh/tcsh استفاده می‌کنید، می‌توانید با تایپ \fIbash\fR برای کامپایل به bash سوییچ کنید، یا اگر می‌دانید چه کاری انجام می‌دهید، کافی است بخش‌های export را با setenv جایگزین کنید. .PP ما همچنین فرض می‌کنیم که نسخه‌های \fBtar\fR و \fBmake\fR شما به ترتیب در واقع \fBGNU tar\fR و \fBGNU make\fR هستند. این امکان وجود دارد که آن‌ها به عنوان \&\fBgtar\fR و \fBgmake\fR روی سیستم شما نصب شده باشند. .SH "ساخت خوش‌بینانه (OPTIMISTIC BUILD)" .IX Header "OPTIMISTIC BUILD" پیش از شروع ساخت RRDtool، باید در مورد دو چیز تصمیم بگیرید: .IP 1. 4 نرم‌افزار را در کدام دایرکتوری می‌خواهید بسازید. .IP 2. 4 نرم‌افزار را کجا می‌خواهید نصب کنید. .PP پس از تصمیم‌گیری، هر دو مکان را در متغیرهای محیطی ذخیره کنید. .PP .Vb 2 \& BUILD_DIR=/tmp/rrdbuild \& INSTALL_DIR=/opt/rrdtool\-1.11.0 .Ve .PP اگر پوشه \fI/tmp\fR شما با گزینه noexec مانت شده است (به نظر می‌رسد RHEL این کار را انجام می‌دهد)، باید دایرکتوری دیگری را انتخاب کنید! .PP اکنون مطمئن شوید BUILD_DIR وجود دارد و به آنجا بروید: .PP .Vb 2 \& mkdir \-p $BUILD_DIR \& cd $BUILD_DIR .Ve .PP ابتدا فرض کنیم شما از قبل تمامی کتابخانه‌های مورد نیاز را به صورت از پیش نصب‌شده دارید. .PP .Vb 4 \& wget https://github.com/oetiker/rrdtool\-1.x/releases/download/v1.11.0/rrdtool\-1.11.0.tar.gz \& gunzip \-c rrdtool\-1.11.0.tar.gz | tar xf \- \& cd rrdtool\-1.11.0 \& ./configure \-\-prefix=$INSTALL_DIR && make && make install .Ve .PP بسیار خب، این فرآیند بسیار خوش‌بینانه بود. این تلاش احتمالاً با خطای \&\fBconfigure\fR مبنی بر نبود چندین کتابخانه متوقف خواهد شد. .SH "نصب وابستگی‌ها (INSTALLING DEPENDENCIES)" .IX Header "INSTALLING DEPENDENCIES" اگر سیستم‌عامل شما امکان نصب بسته‌های اضافی از یک مخزن نرم‌افزاری را می‌دهد، می‌توانید با نصب بسته‌های ناموجود کار را پیش ببرید. پس از نصب بسته‌ها، configure را مجدداً اجرا کرده و دوباره اقدام به کامپایل کنید. در ادامه نکاتی برای آماده‌سازی سیستم‌عامل خود جهت کامپایل RRDtool مشاهده می‌کنید. .PP ارائه موارد تکمیلی برای این فهرست با استقبال مواجه می‌شود. به طور کلی RRDtool باید با جدیدترین نسخه‌های کتابخانه‌ها کار کند. نسخه‌های ذکر شده در اینجا صرفاً همان مواردی است که هنگام آزمایش این راهنما به‌روز بوده‌اند. .SS "OpenSolaris 2008.05" .IX Subsection "OpenSolaris 2008.05" کافی است یک کامپایلر و بسته توسعه gnome را اضافه کنید: .PP .Vb 2 \& pkg install sunstudioexpress \& pkg install SUNWgnome\-common\-devel .Ve .PP در OpenSolaris مشکلی با \fIcairo.pc\fR وجود دارد. این فایل نشان می‌دهد که برای کامپایل با cairo به xrender نیاز است. این درست نیست و از سویی نامطلوب است، زیرا OpenSolaris شامل فایل \fIxrender.pc\fR نیست. برای رفع این مشکل از Perl استفاده کنید: .PP .Vb 1 \& perl \-i~ \-p \-e \*(Aqs/(Requires.*?)\es*xrender.*/$1/\*(Aq /usr/lib/pkgconfig/cairo.pc .Ve .PP اطمینان حاصل کنید که سیستم ساخت RRDtool کامپایلر جدید شما را پیدا می‌کند .PP .Vb 1 \& export PATH=/opt/SunStudioExpress/bin .Ve .SS "Debian / Ubuntu" .IX Subsection "Debian / Ubuntu" از apt\-get برای اطمینان از داشتن تمام موارد مورد نیاز استفاده کنید. تعدادی از بسته‌ها از طریق وابستگی‌ها اضافه خواهند شد. .PP .Vb 3 \& apt\-get install autoconf autopoint build\-essential dc \& apt\-get install groff\-base libtool libpango1.0\-dev libxml2\-dev \& apt\-get install python3\-dev python3\-setuptools .Ve .SS Gentoo .IX Subsection "Gentoo" نصب RRDtool در Gentoo واقعاً ساده است، تنها کافی است دستور \fBemerge rrdtool\fR را اجرا کنید. تمام وابستگی‌ها به صورت خودکار توسط سیستم portage مدیریت می‌شوند. تنها چیزی که باید به آن توجه کنید فلگ‌های USE هستند، که به شما اجازه می‌دهند قابلیت‌هایی را که RRDtool با آن‌ها ساخته می‌شود تنظیم دقیق کنید. در حال حاضر فلگ‌های USE زیر در دسترس هستند: .PP .Vb 7 \& doc \- install .html and .txt documentation \& into /usr/share/doc/rrdtool\-1.x.xx/ \& perl \- build and install perl language bindings \& python \- build and install python language bindings \& ruby \- build and install ruby language bindings \& tcl \- build and install tcl language bindings \& rrdcgi \- build and install rrdcgi .Ve .PP پس از اینکه تصمیم گرفتید به کدام فلگ‌های USE نیاز دارید، آن‌ها را در \&\fImake.conf\fR یا \fI/etc/portage/package.use\fR تنظیم کرده و در نهایت اجرا کنید: .PP .Vb 1 \& # emerge \-va rrdtool .Ve .PP برای جزئیات بیشتر درباره نحوه مدیریت فلگ‌های USE به راهنمای Gentoo مراجعه کنید: .PP http://www.gentoo.org/doc/en/handbook/handbook\-x86.xml?part=2 .SH "ساخت وابستگی‌ها (BUILDING DEPENDENCIES)" .IX Header "BUILDING DEPENDENCIES" اما باز هم این روند ممکن است بسیار خوش‌بینانه بوده باشد، و شما در واقع مجبور باشید نسخه‌های اختصاصی خود را از برخی کتابخانه‌های مورد نیاز کامپایل کنید. مواردی مانند libpng و zlib بسیار استاندارد هستند، بنابراین احتمالاً از قبل آن‌ها را روی سیستم خود خواهید داشت. ممکن است Freetype، Fontinst، Cairo و Pango نصب باشند، اما این احتمال وجود دارد که بسیار قدیمی باشند و انتظارات ما را برآورده نکنند؛ بنابراین شاید بخواهید آخرین نسخه آن‌ها را کامپایل کنید. .SS "نکات کلی ساخت برای AIX" .IX Subsection "General build tips for AIX" اگر با AIX کار می‌کنید، ممکن است متوجه شوید که گزینه \fB\-\-disable\-shared\fR باعث بروز مشکل برای شما خواهد شد. در این صورت ممکن است مجبور شوید کتابخانه‌های اشتراکی را در PREFIX برنامه RRDtool نصب کرده و به جای آن با \fB\-\-disable\-static\fR کار کنید. .PP نکته دیگر برای اجرای RRDtool روی AIX، استفاده از کامپایلر IBM XL C است: .PP .Vb 2 \& export CC=/usr/vac/bin/cc \& export PERLCC=$CC .Ve .PP (دستورالعمل‌های بهتر برای AIX با استقبال پذیرفته می‌شود!) .SS "دستورالعمل‌های ساخت" .IX Subsection "Build Instructions" برخی از کتابخانه‌ها باید بدانند کتابخانه‌های دیگر کجا هستند. برای انجام این کار، متغیر محیطی زیر را تنظیم کنید .PP .Vb 2 \& export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/pkgconfig \& export PATH=$INSTALL_DIR/bin:$PATH .Ve .PP موارد فوق به وجود برنامه \fIpkgconfig\fR متکی هستند. در ادامه دستورالعمل‌های نحوه کامپایل pkgconfig را مشاهده می‌کنید. .PP از آنجا که ما کتابخانه‌ها را به صورت پویا (dynamic) کامپایل می‌کنیم، آن‌ها باید بدانند یکدیگر را کجا پیدا کنند. این کار با تنظیم یک LDFLAGS مناسب انجام می‌شود. متأسفانه سینتکس آن دوباره از سیستمی به سیستم دیگر متفاوت است: .IP Solaris 4 .IX Item "Solaris" .Vb 1 \& export LDFLAGS=\-R${INSTALL_DIR}/lib .Ve .Sp اگر از کامپایلر Sun Studio/Forte استفاده می‌کنید، ممکن است بخواهید متغیر زیر را نیز تنظیم کنید: .Sp .Vb 2 \& CFLAGS="\-xO3 \-xcode=pic13" (SPARC) \& CFLAGS="\-xO3 \-Kpic" (x86) .Ve .IP Linux 4 .IX Item "Linux" .Vb 1 \& export LDFLAGS="\-Wl,\-\-rpath \-Wl,${INSTALL_DIR}/lib" .Ve .IP HPUX 4 .IX Item "HPUX" .Vb 1 \& export LDFLAGS="+b${INSTALL_DIR}/lib" .Ve .IP AIX 4 .IX Item "AIX" .Vb 1 \& export LDFLAGS="\-Wl,\-blibpath:${INSTALL_DIR}/lib" .Ve .PP اگر GNU make را نصب کرده‌اید و با نام \*(Aqmake\*(Aq نام‌گذاری نشده است، دستور زیر را اجرا کنید: .PP .Vb 2 \& export MAKE=gmake \& export GNUMAKE=gmake .Ve .PP در غیر این صورت، تنها کافی است دستور زیر را اجرا کنید: .PP .Vb 1 \& export MAKE=make .Ve .PP \fIساخت pkgconfig\fR .IX Subsection "Building pkgconfig" .PP همان‌طور که در بالا ذکر شد، بدون pkgconfig کل فرآیند ساخت با سختی و دردسرهای بسیاری همراه خواهد بود، بنابراین اطمینان حاصل کنید که یک نسخه از آن را روی سیستم خود دارید. اگر به صورت پیش‌فرض در دسترس نیست، نحوه کامپایل آن در اینجا آمده است. .PP .Vb 6 \& wget http://pkgconfig.freedesktop.org/releases/pkg\-config\-0.23.tar.gz \& gunzip \-c pkg\-config\-0.23.tar.gz | tar xf \- \& cd pkg\-config\-0.23 \& ./configure \-\-prefix=$INSTALL_DIR CFLAGS="\-O3 \-fPIC" \& $MAKE \& $MAKE install .Ve .PP پس از نصب pkgconfig در یک دایرکتوری سفارشی، تنظیم متغیر محیطی متناظر مفید خواهد بود. .PP .Vb 1 \& export PKG_CONFIG=$INSTALL_DIR/bin/pkg\-config .Ve .PP \fIساخت zlib\fR .IX Subsection "Building zlib" .PP احتمال بسیار زیادی وجود دارد که از قبل آن را روی سیستم خود داشته باشید... .PP .Vb 7 \& cd $BUILD_DIR \& wget https://oss.oetiker.ch/rrdtool/pub/libs/zlib\-1.2.3.tar.gz \& gunzip \-c zlib\-1.2.3.tar.gz | tar xf \- \& cd zlib\-1.2.3 \& ./configure \-\-prefix=$INSTALL_DIR CFLAGS="\-O3 \-fPIC" \-\-shared \& $MAKE \& $MAKE install .Ve .PP \fIساخت libpng\fR .IX Subsection "Building libpng" .PP خود کتابخانه Libpng برای ساخت به zlib نیاز دارد، بنابراین باید کمی کمک کنیم. اگر از قبل یک نسخه از zlib روی سیستم خود دارید (که بسیار محتمل است)، می‌توانید تنظیمات LDFLAGS و CPPFLAGS را نادیده بگیرید. توجه داشته باشید که بک‌اسلش (\e) در انتهای خطوط به این معنی است که دستور در چند خط شکسته شده است. .PP .Vb 7 \& cd $BUILD_DIR \& wget https://oss.oetiker.ch/rrdtool/pub/libs/libpng\-1.2.18.tar.gz \& gunzip \-c libpng\-1.2.18.tar.gz | tar xf \- \& cd libpng\-1.2.18 \& env CFLAGS="\-O3 \-fPIC" ./configure \-\-prefix=$INSTALL_DIR \& $MAKE \& $MAKE install .Ve .PP \fIساخت freetype\fR .IX Subsection "Building freetype" .PP .Vb 7 \& cd $BUILD_DIR \& wget https://oss.oetiker.ch/rrdtool/pub/libs/freetype\-2.3.5.tar.gz \& gunzip \-c freetype\-2.3.5.tar.gz | tar xf \- \& cd freetype\-2.3.5 \& ./configure \-\-prefix=$INSTALL_DIR CFLAGS="\-O3 \-fPIC" \& $MAKE \& $MAKE install .Ve .PP اگر هنگام ساخت freetype در Solaris با مشکلاتی مواجه شدید، می‌توانید عبارت زیر را در ابتدای خط configure اضافه کنید: .PP .Vb 1 \& env EGREP=egrep .Ve .PP \fIساخت LibXML2\fR .IX Subsection "Building LibXML2" .PP .Vb 7 \& cd $BUILD_DIR \& wget https://oss.oetiker.ch/rrdtool/pub/libs/libxml2\-2.6.32.tar.gz \& gunzip \-c libxml2\-2.6.32.tar.gz | tar xf \- \& cd libxml2\-2.6.32 \& ./configure \-\-prefix=$INSTALL_DIR CFLAGS="\-O3 \-fPIC" \& $MAKE \& $MAKE install .Ve .PP \fIساخت fontconfig\fR .IX Subsection "Building fontconfig" .PP توجه داشته باشید که fontconfig دارای یک فایل پیکربندی زمان اجرا در مسیر INSTALL_DIR/etc است؛ ممکن است بخواهید آن را طوری تنظیم کنید که fontconfig فونت‌های سیستم شما را پیدا کند. پس از تغییر فایل کانفیگ، برنامه fc\-cache را اجرا کنید تا کَش fontconfig ساخته شود. .PP .Vb 7 \& cd $BUILD_DIR \& wget https://oss.oetiker.ch/rrdtool/pub/libs/fontconfig\-2.4.2.tar.gz \& gunzip \-c fontconfig\-2.4.2.tar.gz | tar xf \- \& cd fontconfig\-2.4.2 \& ./configure \-\-prefix=$INSTALL_DIR CFLAGS="\-O3 \-fPIC" \-\-with\-freetype\-config=$INSTALL_DIR/bin/freetype\-config \& $MAKE \& $MAKE install .Ve .PP \fIساخت Pixman\fR .IX Subsection "Building Pixman" .PP .Vb 7 \& cd $BUILD_DIR \& wget https://oss.oetiker.ch/rrdtool/pub/libs/pixman\-0.10.0.tar.gz \& gunzip \-c pixman\-0.10.0.tar.gz | tar xf \- \& cd pixman\-0.10.0 \& ./configure \-\-prefix=$INSTALL_DIR CFLAGS="\-O3 \-fPIC" \& $MAKE \& $MAKE install .Ve .PP \fIساخت Cairo\fR .IX Subsection "Building Cairo" .PP .Vb 11 \& cd $BUILD_DIR \& wget https://oss.oetiker.ch/rrdtool/pub/libs/cairo\-1.6.4.tar.gz \& gunzip \-c cairo\-1.6.4.tar.gz | tar xf \- \& cd cairo\-1.6.4 \& ./configure \-\-prefix=$INSTALL_DIR \e \& \-\-enable\-xlib=no \e \& \-\-enable\-xlib\-render=no \e \& \-\-enable\-win32=no \e \& CFLAGS="\-O3 \-fPIC" \& $MAKE \& $MAKE install .Ve .PP هنگام ساخت روی Solaris ممکن است بخواهید این دستور را اجرا کنید: .PP .Vb 5 \& ./configure \-\-prefix=$INSTALL_DIR \e \& \-\-enable\-xlib=no \e \& \-\-enable\-xlib\-render=no \e \& \-\-enable\-win32=no \e \& CFLAGS="\-O3 \-fPIC \-D_POSIX_PTHREAD_SEMANTICS" .Ve .PP \fIساخت Glib\fR .IX Subsection "Building Glib" .PP .Vb 7 \& cd $BUILD_DIR \& wget https://oss.oetiker.ch/rrdtool/pub/libs/glib\-2.15.4.tar.gz \& gunzip \-c glib\-2.15.4.tar.gz | tar xf \- \& cd glib\-2.15.4 \& ./configure \-\-prefix=$INSTALL_DIR CFLAGS="\-O3 \-fPIC" \& $MAKE \& $MAKE install .Ve .PP \fIساخت Pango\fR .IX Subsection "Building Pango" .PP .Vb 7 \& cd $BUILD_DIR \& wget https://oss.oetiker.ch/rrdtool/pub/libs/pango\-1.21.1.tar.bz2 \& bunzip2 \-c pango\-1.21.1.tar.bz2 | tar xf \- \& cd pango\-1.21.1 \& ./configure \-\-prefix=$INSTALL_DIR CFLAGS="\-O3 \-fPIC" \-\-without\-x \& $MAKE \& $MAKE install .Ve .SS "ساخت rrdtool (تلاش دوم)" .IX Subsection "Building rrdtool (second try)" اکنون تمام کتابخانه‌های وابسته ساخته شده‌اند و می‌توانید دوباره امتحان کنید. این بار به configure مشخص می‌کنید که کجا باید به دنبال کتابخانه‌ها و فایل‌های include بگردد. این کار از طریق متغیرهای محیطی انجام می‌شود. بسته به شلی که استفاده می‌کنید، سینتکس تنظیم متغیرهای محیطی متفاوت است. .PP و در نهایت، ساخت را دوباره امتحان کنید. ما بایندرهای python و tcl را غیرفعال می‌کنیم، چرا که به نظر می‌رسد تعداد قابل‌توجهی از افراد پیکربندی‌های نامناسبی از python و tcl دارند که اگر در وضعیت فعلی‌شان گنجانده شوند، مانع از ساخت RRDtool می‌شوند. .PP .Vb 5 \& cd $BUILD_DIR/rrdtool\-1.11.0 \& ./configure \-\-prefix=$INSTALL_DIR \-\-disable\-tcl \-\-disable\-python \& $MAKE clean \& $MAKE \& $MAKE install .Ve .PP نکته SOLARIS: اگر می‌خواهید ماژول Perl را برای نسخه محلی Perl (نسخه‌ای که همراه با Solaris ارائه می‌شود) بسازید، باید کامپایلر Sun Forte روی سیستم شما نصب باشد یا اینکه مجبورید هنگام ساخت، فایل bindings/perl\-shared/Makefile را به صورت دستی تنظیم کنید! .PP اکنون به مسیر \fR\f(CI$INSTALL_DIR\fR\fI\fR\fB/share/rrdtool/examples/\fR رفته و آن‌ها را اجرا کنید تا ببینید آیا ساخت با موفقیت انجام شده است یا خیر. .SH "نویسنده (AUTHOR)" .IX Header "AUTHOR" Tobias Oetiker