วิธีคลายบรรจุแก้ไขสร้างใหม่และติดตั้ง SRPM


9

ฉันต้องการแก้ไขแพ็คเกจ Fedora 15 ( gnome-shell-extensions-alternative-status-menu) มันเป็นการดัดแปลงเล็กน้อย (การคืนค่าการคอมมิชชันนี้ ) ใช้yumdownloaderฉันสามารถดาวน์โหลด SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm)

หลังจากนี้ฉันจะแกะกล่องแล้วสร้างใหม่ได้อย่างไร


คุณควรเปลี่ยนการแก้ไขล่าสุดของคุณเป็นความคิดเห็นในคำตอบของ @ mdpc หรือเพิ่มคำตอบของคุณเองด้วยขั้นตอนที่ช่วยให้คุณแก้ปัญหาได้ โปรดเก็บข้อมูลคำตอบจากคำถามด้วยตนเอง
Caleb

@Caleb Done! (อีก 3 ไป ... )
Vitor Py

คำตอบ:


7

สิ่งที่ฉันทำในฐานะผู้ใช้ ROOT:

  1. ติดตั้ง SRPM ตามที่คุณต้องการแพ็คเกจอื่น ๆ ( rpm --install [source-rpm-filename])

  2. ตรวจสอบ/root/rpmbuild/SPECSไดเรกทอรีและค้นหาไฟล์ข้อมูลจำเพาะที่ตรงกับแพ็คเกจของคุณ

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

แพ็กเกจไบนารีผลลัพธ์จะอยู่ใน/root/rpmbuild/RPMS/ไดเร็กทอรีที่พร้อมติดตั้งผ่านrpm --installคำสั่งมาตรฐาน

หมายเหตุ:นี่เป็นเพียงการสร้างสิ่งที่อยู่ในแพ็คเกจไบนารีมาตรฐาน ฉันโพสต์การตอบคำถามนี้โดยเฉพาะไม่ใช่วิธีการเปลี่ยนแปลงแหล่งข้อมูลและสร้างแพ็คเกจใหม่

หากต้องการทำการแก้ไขคุณสามารถจัดหาแพตช์เป็นอินพุตและเปลี่ยนไฟล์ SPECS .... หรือคุณสามารถแทนที่มาตรฐานที่*.tar.bz2อยู่ใน/root/rpmbuild/SOURCESของคุณเองด้วยการเปลี่ยนแปลงจากนั้นจึงสร้างบิลด์ตามที่อธิบายไว้ข้างต้น

ระวังคุณอาจต้องเปลี่ยนแพคเกจ SPECS เพื่อให้มันทำงานได้ (โดยปกติแล้วจะทำการดึง patching ออกมาและเปลี่ยนชื่อไฟล์บางไฟล์ที่โปรแกรมโดยไฟล์ SPECS)


แก้ไข

ดูเหมือนว่าการสร้าง rpms เนื่องจากรูทเป็นการปฏิบัติที่ไม่ดี ( แหล่งที่มา ) มันทำงานได้ดีในฐานะผู้ใช้ที่ไม่ใช่รูท

คำแนะนำทีละขั้นตอนเพื่อเพิ่มแพทช์ (จากที่นี่ ):

  1. rpmbuild/SOURCESคัดลอกแพทช์ของคุณเพื่อ
  2. แก้ไขrpmbuild/SPECS/package.specและเพิ่มPatch0: mypatch.patchทันทีหลังSource0: ...บรรทัด
  3. หลังจาก%setup ...บรรทัดเพิ่ม%patch0 -p1บรรทัด

ตอนนี้มันจะสร้างตามปกติคือ ด้วย:rpmbuild -ba SPECS/package.spec


2
คุณควรชี้แจงว่ามีเพียงการติดตั้งเท่านั้นที่ทำในฐานะรูทไม่ใช่ rpmbuild การสร้างไฟล์ rpm ไม่ควรทำในฐานะรูท
คาเลบ

@Caleb ฉันติดตั้งโดยไม่รูทแพ็คเกจ รอบต่อนาทีทำให้มันอยู่ในลำดับชั้น ~ / rpmbuild ฉันก็ทำตามที่คุณแนะนำในคำถามและวางขั้นตอนเพิ่มเติมที่นี่
Vitor Py

หมายเหตุเพียงไม่กี่: sudo dnf install rpmdevtoolsจำเป็นสำหรับคำสั่ง rpmbuild และ%patch0 -p1ควรละเว้นบรรทัดนี้หากไฟล์ข้อมูลจำเพาะใช้%autosetupบรรทัดแทนที่จะเป็น%setupหนึ่งบรรทัด(ตามที่%autosetupใช้โปรแกรมแก้ไขโดยอัตโนมัติ)
เนลสัน

นอกจากนี้หากต้องการติดตั้งรอบต่อนาทีใหม่เหนือเดิม (ในกรณีที่ติดตั้งต้นฉบับบนระบบแล้ว) ให้ทำsudo rpm -ivh --force your.rpm
Nelson

4

OpenSSL Package Rebuild CentOS 6.4เป็นตัวอย่างโดยละเอียดของการสร้างแพ็คเกจ SRPM

ตัวอย่างข้างต้นใช้การเยาะเย้ย - Jedi Light Saber ของผู้สร้างแพ็คเกจ

จำลองถูกสร้างขึ้นเพื่อเติม chroot ที่เชื่อถือได้จากนั้นสร้างแพ็คเกจใน chroot นั้นใหม่

สำหรับข้อมูลเพิ่มเติมโปรดดูที่http://fedoraproject.org/wiki/Projects/Mock

ในตัวอย่างจำลองจะใช้ 3 ครั้ง - หนึ่งครั้งเพื่อ "คลายแพ็กเกจ" จากนั้นจึงสร้าง. src.rpm ใหม่และสุดท้ายเพื่อสร้าง. rpm

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.