| RRDBUILD(1) | rrdtool | RRDBUILD(1) |
نام (NAME)
rrdbuild - دستورالعملهای کامپایل و ساخت RRDtool
نمای کلی (OVERVIEW)
اگر سورسکد RRDtool را دانلود کردهاید، باید آن را کامپایل کنید. این سند اطلاعاتی درباره نحوه انجام این کار ارائه میدهد.
برنامه RRDtool به خدمات کتابخانههای شخص ثالث وابسته است. برخی از این کتابخانهها ممکن است از قبل روی سیستم شما نصب شده باشند. باید پیش از امکان ساخت RRDtool، نسخههایی از سایر کتابخانهها را کامپایل کنید.
این سند شما را از تمام مراحل لازم برای شروع کار آگاه میکند.
این دستورالعملها فرض میکنند که شما از شل bash استفاده میکنید. اگر از csh/tcsh استفاده میکنید، میتوانید با تایپ bash برای کامپایل به bash سوییچ کنید، یا اگر میدانید چه کاری انجام میدهید، کافی است بخشهای export را با setenv جایگزین کنید.
ما همچنین فرض میکنیم که نسخههای tar و make شما به ترتیب در واقع GNU tar و GNU make هستند. این امکان وجود دارد که آنها به عنوان gtar و gmake روی سیستم شما نصب شده باشند.
ساخت خوشبینانه (OPTIMISTIC BUILD)
پیش از شروع ساخت RRDtool، باید در مورد دو چیز تصمیم بگیرید:
- 1.
- نرمافزار را در کدام دایرکتوری میخواهید بسازید.
- 2.
- نرمافزار را کجا میخواهید نصب کنید.
پس از تصمیمگیری، هر دو مکان را در متغیرهای محیطی ذخیره کنید.
BUILD_DIR=/tmp/rrdbuild INSTALL_DIR=/opt/rrdtool-1.11.0
اگر پوشه /tmp شما با گزینه noexec مانت شده است (به نظر میرسد RHEL این کار را انجام میدهد)، باید دایرکتوری دیگری را انتخاب کنید!
اکنون مطمئن شوید BUILD_DIR وجود دارد و به آنجا بروید:
mkdir -p $BUILD_DIR cd $BUILD_DIR
ابتدا فرض کنیم شما از قبل تمامی کتابخانههای مورد نیاز را به صورت از پیش نصبشده دارید.
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
بسیار خب، این فرآیند بسیار خوشبینانه بود. این تلاش احتمالاً با خطای configure مبنی بر نبود چندین کتابخانه متوقف خواهد شد.
نصب وابستگیها (INSTALLING DEPENDENCIES)
اگر سیستمعامل شما امکان نصب بستههای اضافی از یک مخزن نرمافزاری را میدهد، میتوانید با نصب بستههای ناموجود کار را پیش ببرید. پس از نصب بستهها، configure را مجدداً اجرا کرده و دوباره اقدام به کامپایل کنید. در ادامه نکاتی برای آمادهسازی سیستمعامل خود جهت کامپایل RRDtool مشاهده میکنید.
ارائه موارد تکمیلی برای این فهرست با استقبال مواجه میشود. به طور کلی RRDtool باید با جدیدترین نسخههای کتابخانهها کار کند. نسخههای ذکر شده در اینجا صرفاً همان مواردی است که هنگام آزمایش این راهنما بهروز بودهاند.
OpenSolaris 2008.05
کافی است یک کامپایلر و بسته توسعه gnome را اضافه کنید:
pkg install sunstudioexpress pkg install SUNWgnome-common-devel
در OpenSolaris مشکلی با cairo.pc وجود دارد. این فایل نشان میدهد که برای کامپایل با cairo به xrender نیاز است. این درست نیست و از سویی نامطلوب است، زیرا OpenSolaris شامل فایل xrender.pc نیست. برای رفع این مشکل از Perl استفاده کنید:
perl -i~ -p -e 's/(Requires.*?)\s*xrender.*/$1/' /usr/lib/pkgconfig/cairo.pc
اطمینان حاصل کنید که سیستم ساخت RRDtool کامپایلر جدید شما را پیدا میکند
export PATH=/opt/SunStudioExpress/bin
Debian / Ubuntu
از apt-get برای اطمینان از داشتن تمام موارد مورد نیاز استفاده کنید. تعدادی از بستهها از طریق وابستگیها اضافه خواهند شد.
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
Gentoo
نصب RRDtool در Gentoo واقعاً ساده است، تنها کافی است دستور emerge rrdtool را اجرا کنید. تمام وابستگیها به صورت خودکار توسط سیستم portage مدیریت میشوند. تنها چیزی که باید به آن توجه کنید فلگهای USE هستند، که به شما اجازه میدهند قابلیتهایی را که RRDtool با آنها ساخته میشود تنظیم دقیق کنید. در حال حاضر فلگهای USE زیر در دسترس هستند:
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
پس از اینکه تصمیم گرفتید به کدام فلگهای USE نیاز دارید، آنها را در make.conf یا /etc/portage/package.use تنظیم کرده و در نهایت اجرا کنید:
# emerge -va rrdtool
برای جزئیات بیشتر درباره نحوه مدیریت فلگهای USE به راهنمای Gentoo مراجعه کنید:
http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2
ساخت وابستگیها (BUILDING DEPENDENCIES)
اما باز هم این روند ممکن است بسیار خوشبینانه بوده باشد، و شما در واقع مجبور باشید نسخههای اختصاصی خود را از برخی کتابخانههای مورد نیاز کامپایل کنید. مواردی مانند libpng و zlib بسیار استاندارد هستند، بنابراین احتمالاً از قبل آنها را روی سیستم خود خواهید داشت. ممکن است Freetype، Fontinst، Cairo و Pango نصب باشند، اما این احتمال وجود دارد که بسیار قدیمی باشند و انتظارات ما را برآورده نکنند؛ بنابراین شاید بخواهید آخرین نسخه آنها را کامپایل کنید.
نکات کلی ساخت برای AIX
اگر با AIX کار میکنید، ممکن است متوجه شوید که گزینه --disable-shared باعث بروز مشکل برای شما خواهد شد. در این صورت ممکن است مجبور شوید کتابخانههای اشتراکی را در PREFIX برنامه RRDtool نصب کرده و به جای آن با --disable-static کار کنید.
نکته دیگر برای اجرای RRDtool روی AIX، استفاده از کامپایلر IBM XL C است:
export CC=/usr/vac/bin/cc export PERLCC=$CC
(دستورالعملهای بهتر برای AIX با استقبال پذیرفته میشود!)
دستورالعملهای ساخت
برخی از کتابخانهها باید بدانند کتابخانههای دیگر کجا هستند. برای انجام این کار، متغیر محیطی زیر را تنظیم کنید
export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/pkgconfig
export PATH=$INSTALL_DIR/bin:$PATH
موارد فوق به وجود برنامه pkgconfig متکی هستند. در ادامه دستورالعملهای نحوه کامپایل pkgconfig را مشاهده میکنید.
از آنجا که ما کتابخانهها را به صورت پویا (dynamic) کامپایل میکنیم، آنها باید بدانند یکدیگر را کجا پیدا کنند. این کار با تنظیم یک LDFLAGS مناسب انجام میشود. متأسفانه سینتکس آن دوباره از سیستمی به سیستم دیگر متفاوت است:
- Solaris
-
export LDFLAGS=-R${INSTALL_DIR}/libاگر از کامپایلر Sun Studio/Forte استفاده میکنید، ممکن است بخواهید متغیر زیر را نیز تنظیم کنید:
CFLAGS="-xO3 -xcode=pic13" (SPARC) CFLAGS="-xO3 -Kpic" (x86)
- Linux
-
export LDFLAGS="-Wl,--rpath -Wl,${INSTALL_DIR}/lib" - HPUX
-
export LDFLAGS="+b${INSTALL_DIR}/lib" - AIX
-
export LDFLAGS="-Wl,-blibpath:${INSTALL_DIR}/lib"
اگر GNU make را نصب کردهاید و با نام 'make' نامگذاری نشده است، دستور زیر را اجرا کنید:
export MAKE=gmake export GNUMAKE=gmake
در غیر این صورت، تنها کافی است دستور زیر را اجرا کنید:
export MAKE=make
ساخت pkgconfig
همانطور که در بالا ذکر شد، بدون pkgconfig کل فرآیند ساخت با سختی و دردسرهای بسیاری همراه خواهد بود، بنابراین اطمینان حاصل کنید که یک نسخه از آن را روی سیستم خود دارید. اگر به صورت پیشفرض در دسترس نیست، نحوه کامپایل آن در اینجا آمده است.
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
پس از نصب pkgconfig در یک دایرکتوری سفارشی، تنظیم متغیر محیطی متناظر مفید خواهد بود.
export PKG_CONFIG=$INSTALL_DIR/bin/pkg-config
ساخت zlib
احتمال بسیار زیادی وجود دارد که از قبل آن را روی سیستم خود داشته باشید...
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
ساخت libpng
خود کتابخانه Libpng برای ساخت به zlib نیاز دارد، بنابراین باید کمی کمک کنیم. اگر از قبل یک نسخه از zlib روی سیستم خود دارید (که بسیار محتمل است)، میتوانید تنظیمات LDFLAGS و CPPFLAGS را نادیده بگیرید. توجه داشته باشید که بکاسلش (\) در انتهای خطوط به این معنی است که دستور در چند خط شکسته شده است.
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
ساخت freetype
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
اگر هنگام ساخت freetype در Solaris با مشکلاتی مواجه شدید، میتوانید عبارت زیر را در ابتدای خط configure اضافه کنید:
env EGREP=egrep
ساخت LibXML2
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
ساخت fontconfig
توجه داشته باشید که fontconfig دارای یک فایل پیکربندی زمان اجرا در مسیر INSTALL_DIR/etc است؛ ممکن است بخواهید آن را طوری تنظیم کنید که fontconfig فونتهای سیستم شما را پیدا کند. پس از تغییر فایل کانفیگ، برنامه fc-cache را اجرا کنید تا کَش fontconfig ساخته شود.
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
ساخت Pixman
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
ساخت Cairo
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 \ --enable-xlib=no \ --enable-xlib-render=no \ --enable-win32=no \ CFLAGS="-O3 -fPIC" $MAKE $MAKE install
هنگام ساخت روی Solaris ممکن است بخواهید این دستور را اجرا کنید:
./configure --prefix=$INSTALL_DIR \ --enable-xlib=no \ --enable-xlib-render=no \ --enable-win32=no \ CFLAGS="-O3 -fPIC -D_POSIX_PTHREAD_SEMANTICS"
ساخت Glib
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
ساخت Pango
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
ساخت rrdtool (تلاش دوم)
اکنون تمام کتابخانههای وابسته ساخته شدهاند و میتوانید دوباره امتحان کنید. این بار به configure مشخص میکنید که کجا باید به دنبال کتابخانهها و فایلهای include بگردد. این کار از طریق متغیرهای محیطی انجام میشود. بسته به شلی که استفاده میکنید، سینتکس تنظیم متغیرهای محیطی متفاوت است.
و در نهایت، ساخت را دوباره امتحان کنید. ما بایندرهای python و tcl را غیرفعال میکنیم، چرا که به نظر میرسد تعداد قابلتوجهی از افراد پیکربندیهای نامناسبی از python و tcl دارند که اگر در وضعیت فعلیشان گنجانده شوند، مانع از ساخت RRDtool میشوند.
cd $BUILD_DIR/rrdtool-1.11.0 ./configure --prefix=$INSTALL_DIR --disable-tcl --disable-python $MAKE clean $MAKE $MAKE install
نکته SOLARIS: اگر میخواهید ماژول Perl را برای نسخه محلی Perl (نسخهای که همراه با Solaris ارائه میشود) بسازید، باید کامپایلر Sun Forte روی سیستم شما نصب باشد یا اینکه مجبورید هنگام ساخت، فایل bindings/perl-shared/Makefile را به صورت دستی تنظیم کنید!
اکنون به مسیر $INSTALL_DIR/share/rrdtool/examples/ رفته و آنها را اجرا کنید تا ببینید آیا ساخت با موفقیت انجام شده است یا خیر.
نویسنده (AUTHOR)
Tobias Oetiker <tobi@oetiker.ch>
| 2026-08-08 | 1.11.0 |