تجهيز النظام لبناء حزم rpm وبعض المعلومات

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته




تجهيز النظام لبناء حزم rpm وبعض المعلومات هدف هذا الشرح عرض بعض المعلومات فقط وليس تعلم التحزيم لكنه قد يكون بداية جيدة اتمنى أن أستطيع أن أكمل في مواضيع أخرى شرح بعض الاشياء عن التحزيم طبعا ما أعرفه فانا مازلت أتعلم وأجهل الكثير من الامور.



1-تثبيت الأدواة الازمة يتوفر في فيدورا مجموعات يمكن تثبيتها وهي تقوم بتثبيت المطلوب .

sudo dnf install @c-development @development-tools @rpm-development-tools rpmlint






2-داخل مجلد المنزل عندنا نحتاج إنشاء مجلد إسمه rpmbuild وداخله المجلدات التالية BUILD ,BUILTROOT ,SOURCES ,SRPMS ,RPMS ,SPECS 


على العموم هذا كان قديما الأن ممكن أن نقوم بالأمر بتنفيذ أمر واحد يقوم عنا بالمطلوب (ملاحظة نلاحظ ان إسم المجلدات أحرف كبيرة وعند القيام ببناء أي حزمة يجب يجب أن لا نستخدم صلاحيات مستخد root أي لا نستخدم su أو sudo ).
rpmdev-setuptree

نلاحظ ملف الإعدادات يشير إلى مجلد rpmbuild في مجلد المنزل الخاص بنا إختصارها HOME$ لاحظة الصورة في الأسفل ماذا تعني بعض الكلمات .
topdir_% تسمى macros بشكل بسيط هي كلمة إختصار تدل على شيء مثل topdir_% تدل على مجلد rpmbuild في مجلد المنزل الخاص بنا .







3-بعض الشرح عن هذه المجلدات سأستعمل أمر rpmbuild -bi فقط لتفحص المجلدات وماذا يجري داخلها.


-مجلد BUILD هو المجلد الذي سيتم نقل الملفات إليه بعد فك الضغط عن الملف المضغوط الخاص بالبرنامج أو أيقونات ثيمات...إلخ الذي نقوم ببنائهم ,وداخل هذا المجلد أيضا ينفذ الأوامر التي ننفذها عادتا لبناء برنامج من المصدر مثال أوامر مثل configure و make و...إلخ.





-مجلد BUILDROOT  إذا صح التعبير هو مجلد الذي يتم تثبيت البرنامج داخله لكن بشكل مؤقت أي انه شيء مثل القسم root الأساسي لكن وهمي أي ان خطوة make install تقوم بتثبيت البرنامج داخله مثل لنفترض أني أقوم بتحزيم ثيم كما نعرف الثيمات تحفظ في مجلد usr/share/themes/  لنفترض إسم الثيم albatar سيكون مسار مجلد الثيم شيء كهذا مثلا عندي
                home/yucef/rpmbuild/BUILDROOT/albatar/usr/share/themes/albatar/ .




-مجلد RPMS وهو المجلد الذي يحتوي الحزم بعد بنائها وتكون مقسمه على حسب المعمارية أو noarch مثل الحزم التي لا تعتمد على معمارية معينة مثل الثيمات أيقونات و ...إلخ






-مجلد SOURCES وهو من إسمه واضح ويتم داخله حفظ مصدر البرامج أي الملفات المضغوطة لمصدر البرماج ليتم بنائها وتحزيمها ,وأيضا يتم حفظ ال patch داخله أي الرقع لتنفيذها على الكود المصدري قبل بنائه, أو قد يكون المصدر مثلا صورة أيقونة أو أي ملف نحتاجه لبناء الحزمة.







-مجلد SPECS وهو يحتوي ملفات نصية تنتهي بالاحقة spec هذه الملفات لا أعلم ترجمتها بالعربية أظن يسموها محددات على العموم هذه الملفات شيء مثل إستمارة تقوم بكتابتها وتضع فيها خطوات بناء الحزمة أولا تضع بعض المعلومات مثل إسم الحزمة وصف للبرنامج الذي تقوم بتحزيمه رقم إصداره الإعتماديات التي يحتاجها لبنائه أو الإعتماديات التي يحتاجها ليعمل وتعليمتا البناء مثل make make install ومثلا نقل الملف الفلاني أو حذفه والكثير من الامور ...إلخ


صورة لملف spec لثيم طبعا لم نجد make و make install لكن مجرد إنشاء مجلدات ونقل ملفات ومجلدات , نلاحظ انه noarch .
 







-مجلد SRPMS هو مجلد السورس كود للحزم أي حزمة تنتهي بالاحقة src.rpm وتحتوي ملف spec و الsources من ملفات بتشات ملف مضغوط صور و...إلخ هذه الحزمة لا يمكن تثبيتها بشكل مباشر يجب أن نقوم ببنائها بالأول لتصبح حزمة rpm جاهزة .






4-بعض الشرح عن ال macros .


كما ذكرت في الأعلى بشكل بسيط ال macro كلمة إختصار تدل على شيء مثل topdir_% تدل على مجلد rpmbuild في مجلد المنزل الخاص بنا.

هناك الكثير من ال macros منها من هو معقد أي يقوم بأشياء وينفذ أشياء لنا وليس ففط أنه يدل على شيء يعني ال macros ممكن تشبيهها بالدوال في لغات البرمجة قد يكوت عملها تنفيذ شيء أو إرجاع قيمة  .

.

 ممكن إستعراض ال macros من خلال الأمر في الأسفل .
rpm --showrc


بعض الأمثلة سأستخدم rpm -E لنتعرف عليهم طبعا هناك الكثير .





أخيرا بعض الmacros قد تحتاج تثبيت الحزمة الخاصة بها لهذا توضع في في ملف spec في خانة BuildRequires ,مثال في الصورة في الأسف إحتجت إستخدام macro خاص بلغة البرمجة python3 .






هناك الكثير من ال macros للكثير من الأشياء منها خاص بلغات البرمجة لنستعرضهن نبحث في مدير الحزم .
sudo dnf search macros


يتبع إن شاء الله ...

شارك الموضوع

مواضيع ذات صلة

التسميات

2016 (1) 23 (1) 24 (3) 25 (1) 26 (1) 27 (1) 28 (1) 29 (1) 30 (1) 31 (1) إتصال (1) إختراق (2) أدة (1) أدوات (1) إرسال (1) أرش (1) إسترجاع (1) إستعلام (1) أشياء (7) أشياء تفعلها (8) إصدارات (1) إصلاح (6) إصلاحrealtek (1) إضافات (1) إضافة (1) أعجوبة (1) أعجوية (1) إعداد (1) إقاف (2) أقسام (1) ألعاب (2) الفرق (1) الفلاشة (1) القسم هوم (1) الكتابة بالعربية (1) إلى جانب (1) أندرويد (1) إنشاء (1) إنشاء مستودع (1) أيات (1) أيزو (1) أيقومات (1) أيقونات (1) ايقونات (2) باتش (1) بارامتر (1) بايثون (16) برامج (56) برامج إسلامية (2) برنامج (19) برودباند (1) بعد (7) بعد التثبيت (8) بلوتوث (1) بناء (1) بناء توزيعة (1) بيئة عمل (1) تثبيت (29) تجهيز (2) تجهيو من دون (2) تحزيم (2) تحقق (1) تحويل (1) تخصيص (5) ترجمة (2) ترقية (1) تسجيل الشاشة (1) تشغيل (3) تعريف (13) تعطيل (2) تعلم (6) تفعلها (7) تفعيل (2) تقطع الأحرف (1) تقعيل (1) تنزيل (2) تورنت (1) توزيعة (1) توسعة (1) ثيم (5) ثيمات (1) جافا (1) جماليات (7) جنوم (1) حجم (1) حرق (2) حزمة (1) حل (2) دالة (1) دورة (1) روتر (1) ريدهات (2) سكربت (2) شرح (11) صورة متحركة (1) فايرفوكس (1) فتح منفذ (1) فصل (1) فلاشة (3) فيدورا (29) فيدورا بالعربي (1) قاموس (1) كالي (2) كتاب (2) كتب (2) كرت (1) كروت الشاشة (1) كلمة المرور (2) كورس (1) كورورا (1) لعبة (1) لينكس (2) لينكسو (1) ماهو (6) متغير البيئة (1) مجانا (1) محاكات (2) محاكي (1) محمل الإقلاع إصلاح (1) محمول (1) مستودعات (1) مشكلة (2) ملف نصي (1) من إصدار (1) نظام ملفات (1) نمط (2) نواة (1) هجين (4) واجهات (1) وايرلس (1) وهمي (2) ويندوز (2) access token (1) active (2) add (1) after (7) alias (1) andoid studio (1) android (2) android studio (1) Apache (2) appstream (1) arboot (1) arboot fix (1) arch (3) archiso (1) arfedoraccframework (3) arfedoracontrolcenter (3) arfedy (1) atari (1) atom (1) ayat (1) bicon (1) blivet (1) blivet-gui (1) bls (1) bluetooth (1) book (2) books (2) bootloader fix (1) boxes (3) broadband (1) broadcom (1) broadwayd (1) bugzilla (1) build (2) builddep (1) bumblebee (1) bumbleebe (2) burn (2) byzanz (1) c# (1) calamares (1) camera (1) cannot open display (1) cannot open display: :0 (1) ccna (1) cd (2) centos (1) change (2) chsh (1) cisco (1) clion (1) clone (1) code.org (1) command (2) command line (2) commands (2) comps (1) connect (1) contra (1) convert (1) copr (1) could not connect to the debugger (1) cpu (1) cpufreq (1) createrepo (1) csharp (1) css (1) curlew (1) custom (2) dbus (3) dconf (1) dd (1) Decryption (1) defragment (2) desktop (1) desktop entry (1) dictionary (1) Digital signature (1) disks (1) dnf (14) do (7) docker (1) dolphine (1) download (2) downloads manager (1) dply (1) DRI PRIME (1) driver (9) dukto (1) e2fsck (1) efi (4) el forkane (1) elforkane (1) elif (1) emergency (3) emergency mode (3) emulator (1) enable (2) Encryption (1) entries (1) error mounting /dev/sd (1) ext4 (1) extend (1) extensions (2) fakenes (1) fast startup (2) fceux (1) fedora (45) fedora 25 alpha (1) fedora cloude (1) fedora28 (1) fedoraوفيدورا (1) fedy (1) fgmac (2) fgmac-24 (1) file (1) find (1) firefox (2) fix (10) flash mem (1) flash memory (2) flashplayer (1) flatpak (4) forward (1) fpaste (1) free (1) freebsd (1) freevpn (1) function (1) game (3) games (2) gedit (1) genymotion (1) gettext (1) gif (1) gimp (1) gio (1) github (5) github.io (1) glibc-common (1) gmaclinux (2) gnome (16) gnome boxes (1) gnome disk (1) gnome shell (13) gnome terminal (1) gnome-disks (1) gnu (1) godot (1) goldendict (1) google web designer (1) gpg (2) gradio (1) group (2) grub (7) grub2 (1) grubenv (1) gstreamer (1) gtk (8) gtk+ (1) gvrecord (1) hack (2) hash (4) hdmi (3) hibernate (1) home (2) hosspot (1) html (1) http (1) hybrid (2) icon (2) icons (3) ide (1) if (1) install (32) installf (9) installing (7) intellij idea (1) internet downlaod manager (1) iso (2) java (3) jdk (2) jetbrains (1) jetbrains toolbox (1) kali (2) kde (3) kernel (1) kernel parameters (1) key (1) kickstarts (3) korora (1) krita (1) kvm (2) kvm switches (1) lamp (1) laps (1) learn (1) legacy (1) legacy bios (3) libreoffice (2) libvirt (1) life is trange (1) linux (8) lutris (1) lv (1) lvm (2) mac (4) macros (1) mageia (1) make distro (1) mariadb (1) MariaDB and PHP Lamp Server (1) markdown (2) mate terminal (1) mbr (1) md5sum (1) mirro (1) mkconfig (1) mo (1) mono (2) monodevelop (2) mount (1) mp4 (1) multi screen (1) mumble (1) murmur (1) natron (1) nautilus (2) nes (1) netbeans (1) netcut (1) nintendo (1) ntfs (2) nvidia (8) objdesktop (1) ojuba (2) oop (1) opensuse (1) openvpn (1) opera (1) optirun (2) oracle (1) os.path (1) package (2) page (1) pages (1) pantheon (1) parameter (1) parameters (1) password (2) patch (1) path (2) pdf (1) peek (1) photoshop (1) php (1) phpstorm (1) plasma (2) plugin (3) plugins (1) plymouth (1) po (1) polkit (1) port (1) portable (1) portmatp (1) PostinstallerF (1) pot (1) powerline (2) powerline-go (1) preset (1) preview (1) primary display (1) primeos (1) primus (1) primusrun (1) private key (1) programs (3) protonvpn (1) pubg (1) public key (1) put (1) pv (1) pycharm (2) pygobject (4) pygtk (5) python (56) pythonk (1) qdbus (1) qemu (3) qemu-kvm (1) query (1) radio (1) raspberry pi (4) raspbian (2) reclaim space (2) record (1) redhat (3) remix (1) remix os (1) repo (4) repofrompath (1) repository (1) reset (1) resize2fs (1) rhel (1) router (1) rpm (7) rpmbuild (1) rtl8188ee (1) rtl8192c (1) rtl8192ce (1) rtl8192cu (1) rtl8192de (1) rtl8192ee (1) rtl8192se (1) rtl8723ae (1) rtl8723be (1) rtl8723com (1) rtl8821ae (1) rubymine (1) salix (1) scratch (2) scratch2.scratch 2 (1) screencast (1) script (2) seconday display (1) self (1) send (1) server (1) settings (2) sha1256sym (1) sha256sum (1) share desktop (1) shell (2) shortcut (1) shutter (1) skel (1) skel ماهو (1) skype (1) skype.برامج (1) slackware (1) software (1) soundcloud (1) source code (1) spec (2) spin (1) sqlmap (1) ssh (3) sshd (2) st-trans (1) steam (2) store (1) su (1) sudo (2) sudoers (1) swap (2) switch (2) Switchable Graphics (1) synergy (1) systemd (1) systemd preset (1) teamviewer (1) terminal (2) theme (5) things (7) thomson (1) thread (2) threading (2) thumbnails (1) to (8) tor (2) tor browser (1) torrent (1) transfer closed with 736700 bytes remaining to read (1) translation (1) turn off (2) tuxcut (1) txt (1) ubuntu (1) uefi (5) unable to mount location (1) unity (1) unity3d (1) upgrade (1) usb (1) useradd (2) utf-8 (1) vega (1) verify (1) vg (1) vgaوتبديل (1) vi (1) video (1) vim (1) vino (1) virsh (1) virt-install (1) virt-manger (1) virtual (1) virtual box (1) virtualbox (3) vmware (3) vnc server (1) vokoscreen (1) vpn (1) web server (1) webstorm (1) wifi (1) windows (4) windows-1256 (1) wine (1) woeusb (1) X Error: BadAccess (1) X Error: BadDrawable (1) xdg-mime (1) xdman (1) xfce (1) xfconf-query (1) yum (2) zeal (1) zealdocs (1)