إعادة التجميع باستخدام ServBay
يوفر ServBay لمستخدمي macOS بيئة تطوير ويب محلية قوية ومتكاملة، تتضمن مجموعة غنية من الحزم والأدوات البرمجية. بجانب الإصدارات الافتراضية المثبتة في ServBay، قد يحتاج المطور أحيانًا إلى إعادة تجميع بعض الحزم لتلبية متطلبات خاصة، مثل:
- تفعيل خيارات التجميع الخاصة بحزمة معينة.
- إضافة وحدات أو امتدادات غير مضمنة افتراضيًا في ServBay (مثل امتدادات PHP جديدة أو وحدات PostgreSQL).
- استخدام مكتبات مختلفة عن النسخة الافتراضية التي يوفرها ServBay أثناء التجميع.
- إجراء تعديلات خاصة على حزم البرمجيات التي يقدمها ServBay.
يقدم ServBay البيئة اللازمة وأدوات التجميع المناسبة، لتمكنك من تنفيذ هذه المهام بسهولة.
حتى تتمكن من إعادة التجميع بنجاح، يجب أن تكون لديك معرفة أساسية بعملية تجميع البرمجيات في بيئة Unix/Linux (مثل أوامر configure
, make
, make install
).
المتطلبات المسبقة
قبل البدء في إعادة التجميع، تأكد من استيفاء المتطلبات التالية:
تثبيت مكتبة ServBay Development Library: تُعد هذه الحزمة شرطًا أساسيًا لإعادة التجميع، حيث تحتوي على جميع ملفات المكتبات (
.so
,.a
)، ملفات الرؤوس (.h
) وغيرها من الموارد البرمجية المطلوبة للتجميع في بيئة ServBay. يمكنك تثبيتها من خلال لوحة الحزم في واجهة تطبيق ServBay.تثبيت Xcode Command Line Tools: تُعد هذه الأدوات الأساسية للتطوير على نظام macOS، وتشمل المترجم (Clang) وروابط البرمجيات وغيرها من الأدوات الضرورية. افتح الطرفية ونفذ الأمر التالي للتثبيت:
bashxcode-select --install
1إذا كانت الأدوات مثبتة مسبقًا، سيظهر لك إشعار بهذا.
تثبيت أدوات التجميع الإضافية: لتجميع معظم البرمجيات مفتوحة المصدر، تحتاج كذلك إلى أدوات مثل
autoconf
،automake
،libtool
وغيرها. يمكنك تثبيتها عادة باستخدام مدير الحزم Homebrew:bashbrew install autoconf automake libtool cmake
1إذا لم يكن Homebrew مثبتًا، يُرجى مراجعة الدليل الرسمي وتثبيته أولًا.
إعداد بيئة التجميع
بعد تثبيت مكتبة ServBay Development Library والأدوات الضرورية الأخرى، يجب عليك تهيئة الطرفية البيئية الخاصة بالتجميع. تتضمن هذه الخطوة إعداد متغيرات البيئة (مثل PATH
, CFLAGS
, LDFLAGS
, CPPFLAGS
) لإخبار المترجم ونظام البناء بمواقع مكتبات ServBay وملفات الرؤوس والبرمجيات التنفيذية، لضمان العثور الصحيح على الاعتمادات اللازمة والربط بها.
بيئة ServBay تعتمد على معمارية وحدة المعالجة المركزية في جهازك: إما شرائح Intel (x86_64) أو شرائح Apple Silicon (Arm64). عليك اختيار أمر التهيئة المناسب بناءً على معمارية ServBay Runtime على جهازك.
التحقق من معمارية وحدة المعالجة المركزية في ServBay Runtime
يمكنك معرفة معمارية ServBay بفحص أي ملف تنفيذي في مجلد bin
الخاص بـ ServBay. مثلاً، تحقق من bison
:
bash
# نفذ الأمر التالي في الطرفية للتحقق
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable arm64
1
2
3
2
3
bash
# نفذ الأمر التالي في الطرفية للتحقق
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable x86_64
1
2
3
2
3
بعد معرفة المعمارية، اختر أمر تهيئة البيئة المناسب للنتيجة التي ظهرت لك.
تهيئة متغيرات بيئة التجميع
افتح نافذة طرفية جديدة، وانسخ الأمر الموافق لمعمارية جهازك والصقه في الطرفية لتنفيذه. هذه الأوامر ستقوم بضبط مسارات ورايات التجميع اللازمة لتجميع البرامج ضمن بيئة ServBay.
bash
# تعيين عدد أنوية وحدة المعالجة المركزية للتجميع المتوازي
CPU_NUMBER=$(sysctl -n hw.ncpu)
# مسار تثبيت ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# اسم مجلد الحزم
SERVBAY_PACKAGE_DIR_NAME="package"
# المسار الكامل لمجلد الحزم
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# مسار الملفات التنفيذية
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# مسار ملفات الإعدادات
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# مسار البيانات المتغيرة
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# مسار مكتبة التطوير
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# مسار ملفات الرؤوس
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# مسار ملفات المكتبات
SERVBAY_COMMON_LIB_PATH="${SERVBAY_COMMON_PATH}/lib"
SERVBAY_COMMON_LIBEXEC_PATH="${SERVBAY_COMMON_PATH}/libexec"
SERVBAY_COMMON_SHARE_PATH="${SERVBAY_COMMON_PATH}/share"
SERVBAY_COMMON_MAN_PATH="${SERVBAY_COMMON_PATH}/man"
SERVBAY_COMMON_DOC_PATH="${SERVBAY_COMMON_PATH}/doc"
# مجلد البناء الحالي
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# معلومات إصدار OpenSSL
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# أقل إصدار macOS مستهدف
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey أو أحدث
# راية معمارية البناء
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # غالبًا لا يحتاج Arm64 لراية -target
# إعداد راية المترجم C: مستوى التحسين، أقل إصدار macOS، المعمارية
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# إعداد راية الرابط: مسار مكتبات rpath، مسارات البحث عن المكتبات (-L)، أقل إصدار، المعمارية
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# إعداد راية المعالج التمهيدي ومسارات الرؤوس
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# إعداد راية مترجم ++C مثل راية C
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# إعداد PATH لاستخدام bin/sbin الخاص بـ ServBay أولاً
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# إعداد PATH للبحث عن مكتبات pkg-config
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# مسار أداة pkg-config
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# إعداد مجلد مكتبات pkg-config
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# إضافة BIN/SBIN لأنظمة Mac وHomebrew كخيار بديل في PATH
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # المسار الافتراضي لـ Homebrew
# إضافة مسار مكتبة وملفات رؤوس OpenSSL إلى LDFLAGS وCPPFLAGS
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
# إضافة مسار pkgconfig لـ OpenSSL
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
# بعد ضبط متغيرات البيئة يمكنك الآن التجميع في هذه الطرفية
echo "تم إعداد بيئة التجميع لـ ServBay Arm64."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
bash
# تعيين عدد أنوية وحدة المعالجة المركزية للتجميع المتوازي
CPU_NUMBER=$(sysctl -n hw.ncpu)
# مسار تثبيت ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# اسم مجلد الحزم
SERVBAY_PACKAGE_DIR_NAME="package"
# المسار الكامل لمجلد الحزم
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# مسار الملفات التنفيذية
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# مسار ملفات الإعدادات
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# مسار البيانات المتغيرة
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# مسار مكتبة التطوير
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# مسار ملفات الرؤوس
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# مسار ملفات المكتبات
SERVBAY_COMMON_LIB_PATH="${SERVBAY_COMMON_PATH}/lib"
SERVBAY_COMMON_LIBEXEC_PATH="${SERVBAY_COMMON_PATH}/libexec"
SERVBAY_COMMON_SHARE_PATH="${SERVBAY_COMMON_PATH}/share"
SERVBAY_COMMON_MAN_PATH="${SERVBAY_COMMON_PATH}/man"
SERVBAY_COMMON_DOC_PATH="${SERVBAY_COMMON_PATH}/doc"
# مجلد البناء الحالي
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# معلومات إصدار OpenSSL
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# أقل إصدار macOS مستهدف
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey أو أحدث
# راية معمارية البناء
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# راية النظام المستهدف (يجب تحديدها غالبًا مع شرائح Intel)
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# إعداد راية المترجم C: مستوى التحسين، أقل إصدار macOS، المعمارية، المنصة المستهدفة
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# إعداد راية الرابط: مسار مكتبات rpath، مسارات البحث عن المكتبات (-L)، أقل إصدار، المعمارية، المنصة المستهدفة
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# إعداد راية المعالج التمهيدي ومسارات الرؤوس
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# إعداد راية مترجم ++C مثل راية C
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# إعداد PATH لاستخدام bin/sbin الخاص بـ ServBay أولاً
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# إعداد PATH للبحث عن مكتبات pkg-config
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# مسار أداة pkg-config
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# إعداد مجلد مكتبات pkg-config
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# إضافة BIN/SBIN لأنظمة Mac وHomebrew كخيار بديل في PATH
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # المسار الافتراضي لـ Homebrew
# إضافة مسار مكتبة وملفات رؤوس OpenSSL إلى LDFLAGS وCPPFLAGS
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
# إضافة مسار pkgconfig لـ OpenSSL
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
# بعد ضبط متغيرات البيئة يمكنك الآن التجميع في هذه الطرفية
echo "تم إعداد بيئة التجميع لـ ServBay x86_64."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
تنبيه هام: هذه المتغيرات البيئية فعالة فقط في جلسة الطرفية الحالية. إذا أغلقت الطرفية أو فتحت نافذة جديدة، عليك إعادة تنفيذ الأوامر الخاصة لإعداد بيئة التجميع.
أمثلة على التجميع
بعد إعداد بيئة التجميع، يمكنك الآن تنزيل الشيفرة المصدرية والبدء بتجميع حزمك. فيما يلي بعض الأمثلة الشائعة للعملية.
تجميع ImageMagick
تعد ImageMagick مكتبة قوية لمعالجة الصور، وتعتمد عليها إضافة imagick في PHP. يتم تضمين ImageMagick افتراضيًا مع ServBay، وعادة لا تحتاج لتجميعها بنفسك. المثال التالي يوضح فقط كيفية تجميع مشروع يستخدم Autotools (configure/make) في بيئة ServBay.
تنزيل الشيفرة المصدرية واستخراجها:
bash# استبدل الرقم بأحدث إصدار عند الضرورة wget https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz tar zxvf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4تنفيذ سكريبت
./configure
: باعتماد متغيرات البيئة التي أعددتها سابقًا، نفذ سكريبت الإعداد. خيارات--prefix
،--libdir
،--includedir
تحدد مسارات التثبيت، ويتم توجيهها إلى مجلدات ServBay Development Library بحيث تتمكن باقي حزم ServBay (مثل امتداد imagick لـ PHP) من العثور عليها لاحقًا. عدل باقي الخيارات بناءً على متطلبات ImageMagick.bash./configure \ --prefix=${SERVBAY_COMMON_PATH} \ --libdir=${SERVBAY_COMMON_LIB_PATH} \ --includedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --oldincludedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --bindir=${SERVBAY_BIN_PATH} \ --sbindir=${SERVBAY_SBIN_PATH} \ --sysconfdir=${SERVBAY_ETC_PATH} \ --datarootdir=${SERVBAY_COMMON_SHARE_PATH} \ --enable-osx-universal-binary=no \ --disable-silent-rules \ --disable-opencl \ --enable-shared \ --enable-static \ --with-freetype=yes \ --with-gvc=no \ --with-modules \ --with-webp=yes \ --with-heic=no \ --without-gslib \ --with-fpx=no \ --without-openexexr \ --with-raw=yes \ --without-lqr \ --without-djvu \ --without-fftw \ --without-pango \ --without-wmf \ --without-x \ --with-gs-font-dir=${SERVBAY_COMMON_SHARE_PATH}/ghostscript/10.02.1/Resource/Font
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30تنفيذ أوامر
make
وmake install
: سيقوم أمرmake
بتجميع الملفات المطلوبة، ويستفيد من معالجات الجهاز عبر-j ${CPU_NUMBER}
. أمرmake install
يثبت الملفات النهائية في مسارات ServBay Development Library كالمحدد في--prefix
.bashmake -j ${CPU_NUMBER} make install
1
2
تجميع الحزم باستخدام cmake
بعض المشاريع (مثل protobuf
) تستخدم نظام البناء cmake
. في هذه الحالة يختلف الأسلوب قليلًا. إليك خطوات تجميع protobuf على سبيل المثال:
نزّل الشيفرة المصدرية وادخل مجلدها.
تهيئة المشروع باستخدام
cmake
: الخيار-S .
يحدد مجلد الشيفرة المصدرية، و-B builddir
ينشئ مجلد البناء. تستخدم باقي الخيارات مثل Autotools لتحديد مجلدات التثبيت ضمن ServBay Development Library. الخيارات المتعلقة بالمسارات أو منصات macOS ضرورية لضمان الربط الصحيح.bash# يجب أن تكون في مجلد protobuf cmake -S . -B builddir \ -DCMAKE_INSTALL_PREFIX=${SERVBAY_COMMON_PATH} \ -DCMAKE_INSTALL_LIBDIR=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_INSTALL_INCLUDEDIR=${SERVBAY_COMMON_INCLUDE_PATH} \ -DCMAKE_INSTALL_BINDIR=${SERVBAY_BIN_PATH} \ -DCMAKE_INSTALL_SBINDIR=${SERVBAY_SBIN_PATH} \ -DCMAKE_INSTALL_SYSCONFDIR=${SERVBAY_ETC_PATH} \ -DCMAKE_INSTALL_DATAROOTDIR=${SERVBAY_COMMON_SHARE_PATH} \ -DCMAKE_MACOSX_RPATH=1 \ -DCMAKE_INSTALL_RPATH=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE \ -DCMAKE_PREFIX_PATH=${SERVBAY_COMMON_PATH} \ -DBUILD_SHARED_LIBS=ON \ -Dprotobuf_BUILD_LIBPROTOC=ON \ -Dprotobuf_BUILD_SHARED_LIBS=ON \ -Dprotobuf_INSTALL_EXAMPLES=OFF \ -Dprotobuf_BUILD_TESTS=OFF \ -Dprotobuf_ABSL_PROVIDER=package \ -Dprotobuf_JSONCPP_PROVIDER=module \ -DCMAKE_CXX_STANDARD=17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21تنفيذ أوامر البناء والتثبيت: استخدم
cmake --build builddir
لتجميع الملفات، ثمcmake --install builddir
لتثبيت النتائج ضمن المسارات المحددة.bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir
1
2
تجميع وحدات PHP
إذا أردت تجميع وحدات إضافية لإصدار معين من PHP ضمن ServBay (مثل swoole
، redis
، mongodb
، وغيرها)، الرجاء مراجعة الوثيقة التالية:
تجميع وحدات PostgreSQL
إذا كنت بحاجة إلى تجميع وحدات إضافية لإصدار معين من PostgreSQL داخل ServBay، راجع الوثيقة المخصصة التالية:
الخلاصة
باستخدام مكتبة تطوير ServBay وإعداد متغيرات البيئة بالشكل الصحيح، يمكن للمطور تخصيص وإعادة تجميع حزم البرمجيات بسهولة على macOS. يمنحك هذا مرونة كبيرة لإنجاز متطلبات مشروعك الخاصة أو استخدام أحدث إصدارات المكتبات. تأكد دائمًا من مراجعة دليل التجميع الرسمي للحزمة التي تعمل عليها، وضبط الإعدادات والخطوات وفقًا لتعليمات كل مشروع.