شرح بناء حزم rpm من خلال ملف spec و حزمة مصدرية src.rpm

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

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




شرح بناء حزم rpm من خلال ملف spec و من خلال حزمة مصدرية src.rpm هذا الشرح يعتمد هذا الموضوع في الرابط في الأسفل .

http://www.arfedora.com/2016/09/rpm.html


1-عرض وتوضيح بعض الأشياء .

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


-ال Sources كما ذكرت أيضا في الشرح السابق هو كل ملف تحتاجه عملية البناء والتحزيم قد يكون ملف مصدري للبرنامج أو صورة أو ملف نصي أو patch أو أي شيء .


-الحزمة المصدرة وتنتهي بالاحقة src.rpm هي شيء مثل ملف مضغوط يجمع ملف spec و ال Sources في ملف واحد .


-حزمة x86_64.rpm هي حزمة rpm 64bit نهائية وجاهزة للتثبيت وتنتج عن بناء حزمة src.rpm .


-حزمة i686.rpm وأظن i386.rpm هي حزم rpm 32bit نهائية وجاهزة للتثبيت وتنتج عن بناء حزمة src.rpm .


-حزمة noarch.rpm هي حزمة rpm  نهائية وجاهزة للتثبيت وتنتج عن بناء حزمة src.rpm وهي غير مقيدة بأي معمارية ويمكن تثبيتها على أي نظام .







2-بناء حزمة من خلال ملف spec .


لنجاح عملية البناء من خلال ملف spec يجب ان تتوفر في الحد الأدنى ثلاث أشياء .

-أولا ملف spec سليم أي لا يوجد فيه أخطاء .

-ثانيا توفر ال Sources وتكون مذكورة في ملف spec اما خانات Source و Patch.

-ثالثا تثبيت الحزم  المطلوبة لعمية البناء وتكون مذكورة في ملف spec امام خانات BuildRequires ملاحظة الحزم هذه مهمة لعميلة البناء فقط ولا تهم المستخدم العادي أي هي ليست إعتماديات لعمل البرنامج لكنها فقط إعتماديات لبناء البرنامج والحزمة.




الأن سأقوم ببناء برنامج vokoscreen إصدار 2.5.0 من خلال ملف spec قمت بعمله ,يمكنكم الحصول عليه من الرابط في الأسفل نقوم بتنزيله ونقله إلى مجلد SPECS هذا المجلد سبق وشرحت أين يكون في الشرح السابق من الان فصاعدا سأعتبر أن هذه المعلومات تعرفونها .
https://www.dropbox.com/s/4qx6d0mwfrvc155/vokoscreen.spec?dl=0

تحقق أول شرط توفر ملف spec .



الأن نحتاج تحقيق ثاني شرط الحصول على ال Sources ندخل على ملف spec بأي محرر نصوص .
نلاحظ حانة Source0 وفيها رابط البرنامج ممكن ان يكونو أكثر من واحدة  مثلا Source1 و Source2 و...إلخ وممكن أن يكون هناك أيضا خانات Patch0 و Patch1 و...إلخ  على العموم نحتاج تنزيل كل شيء مذكور في Source و Patch إن وجدو ووضعهم في مجلد SOURCES.

ملاحظة مهمة ممكن ان يكون مذكور فقط إسم ال Source من دون الرابط أو قد يكون الرابط لا يعمل وهنا لا مشكلة نقوم بالبحث عنه في الإنترنت مثلا في الموقع الرسمي للبرنامج الذي نريد تحزيمه المهم أن يكون الملف المذكور لوحده أو المذكور في أخر الرابط أي الذي معنا الأن 2.5.0zip
المهم أن يكون هذا الملف متوفر في مجلد SOURCES ليس مهم الطريقة الذي قمنا بتنزيله منها أو هل مذكور الرابط أو فقط الإسم في خانة Source المهم فقط أن يكون متوفر في مجلد SOURCES .


أمر مفيد أن يشرح {version}% تستبدل برقم الإصدار تلقائيا وأحيانا قد تجدو {name}% وهي تستبدل تلقائيا بالإسم أي ما موجود في خانة Name الذي معنا الان vokoscreen .




