Π Π²ΡΠΏΡΡΠΊΠ΅ Fedora 41 ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ DNF5. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° DNF5 ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π² Π²ΡΠΏΡΡΠΊΠ΅ Fedora 39, Π½ΠΎ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π±ΡΠ»Π° ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π° ΠΈΠ·-Π·Π° Π½Π΅Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΠ°ΡΠΈΡΠ΅Ρ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΎ ΡΡΠ°ΡΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ Π²ΡΡ Π΅ΡΡ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Π³ΠΎΡΠΎΠ² ΠΊ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ·Π΄Π½Π΅Π΅. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΠΊΠΎΠΌΠΈΡΠ΅ΡΠΎΠΌ FESCo (Fedora Engineering Steering Committee), ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΌ Π·Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΡΡ ΡΠ°ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Fedora. Π ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΡ dnf, libdnf ΠΈ dnf-cutomatic Π±ΡΠ΄ΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ DNF5 ΠΈ Π½ΠΎΠ²ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ libdnf5, Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ° /usr/bin/dnf Π½Π°ΡΠ½ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» dnf5.
Π ΡΠ²ΠΎΡ Π²ΡΠ΅ΠΌΡ DNF ΠΏΡΠΈΡΡΠ» Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅ Π½Π° ΡΠΌΠ΅Π½Ρ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΌΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ Yum, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Python. Π DNF ΡΡΠ΅Π±ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Ρ ΠΈ Π²ΡΠ½Π΅ΡΠ΅Π½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ hawkey, librepo, libsolv ΠΈ libcomps, Π½ΠΎ ΠΊΠ°ΡΠΊΠ°Ρ ΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅ΡΡ ΠΎΡΡΠ°Π»ΠΈΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Python. ΠΡΠΎΠ΅ΠΊΡ DNF5 Π½Π°ΡΠ΅Π»Π΅Π½ Π½Π° ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘++ ΠΎΡΡΠ°ΡΡΠΈΡ ΡΡ Π½Π° Python ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ ΠΈ Π²ΡΠ½ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ libdnf5 Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎΠΊΡΡΠ³ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Python API.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° C++ Π²ΠΌΠ΅ΡΡΠΎ Python Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΎΡΡΡΠ²Π΅ΠΌ ΠΎΡ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ° ΠΈ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. ΠΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π² ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄, Π½ΠΎ ΠΈ ΡΡΠ΅Π· ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ ΠΏΡΠ΅ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ (Π±Π°Π·ΠΈΡΠ΅ Ρ Π΄Π°Π½Π½ΠΈ ΡΡΡ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ). ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΡΡ DNF5 Π΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΎΡ PackageKit Π² ΠΏΠΎΠ»Π·Π° Π½Π° Π½ΠΎΠ² ΡΠΎΠ½ΠΎΠ² ΠΏΡΠΎΡΠ΅Ρ, Π½Π°ΡΠ΅ΡΠ΅Π½ DNF Daemon, ΠΊΠΎΠΉΡΠΎ Π·Π°ΠΌΠ΅ΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° PackageKit ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ.
ΠΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΡΡΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌΠΎΡΡΡΠ° Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π½ΠΎΠ²ΠΈΡΡ DNF ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎ-Π²ΠΈΠ·ΡΠ°Π»Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡ Π·Π° Π½Π°ΠΏΡΠ΅Π΄ΡΠΊΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅; Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ RPM ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ; Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π² ΠΎΡΡΠ΅ΡΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ΅Π½ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° ΠΎΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠΈ; ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ ΠΏΠΎ-ΡΡΡΠ²ΡΡΡΠ΅Π½ΡΡΠ²Π°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π·Π° bash.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru