Адаптация Debian для использования Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ coreutils Π½Π° языкС Rust

Π‘ΠΈΠ»ΡŒΠ²Π΅ΡΡ‚Ρ€ Π›Π΅Π΄Ρ€ΡŽ (Sylvestre Ledru), извСстный своСй Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΏΠΎ сборкС Debian GNU/Linux с использованиСм компилятора Clang, сообщил ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ экспСримСнта ΠΏΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡŽ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ coreutils, пСрСписанного Π½Π° языкС Rust. Π’ состав coreutils входят Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠ°ΠΊ sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln ΠΈ ls. Для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ этапа ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² Debian Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° coreutils Π½Π° языкС Rust Π±Ρ‹Π»ΠΈ поставлСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ†Π΅Π»ΠΈ:

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° с Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ coreutils Π½Π° языкС Rust для Debian ΠΈ Ubuntu.
  • Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Debian с Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ столом GNOME, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ rust-coreutils.
  • Установка 1000 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΠ· рСпозитория.
  • CΠ±ΠΎΡ€ΠΊΠ° ΠΈΠ· исходных тСкстов Firefox, LLVM/Clang ΠΈ ядра Linux Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ с rust-coreutils.

ПослС создания Π±ΠΎΠ»Π΅Π΅ 100 ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для Rust/coreutils ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Π½Π°ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ. Из ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‰Π΅ΠΉΡΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ отмСчаСтся рСализация Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΈ ΠΎΠΏΡ†ΠΈΠΉ, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ качСства ΠΈ Сдинообразия ΠΊΠΎΠ΄Π°, Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ тСстового Π½Π°Π±ΠΎΡ€Π°, устранСниС сбоСв, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈ запускС тСстового Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ GNU Coreutils (ΠΏΠΎΠΊΠ° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ выполняСтся 141 тСст ΠΈΠ· 613).

ΠŸΡ€ΠΈ создании ΠΏΠ°ΠΊΠ΅Ρ‚Π° rust-coreutils Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ coreutils, Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ Π½Π° языкС Rust ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² /usr/lib/cargo/bin/ ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния PATH. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° rust-coreutils услоТняла Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ всСх сборочных зависимостСй, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Rust ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ crate-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.

Π‘ созданиСм Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° особых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ, Π½ΠΎ адаптация ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для окруТСния с rust-coreutils ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° большой Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ скрипты post-install Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° coreutils. НаибольшСС число ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ отсутствиСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ «cp» отсутствовали ΠΎΠΏΡ†ΠΈΠΈ «—archive» ΠΈ «—no-dereference», Π² «ln» Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠΏΡ†ΠΈΠΈ «—relative», Π² mktemp — «-t», Π² sync «-fs», Π² install — «—owner» ΠΈ «—group». Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ всплыли ΠΈΠ·-Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° install Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π° ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ /dev/null Π² качСствС Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π² mkdir вмСсто «—parent» присутствовала опция «—parents» ΠΈ Ρ‚.ΠΏ.

ΠŸΡ€ΠΈ тСстировании сборки ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Π±Π°Π· Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ. ΠŸΡ€ΠΈ сборкС Firefox ΠΈ LLVM/Clang ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ python-скрипты ΠΈ cmake, поэтому Π·Π°ΠΌΠ΅Π½Π° coreutils Π½Π° Π½ΠΈΡ… Π½Π΅ повлияла. Π‘Π±ΠΎΡ€ΠΊΠ° ядра Linux ΠΏΡ€ΠΎΡˆΠ»Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³Π»Π°Π΄ΠΊΠΎ, всплыли лишь Π΄Π²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: Π²Ρ‹Π²ΠΎΠ΄ ошибки ΠΏΡ€ΠΈ использовании chown с символичСской ссылкой ΠΈ отсутствиС ΠΎΠΏΡ†ΠΈΠΈ «-n» Π² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ ln.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