إذا كان رابط في خانة ال Source صحيح يتوفر أداة تقوم بتنزيل ال Source ونقله إلى مجلد SOURCES طبعا ممكن القيام بالأمر بشكل يدوي لا مشكلة ,ملاحظة انا حددت فقط تنزيل فقط الموجود في خانات Source لاحظة خيار  S- لتنزيل كل شيء بما فيهم ال Patch إن وجدو نستبدل S- ب A- على العموم لمزيد من المعلومات نكتب man spectool.


نلاحظ تم التنزيل والنقل لان الرابط صحيح إلى هنا يكون تحقق ثاني شرط .




الأن نحتاج تحقيق ثالث شرط تثبيت الحزم المطلوبة في خانات BuildRequires ندخل على ملف spec بأي محرر نصوص .
ممكن أن نقوم بتثبيتهم بشكل يدوي وممكن من خلال إستخدام خاصية في dnf كما في الصورة في الأسفل .


 إلى هنا يكون تحقق الشرط الثالث .




الأن عملية البناء ممكن بأكثر من طريقة أمثلة ممكن من خلال mock أو fedpkg وممكن من خلال  rpmbuild وهذا ما سأقوم به بهذا الشرح الأشياء الأخرى قد تهم المحزم أكثر على العموم هناك أكثر من خيار ل rpmbuild سأشرح ثلاث فقط باقي الأشاء صعب فهمها إذا لم نكن نعرف بنية ملف spec .

-أولا بناء حزمة Binary أي حزمة rpm جاهزة  لتتثبت يعني كما ذكرت سابقا حزم x86_64.rpm و i686.rpm أو i386.rpm أو noarch إذا كان مثلا تحزيم ثيمات وطلبنا في ملف spec أن يكون الناتج noarch ستكون النتيجة حزمة noarch.rpm أما إذا كان بنااء برنامج من المصدر مثل برنامج vokoscreen النتيجة ستكون يا أما حزمة 64bit يا أما حزمة 32bit على حسب النظام الذي نعمل منه لكن ممكن طلب تحزيم حزمة 32bit حتى لو كنا نعمل من نظام 64bit لكن ليس موضوعنا ,على العموم أمر بناء الحزمة يكون شيء كالذي في الصورة في الأسفل نلاحط خيار bb- .


-ثانيا بناء حزمة مصدرية أي src.rpm نلاحظ خيار bs- ونلاحظ أين سيتم حفظها سبق وشرحت الامر في الشرح السابق .






-ثالثا بناء الإثنين معا all وهذا ما طبقته في بالفعل نلاحظ خيار ba- .


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


 نجاح العملية exit 0 .



 الحزمة بعد بنائها نلاحظ المسار , جهازي 64bit لهذا تم تلقائيا إنشاء حزمة 64bit وأيضا تم بناء حزمة مصدرية تجدونها في مجلد SRPMS.


ممكن إستعراض ما بداخل الحزمة للتأكد من ما تحتوي من خلال rpm -qlp .


أخيرا ممكن تثبيت الحزمة مثلها مثل أي حزمة rpm اخرى .







3-بناء حزمة من خلال حزمة مصدرية src.rpm .


لنجاح عملية البناء من خلال ملف src.rpm يجب ان يتحقق في الحد الأدنى شرطين .

-أولا ملف src.rpm سليم .

-ثانيا تثبيت الحزم  المطلوبة لعمية البناء وتكون مذكورة في ملف spec امام خانات BuildRequires وملف spec يكون داخل الحزمة المصدرية ممكن تصفحه أو إستخراجه مثل أي ملف مضغوط.
الأن عملية البناء سبق وتحقق لنا أول شرط عندما نفذنا البناء من خلال rpmbuild -bs أو rpmbuild -ba وهنا يكون تحقق أو شرط .


ثاني الشرط ممكن تحقيقه من خلال dnf كما في الصورة في الأسفل وممكن بشكل يدوية من خلال تصفح ملف spec .



 نلاحظ أمر بدأ عملية البناء .


نلاحظ نجاح العملية سنجد الحزمة في مجلد RPMS .




أخيرا هذا رابط ال Source البرنامج الذي كنت أشرح عنه لمن لم يجده في المستقبل .

https://www.dropbox.com/s/armeeww4fzbc290/2.5.0.zip?dl=0

شارك الموضوع

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

التسميات

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)