RRDBUILD(1) rrdtool RRDBUILD(1)

rrdbuild - دستورالعمل‌های کامپایل و ساخت RRDtool

اگر سورس‌کد RRDtool را دانلود کرده‌اید، باید آن را کامپایل کنید. این سند اطلاعاتی درباره نحوه انجام این کار ارائه می‌دهد.

برنامه RRDtool به خدمات کتابخانه‌های شخص ثالث وابسته است. برخی از این کتابخانه‌ها ممکن است از قبل روی سیستم شما نصب شده باشند. باید پیش از امکان ساخت RRDtool، نسخه‌هایی از سایر کتابخانه‌ها را کامپایل کنید.

این سند شما را از تمام مراحل لازم برای شروع کار آگاه می‌کند.

این دستورالعمل‌ها فرض می‌کنند که شما از شل bash استفاده می‌کنید. اگر از csh/tcsh استفاده می‌کنید، می‌توانید با تایپ bash برای کامپایل به bash سوییچ کنید، یا اگر می‌دانید چه کاری انجام می‌دهید، کافی است بخش‌های export را با setenv جایگزین کنید.

ما همچنین فرض می‌کنیم که نسخه‌های tar و make شما به ترتیب در واقع GNU tar و GNU make هستند. این امکان وجود دارد که آن‌ها به عنوان gtar و gmake روی سیستم شما نصب شده باشند.

پیش از شروع ساخت 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 مبنی بر نبود چندین کتابخانه متوقف خواهد شد.

اگر سیستم‌عامل شما امکان نصب بسته‌های اضافی از یک مخزن نرم‌افزاری را می‌دهد، می‌توانید با نصب بسته‌های ناموجود کار را پیش ببرید. پس از نصب بسته‌ها، configure را مجدداً اجرا کرده و دوباره اقدام به کامپایل کنید. در ادامه نکاتی برای آماده‌سازی سیستم‌عامل خود جهت کامپایل RRDtool مشاهده می‌کنید.

ارائه موارد تکمیلی برای این فهرست با استقبال مواجه می‌شود. به طور کلی RRDtool باید با جدیدترین نسخه‌های کتابخانه‌ها کار کند. نسخه‌های ذکر شده در اینجا صرفاً همان مواردی است که هنگام آزمایش این راهنما به‌روز بوده‌اند.

کافی است یک کامپایلر و بسته توسعه 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

از 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

نصب 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

اما باز هم این روند ممکن است بسیار خوش‌بینانه بوده باشد، و شما در واقع مجبور باشید نسخه‌های اختصاصی خود را از برخی کتابخانه‌های مورد نیاز کامپایل کنید. مواردی مانند libpng و zlib بسیار استاندارد هستند، بنابراین احتمالاً از قبل آن‌ها را روی سیستم خود خواهید داشت. ممکن است Freetype، Fontinst، Cairo و Pango نصب باشند، اما این احتمال وجود دارد که بسیار قدیمی باشند و انتظارات ما را برآورده نکنند؛ بنابراین شاید بخواهید آخرین نسخه آن‌ها را کامپایل کنید.

اگر با 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 مناسب انجام می‌شود. متأسفانه سینتکس آن دوباره از سیستمی به سیستم دیگر متفاوت است:

export LDFLAGS=-R${INSTALL_DIR}/lib

اگر از کامپایلر Sun Studio/Forte استفاده می‌کنید، ممکن است بخواهید متغیر زیر را نیز تنظیم کنید:

CFLAGS="-xO3 -xcode=pic13"   (SPARC)
CFLAGS="-xO3 -Kpic"          (x86)
export LDFLAGS="-Wl,--rpath -Wl,${INSTALL_DIR}/lib"
export LDFLAGS="+b${INSTALL_DIR}/lib"
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

اکنون تمام کتابخانه‌های وابسته ساخته شده‌اند و می‌توانید دوباره امتحان کنید. این بار به 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/ رفته و آن‌ها را اجرا کنید تا ببینید آیا ساخت با موفقیت انجام شده است یا خیر.

Tobias Oetiker <tobi@oetiker.ch>

2026-08-08 1.11.0