ການແກ້ໄຂຄວາມລົ້ມເຫຼວໃນການບິວດ໌ ELN
ໜ້ານີ້ໃຫ້ຂໍ້ມູນເພື່ອຊ່ວຍຜູ້ເບິ່ງແຍງແພັກເກັດໃນການແກ້ໄຂຄວາມລົ້ມເຫຼວໃນການບິວດ໌ ELN.
ຂໍ້ມູນພື້ນຖານ
ສຳລັບຂໍ້ມູນທົ່ວໄປກ່ຽວກັບ ELN, ໃຫ້ເຂົ້າໄປເບິ່ງທີ່ ພາບລວມ.
ສັງເກດສິ່ງທີ່ແຕກຕ່າງໃນ buildroot ສຳລັບ ELN.
ຊຸດຂອງແພັກເກັດທີ່ຈຳເປັນຕ້ອງບິວດ໌ສຳລັບ ELN ໃນປັດຈຸບັນສາມາດເບິ່ງໄດ້ທີ່ https://tiny.distro.builders/view--view-eln.html. ຊຸດແພັກເກັດທີ່ຂະຫຍາຍລວມທັງສິ່ງທີ່ຈຳເປັນໃນການບິວດ໌ (build dependencies) ສາມາດເບິ່ງໄດ້ທີ່ https://tiny.distro.builders/view--view-eln-and-buildroot.html.
There is also an ELN Rebuild Status page showing which packages are currently failing to build for ELN, as well as those that have a discrepancy between Fedora Rawhide and ELN builds.
ການດີບັກຄວາມລົ້ມເຫຼວໃນການບິວດ໌ ELN
ກວດເບິ່ງລາຍລະອຽດກ່ຽວກັບ ວິທີການບິວດ໌ ດ້ວຍ koji ແລະ mock ໂດຍໃຊ້ ELN buildroot.
ການແກ້ໄຂຄວາມລົ້ມເຫຼວໃນການບິວດ໌ ELN
ຖ້າແພັກເກັດບິວດ໌ບໍ່ຜ່ານໃນ Rawhide, ໃຫ້ແກ້ໄຂອັນນັ້ນກ່ອນ!
| ຖ້າແພັກເກັດບິວດ໌ບໍ່ຜ່ານໃນ Rawhide, ໃຫ້ແກ້ໄຂອັນນັ້ນກ່ອນ! |
ຖ້າແພັກເກັດບິວດ໌ບໍ່ຜ່ານໃນ Rawhide, ໃຫ້ແກ້ໄຂອັນນັ້ນກ່ອນ!
ຂໍ້ຄວາມນີ້ຊັດເຈນພໍແລ້ວບໍ່? ການແກ້ໄຂການບິວດ໌ແພັກເກັດໃຫ້ຜ່ານໃນ Rawhide ອາດຈະເປັນພຽງສິ່ງດຽວທີ່ຕ້ອງເຮັດເພື່ອໃຫ້ມັນບິວດ໌ຜ່ານໃນ ELN ຄືກັນ.
ການພິຈາລະນາຄວາມແຕກຕ່າງລະຫວ່າງ Fedora ແລະ RHEL
ຄວາມລົ້ມເຫຼວໃນການບິວດ໌ສ່ວນໃຫຍ່ສາມາດແກ້ໄຂໄດ້ໂດຍການປ່ຽນແປງໄຟລ໌ SPEC. ແນວໃດກໍຕາມ, ການປ່ຽນແປງດັ່ງກ່າວຄວນເຮັດໃຫ້ໜ້ອຍທີ່ສຸດເທົ່າທີ່ຈະເຮັດໄດ້.
ຖ້າແພັກເກັດຂອງທ່ານຈຳເປັນຕ້ອງມີເສັ້ນທາງໂຄ້ດ (code paths) ຫຼື ການຂຶ້ນກັບແພັກເກັດ (dependencies) ທີ່ແຕກຕ່າງກັນລະຫວ່າງ Fedora ແລະ RHEL, ມັນເປັນສິ່ງສຳຄັນທີ່ຈະຕ້ອງກຳນົດຄວາມແຕກຕ່າງສະເພາະເວີຊັນ (releases) ທີ່ຈຳເປັນເທົ່ານັ້ນ.
ໂດຍທົ່ວໄປແລ້ວ, ນີ້ໝາຍເຖິງການຈຳກັດຄວາມແຕກຕ່າງໄວ້ໃນ Fedora ເວີຊັນເກົ່າ, ໃນຂະນະທີ່ປ່ອຍໃຫ້ RHEL ເວີຊັນຖັດໄປໃຊ້ເສັ້ນທາງໂຄ້ດດຽວກັນກັບ Fedora.
ໃນກໍລະນີທົ່ວໄປທີ່ຈຳເປັນຕ້ອງມີຄວາມແຕກຕ່າງ, RHEL ມັກຈະມີຊຸດ dependencies ທີ່ນ້ອຍກວ່າ Fedora. ມາໂຄຣ (macros) %{fedora} ແລະ %{rhel} ເມື່ອຖືກກຳນົດ ຈະເກັບເລກເວີຊັນຫຼັກຂອງແຕ່ລະລະບົບປະຕິບັດການໄວ້.
ພິຈາລະນາຕົວຢ່າງຈາກໄຟລ໌ SPEC ນີ້:
ເງື່ອນໄຂນີ້ຈະເຮັດວຽກເມື່ອ `%\{rhel}` ຖືກກຳນົດເປັນ 9 ຫຼື ສູງກວ່າ. ມັນຍັງສາມາດໃຊ້ຮ່ວມກັນໄດ້ລະຫວ່າງ Fedora ແລະ RHEL ທັງເວີຊັນກ່ອນໜ້າ ແລະ ຫຼັງຈາກນີ້. ເລື້ອຍໆມັນຈະດີກວ່າຖ້າໃຊ້ `<` ເພື່ອຈຳກັດການເຮັດວຽກໄວ້ສະເພາະ RHEL 8 ແລະ ເວີຊັນກ່ອນໜ້າ:
%if 0%{?fedora} < 32 && 0%{?rhel} < 9 %global rhel8orearlier 1 %else %global rhel9orlater 1 %endif
ໄຟລ໌ spec ທີ່ດີທີ່ສຸດຄວນປ່ຽນແປງພຶດຕິກຳເລີ່ມຕົ້ນສະເພາະເວີຊັນຂອງ Fedora ຫຼື RHEL ທີ່ປ່ອຍອອກມາແລ້ວເທົ່ານັ້ນ, ໂດຍກຳນົດໃຫ້ນະໂຍບາຍເລີ່ມຕົ້ນເປັນອັນທີ່ໃຊ້ກັບ Fedora ຫຼື RHEL ເວີຊັນປັດຈຸບັນ.
ທາງເລືອກສຸດທ້າຍ, ມີມາໂຄຣ `%\{eln}` ໃຫ້ໃຊ້. ຄວນຫຼີກລ່ຽງການໃຊ້ມັນຖ້າເປັນໄປໄດ້. ແນວໃດກໍຕາມ, ຖ້າທ່ານຈຳເປັນຕ້ອງໃຊ້, ທ່ານຄວນກວດສອບພຽງແຕ່ວ່າມັນຖືກກຳນົດເປັນຄ່າທີ່ບໍ່ແມ່ນສູນຫຼືບໍ່. ຕົວຢ່າງ:
%if 0%{?eln} # ສິ່ງທີ່ສະເພາະເຈາະຈົງສຳລັບ ELN ເທົ່ານັ້ນ … %endif
%if 0%{?fedora} || 0%{?eln} # ສິ່ງທີ່ສະເພາະເຈາະຈົງສຳລັບ Fedora ຫຼື ELN … %endif
%if 0%{?rhel} && ! 0%{?eln} # ສິ່ງທີ່ສະເພາະເຈາະຈົງສຳລັບ RHEL ເທົ່ານັ້ນ, ບໍ່ແມ່ນ ELN. … %endif
=== ການຍົກເລີກການນຳໃຊ້ Python 2
ເຊັ່ນດຽວກັບ Fedora ເວີຊັນຫຼ້າສຸດທີ່ໄດ້ຍົກເລີກການນຳໃຊ້ Python 2, RHEL 9 ແລະ ELN ກໍເຮັດຄືກັນ. ມີຮູບແບບຄວາມລົ້ມເຫຼວໃນການບິວດ໌ ELN ທີ່ເກີດຂຶ້ນຊ້ຳໆ ເຊິ່ງສາມາດແກ້ໄຂໄດ້ໂດຍການປັບເງື່ອນໄຂໃນ SPEC ເພື່ອປິດການໃຊ້ງານ Python 2. ຕົວຢ່າງ, ຖ້າທ່ານມີບາງຢ່າງແບບນີ້:
``` %if 0%{?fedora} >= 30 %global python2_enabled 0 %else %global python2_enabled 1 %endif ```
ປ່ຽນເງື່ອນໄຂເປັນ:
``` %if 0%{?fedora} >= 30 || 0%{?rhel} >= 9 ```
=== ການຂຶ້ນກັບສະຖາປັດຕະຍະກຳ
ELN ຖືກບິວດ໌ສຳລັບຊຸດສະຖາປັດຕະຍະກຳດຽວກັນກັບ Rawhide. ແນວໃດກໍຕາມ, ແພັກເກັດ kernel ໃນ ELN ຈະບໍ່ສ້າງ kernel ແບບເຕັມຮູບແບບສຳລັບສະຖາປັດຕະຍະກຳ 32 ບິດ ອີກຕໍ່ໄປ. ທີ່ເຫັນໄດ້ຊັດເຈນຄື ບໍ່ມີແພັກເກັດ `kernel` ສຳລັບສະຖາປັດຕະຍະກຳ `armv7hl`, ມີພຽງແຕ່ແພັກເກັດ `kernel-headers`. ເພື່ອຊ່ວຍແກ້ໄຂຄວາມແຕກຕ່າງນີ້, ມີມາໂຄຣໃໝ່ `%\{kernel_arches}` ທີ່ສາມາດໃຊ້ໃນໄຟລ໌ SPEC ໄດ້. ຕົວຢ່າງ:
``` %ifarch %{kernel_arches} BuildRequires: kernel %else BuildRequires: kernel-headers %fi ```
Want to help? Learn how to contribute to Fedora Docs ›