ການແກ້ໄຂຄວາມລົ້ມເຫຼວໃນການບິວດ໌ 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 ```