Π˜Π½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π° Π·Π° намаляванС Π½Π° зависимоститС Π² libsystemd

Π‘Ρ€Π΅Π΄ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° систСмния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ systemd сС Π²ΠΎΠ΄ΠΈ дискусия относно намаляванСто Π½Π° зависимоститС ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libsystemd, която Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½Π° Π½Π΅ само с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° systemd, Π½ΠΎ ΠΈ с ΠΌΠ½ΠΎΠ³ΠΎ външни прилоТСния. НапримСр, Π² Fedora ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 150 ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ libsystemd Π·Π° зависимости. Π˜Π½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° ΠΎΠ±ΡΡŠΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ счита, Ρ‡Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ външни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² libsystemd, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° systemd, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° ΠΏΠΎΠ²ΡŠΡ€Ρ…Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Π°Ρ‚Π°ΠΊΠ° ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° външни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ стана с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° liblzma.

ОсвСн liblzma ΠΈ glibc, Π² libsystemd ΡΡŠΡ‰ΠΎ сС Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ libzstd, liblz4 ΠΈ libgcrypt, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅Ρ‚ΠΎ Π½Π° бСзопасността Π² ΠΊΠΎΠΈΡ‚ΠΎ става ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π²Π°ΠΆΠ½Π° Π·Π°Π΄Π°Ρ‡Π°. Π’ libsystemd сС прСдоставя Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ 12 основни API (sd-bus, sd-daemon, sd-device, sd-event, sd-hwdb, sd-id128, sd-journal, sd-login, sd-netlink, sd-network, sd-path ΠΈ sd-resolve) ΠΈ възниква ситуация, ΠΏΡ€ΠΈ която ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΎ libsystemd само Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° функцията sd_notify Π·Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° systemd Π·Π° промяна Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ ΠΈΠ»ΠΈ sd_journal Π·Π° запис Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π»ΠΎΠ³, Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с всички останали Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰ΠΈ API. ΠšΠ°Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° раздСлянСто Π½Π° libsystemd Π½Π° няколко ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ API, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° външни зависимости само Ρ‚Π°ΠΌ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° systemd считат, Ρ‡Π΅ раздСлянСто Π½Π΅ Π΅ Ρ†Π΅Π»Π΅ΡΡŠΠΎΠ±Ρ€Π°Π·Π½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π² libsystemd ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅Π»ΠΈ са Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ. РаздСлянСто Ρ‰Π΅ изисква ΠΎΠ³Ρ€ΠΎΠΌΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΈ Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ ΠΈΠ»ΠΈ Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° СфСктивност, ΠΈΠ»ΠΈ Π΄ΠΎ нСобходимост ΠΎΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄. Π—Π° намаляванС Π½Π° Π·Π°Π΅Ρ‚Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² libsystemd наскоро бСшС ΠΏΡ€ΠΈΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ с Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ liblzma, libzstd ΠΈ liblz4 Ρ‡Ρ€Π΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° dlopen(), Π² ситуации, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ са наистина Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ. Подобно ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ слСдващото ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, Ρ‰Π΅ бъдС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΈ Π·Π° libgcrypt.

Π’Π°ΠΊΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ стана ΠΎΠ±Π΅ΠΊΡ‚ Π½Π° ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ вмСсто явното ΠΈ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅, Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° външни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ сСга Ρ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° нСявно, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ услоТни диагностиката, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π΅ Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ API-Π²ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° libsystemd ΠΈ извикванията Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ външни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Бамият ΠΏΡ€Π΅Ρ…ΠΎΠ΄ към Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° dlopen() Π½Π΅ промСня Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°, Π° само скрива Π²ΡŠΠ½ΡˆΠ½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅.

Π›Π΅ΠΎ Π‘ΠΎΡ‚Π΅Ρ€ΠΈΠ½Π³ ΠΈΠ·Ρ€Π°Π·ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ‡Π½ΠΎ нСсъгласиС с идСята Π·Π° раздСлянС Π½Π° libsystemd Π½Π° няколко Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°ΠΊΡŠΠ² Ρ…ΠΎΠ΄ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‰Π΅ услоТни ΡΡŠΠ²ΠΌΠ΅ΡΡ‚Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° Π² systemd ΠΈ Ρ‰Π΅ изисква Π΄Π° сС ΠΏΡ€Π΅Π²Π΅Π΄Π°Ρ‚ всички Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ»ΠΈ Π΄Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚ ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Π² статичСн Π²ΠΈΠ΄ Π² всяка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Π’ ΠΏΡŠΡ€Π²ΠΈΡ случай Ρ‰Π΅ Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅Ρ‚ΠΎ Π½Π° стабилността Π½Π° API ΠΈ пространствата ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, Π° във втория β€” Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Π°Π΄ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π°.

Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° слСдващата вСрсия Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° външни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ само ΠΏΡ€ΠΈ нСобходимост сС Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΎΡ‚ Π›Π΅ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½Π° стратСгия. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ с услоТняванСто Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π° сС Ρ€Π΅ΡˆΠΈ Ρ‡Ρ€Π΅Π· добавянС Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° с информация Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈ зависимости Π² ELF Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½ΠΈ ΠΎΡ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΡ†ΠΈ ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½ΠΈ Π² ΠΈΠ·Ρ…ΠΎΠ΄Π° Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° readelf.

Π©ΠΎ сС отнася Π΄ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° libsystemd с голям Π±Ρ€ΠΎΠΉ прилоТСния, Π›Π΅ΠΎ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° прилоТСния Π΄Π° Π½Π΅ сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚ Π΄Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‚ libsystemd Π·Π° Π΅Π΄Π½Π° функция, Π° Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. НапримСр, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° функционалността sd_notify() Π΅ доста Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС вмСсти Π² няколко Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° UNIX-сокСти (AF_UNIX). Подобна ΠΎΡ‚Π΄Π΅Π»Π½Π° рСализация Π½Π° sd_notify ΠΎΡ‚ 2017 Π³ΠΎΠ΄ΠΈΠ½Π° Π΅ Π½Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° OpenSSH ΠΈ наскоро бСшС ΠΏΡ€ΠΈΠ΅Ρ‚Π° Π² прСносимата вСрсия Π½Π° OpenSSH 9.8, Ρ‡ΠΈΠΉΡ‚ΠΎ Ρ€Π΅Π»ΠΈΠ· Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ Π·Π° срСдата Π½Π° лятото.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster