Kei te kōrero ngā kaiwhakawhanake o te kaiwhakahaere pūnaha systemd mō te whakaiti i ngā whakawhirinakitanga ki te whare pukapuka libsystemd, e hono ana ehara i te mea ki ngā wāhanga systemd anake engari ki ngā tono o waho maha. Hei tauira, i roto i a Fedora, neke atu i te 150 ngā mōkihi e whakawhirinaki ana ki te libsystemd hei whakawhirinakitanga. E whakapono ana te kaiwhakaū o te kōrero ko te tāpiri i ētahi atu whare pukapuka tuatoru ki te libsystemd, kāore nei i te whakahaerehia e ngā kaiwhakawhanake systemd, ka nui ake te mata whakaeke mēnā ka takahia te whare pukapuka tuatoru, pērā i te mea i tupu ki te whare pukapuka libnzma.
Haunga a liblzma me glibc, ka utaina hoki e libsystemd ngā whare pukapuka libzstd, liblz4, me libgcrypt, ā, he mea nui te pupuri i te haumarutanga mō ēnei whare pukapuka. Ka whakaratohia e Libsystemd te urunga ki ngā API matua 12 (sd-bus, sd-daemon, sd-device, sd-event, sd-hwdb, sd-id128, sd-journal, sd-login, sd-netlink, sd-network, sd-path, me sd-resolve). Ka puta he āhuatanga i reira ka herea he tono—hei tauira, ko tētahi e whakamahi ana i te libsystemd hei karanga noa i te sd_notify hei whakamōhio i te systemd mō te huringa āhua, i te sd_journal rānei hei tuhi raraunga ki tētahi rangitaki—ki ngā whare pukapuka katoa me ngā kaiwhakahaere API. Ko te otinga kua whakaarohia ko te wehewehe i te libsystemd ki ētahi whare pukapuka motuhake e kawenga ana mō ngā API motuhake, e āhei ai te utaina o ngā whakawhirinakitanga tuatoru ki ngā wāhi e tika ana.
E whakapono ana ngā kaiwhakawhanake pūnaha kāore e taea te wehewehe i ēnei kaiwhakahaere, nā te mea he hononga ngā kaiwhakahaere kei roto i te libsystemd. He nui te mahi e hiahiatia ana mā te wehewehe i a rātou, ā, ka ngaro pea te whai huatanga, ka hiahiatia rānei te tāruarua waehere. Hei whakaiti i te tapuwae mahara, i whakamahia e te libsystemd tētahi huringa hei uta hihiri i ngā whare pukapuka liblzma, libzstd, me te liblz4 mā te whakamahi i te dlopen() ina tino hiahiatia ā rātou mahi. Ka whakatinanahia tētahi huringa rite mō te libgcrypt mai i te tukunga e whai ake nei.
Kua whakahēngia tēnei otinga nā te mea, hei utu mō te hononga mārama me te kitea, ka utaina ngā whare pukapuka tuatoru mā te huna, ka uaua ake te tātaritanga nā te mea kāore i te mārama te hononga i waenga i ngā karangatanga API libsystemd me ngā mahi mai i ngā whare pukapuka o waho. Ko te whakawhiti ki te uta mā te whakamahi i te dlopen() kāore e whakarerekē i te hoahoa; ka huna noa i ngā wāhanga o waho mai i ngā kaitiaki me ngā kaiwhakamahi.
I tino whakahē a Lenart Poettering i te whakaaro o te wehewehe i te libsystemd ki ētahi whare pukapuka, nā te mea ka uaua rawa te tiritiri waehere i roto i te systemd, ā, me whakawātea ngā kaiwhakahaere ā-roto katoa, me whakahiato motuhake rānei i a rātou ki roto i ia whare pukapuka. Mā te tuatahi ka raru te pupuri i te pumau o te API me ngā wāhi ingoa, ko te tuarua ka nui ake te rahi nā te tāruarua o te waehere.
E whakapono ana a Lenart ko te uta i ngā whare pukapuka o waho ina hiahiatia anake, e whakatinanahia ana mō te tukunga e whai ake nei, te rautaki tino pai. Ko te raruraru o te uaua o te tukanga whiwhi raraunga i runga i ngā whare pukapuka kua utaina hihiri e whakaarohia ana kia whakatikahia mā te tāpiri i ētahi atu āpure ki ngā kōnae ELF me ngā mōhiohio e pā ana ki aua whakawhirinakitanga hihiri, ka taea te tukatuka e ngā kaiwhakatikatika me te whakaatu i roto i te putanga taputapu readelf.
Mō te hono i te tini o ngā tono ki te libsystemd, i tūtohu a Lenart kia kaua e utaina e ngā kaiwhakawhanake tono te libsystemd mō te mahi kotahi, engari kia whakatinanahia he kaiwhakahaere kawa i te taumata tono. Hei tauira, he tino māmā te whakatinanatanga o te sd_notify() ā, ka taea te whakatutuki i roto i ētahi rārangi waehere ina whakamahi ana i ngā hononga UNIX (AF_UNIX). Kua wātea mai tētahi whakatinanatanga motuhake rite o te sd_notify mō OpenSSH mai i te tau 2017, ā, i whakaaetia tata nei ki roto i te peka kawe OpenSSH 9.8, kua whakaritea kia tukuna i waenganui o te raumati.
Source: opennet.ru
