LINUX.ORG.RU

GNU Coreutils 8.23

 ,


1

4

19 июля вышла новая версия пакета системных утилит GNU Coreutils 8.23. Заметным изменением стала возможность собрать весь пакет в виде одного бинарника для экономии дискового пространства при установке. Для этого появилась новая опция конфигурирования --enable-single-binary. Большинство же других изменений — это исправление ошибок.

Исправленные ошибки:

  • chmod -Rc больше не выдаёт ошибочные предупреждения при обработке файлов с установленными специальными битами (suid и sticky) (ошибка появилась в coreutils-6.0). Ранее, например, работало так:
    mkdir -p a
    touch a/b
    chmod u+s a/b
    chmod -Rc u-w a
    права доступа «a» изменены с 0755 (rwxr-xr-x) на 0555 (r-xr-xr-x)
    chmod: получение новых атрибутов «b»: Нет такого файла или каталога
    
  • cp -a, mv и install --preserve-context вновь правильно устанавливают контекст SELinux для существующих каталогов. Ранее эти команды устанавливали для существующего каталога контекст последнего скопированного потомка (ошибка появилась в версии 8.22);
  • cp -a, mv и install --preserve-context больше не завершаются с ошибкой сегментирования, когда работают с включенным SELinux, а файловая система выдаёт ошибку при попытке прочитать контекст SELinux для файла (ошибка появилась в версии 8.22);
  • cp -a и mv теперь сохраняют расширенные атрибуты символических ссылок при копировании с одной файловой системы на другую (ошибка появилась в версии 7.1 вместе с поддержкой копирования расширенных атрибутов);
  • date больше не падает и не уходит в бесконечный цикл при разборе некорректной опции TZ=«» (ошибка появилась в версии 5.3.0);
  • в dd преобразование ASCII и EBCDIC было несовместимо с обычной практикой и стандартом POSIX (ошибка существовала изначально);
  • в df внесено несколько изменений касающихся нового динамичного представления файловых систем: исключены дубликаты виртуальных файловых систем типа tmpfs. Правильно передаются информация об устройстве, где точек монтирования, куда монтирование осуществлялось несколько раз (эти ошибки были изначально);
  • df вновь правильно отображает точки монтирования с опцией bind. На некоторых системах эти точки ошибочно выбрасывались (ошибка появилась в версии 8.22);
  • df теперь молча игрнорирует циклы каталогов, получившиеся в результате монтирования с опцией bind. Ранее выдавалось предупреждение, и программа завершала работу и возрващала код ошибки (ошибка появилась в версии 8.1);
  • head --bytes=-N и --lines=-N теперь более последовательно работает с устройствами, не игнорируя данные от виртуальных устройств, таких как /dev/zero (ошибка появилась в версии 5.0.1);
  • head --lines=-0 теперь печатает весь ввод, если ввод не содержит символа конца строки '\n'. Ранее не выводилось ничего (ошибка появилась в версии 5.0.1);
  • id, запущенная без указания имени пользователя, теперь правильно выводит id группы, ранее же печатался id по базе паролей, и идентификатор мог не быть ни действительным, ни эффективным (например, если был установлен бит set-GID или если база паролей изменилась вне текущей сессии (ошибка появилась в версии 8.1);
  • ln -sf теперь замещает символические ссылки, чья цель не может существовать. Ранее эта команда выдавала сообщение об ошибки, требовалось специально указывать опецию --no-dereference (ошибка появилась в версии 5.3.0);
  • ln -sr " F больше не сегволится, теперь работает, как и ожидается (ошибка появилась вместе с появлением опции --relative в версии 8.16);
  • nufmt теперь правильно обрабатывает пробельные символы во всех однобайтовых локалях (ошибка появилась в версии 8.21 вместе с появлением самой программы numfmt);
  • seq снова генерирует корректный вывод, когда последовательность начинается или заканцивается значением -0 (ошибка появилась в версии 8.20);
  • shuf --repeat больше не падает, когда вход пустой (ошибка появилась в версии
  • sort теперь избегает неопределенного поведения при дестуркции мьютекса, когда используется несколько нитей, что могло приводить к взаимным блокировкам на некоторых системах ( ошибка появилась в версии 8.6);
  • tail -f теперь использует опрос для VXFS в класерном режиме (ошибка появилась в версии 7.5 вместе с поддержкой inotify)

новые возможности

  • od теперь принимает новую опция --endian=TYPE, чтобы правильно обрабатываеть ввод с разным порядком байтов;
  • configure принимает новую оацию --enable-single-bintry, чтобы собрать все программы в один бинарник «coreutils». Выбранные программы можно запускать с помощью символических ссылок, указывающих на «coreutils», либо с помощью шабангов с опцией --coreuils-prog=, передающейся программе. Поведение выбирается опцией --enable-single-binary=symlinks или --enable-single-binary=shebangs (по умолчанию). С опцией symlink вы не можете сделать еще одну ссылку на программу, потому что тогда coreutils не поймет, какую программу запускать. С шабангами нет этой проблемы, но файл /proc/$pid/cmdline может не обновляться на некоторых платформах. Функциональность программ никак не зависит от того, собраны они в один файл или нет. Но этот большой бинарник будет зависеть от всех динамических библиотек, даже если нужно запустить самую простую программу. Если вы хотите собрать некоторые программы отдельно, вне единого бинарника, вы можете использовать опцию --enable-single-binary-exepctions=PROG_LIST, через запятую указав программы, которые должны быть собраны отдельно. Этот флаг уменьшает размеры получаемого единого бинарника, что может быть актуально для встраиваемых систем.

Изменения в поведении

  • chroot с аргументом «/» больше не изменяет текущую директорию на «/» безусловно, позволяя изменить только учётные данные на время выполнения команды;
  • chroot --userspec теперь использует дополнительные группы, ассоциированные с выбранным юзером, а не с root;
  • cut -d$'\n' снова выводит строки, определённые в списке --fields, чего не происходило 8.21 и 8.22. Имейте ввиду, что использование этой не универсальной функциональности может привести к задержке вывода;
  • ls будет обращать внимание на пустую или неизвестную переменную TERM, если переменные LS_COLORS и COLORTERM не выставлены, и не будет в такой ситуации выводить цвета даже с --color=always.

Улучшения:

  • Улучшена работа stat и tail с HFS+, HFSX, LogFS и ConfigFS.
  • stat -f --format=%T теперь сообщает тип файловой системы
  • tail -f использует inotify,
  • install разрешает использовать опции -D и -t одновременно.

Об остальных улучшениях и исправлениях можно прочитать в анонсе к выпуску.

>>> Анонс

Заметным изменением стала возможность собрать весь пакет в виде одного бинарника

Как их использовать тогда?

loz ★★★★★ ()
Ответ на: комментарий от loz

Как busybox:

busybox cp something there/

# или

ln -s /bin/cp /bin/busybox
cp something there/

P.S. Бизибоксо-капец?

KennyMinigun ★★★★★ ()

chmod -Rc больше не выдаёт ошибочные предупреждения при обработке файлов с установленными специальными битами (suid и sticky), ошибка появилась в coreutils-6.0

вот это оперативность!

anonymous ()
Ответ на: комментарий от loz

Так там же написано, либо создаются симлинки, либо указывать специальную опцию.

anarquista ★★★★ ()

Жжжги, anarquista, покажи лоровским лентяям как надо писать новости. Развёрнуто и обстоятельно. И никак иначе.

anonymous ()

Теперь ещё bash туда впилить, и будет GNU Bloatbox.

proud_anon ★★★★★ ()

Я УСТАЛ ПЕРЕВОДИТЬ, ПЕРЕВЕДИТЕ ДАЛЬШЕ КТО-НИБУДЬ

Перевод:

А также ряд других изменений.

proud_anon ★★★★★ ()

Они изобрели busybox?
Надо будет попробовать запихать его в обдроед.

mittorn ★★★★★ ()
Ответ на: комментарий от KennyMinigun

P.S. Бизибоксо-капец?

Не уверен - жрёт оно всё же больше busybox, embedщикам это будет важно.

С другой стороны, фича интересная, намекает что они тоже о встраиваемых системах думают. И это - хорошо.

Pinkbyte ★★★★★ ()

Осторожно, надмозг! anarquista

Изменения в поведении

  • chroot с аргументом «/» больше не изменяет текущую директорию на «/» безусловно, позволяя изменить только учётные данные на время выполнения команды.
  • chroot --userspec теперь использует дополнительные группы, ассоциированные с выбранным юзером, а не с root.
  • cut -d$'\n' снова выводит строки, определённые в списке --fields, чего не происходило 8.21 и 8.22. Имейте ввиду, что использование этой не универсальной функциональности может привести к задержке вывода.
  • ls будет обращать внимание на пустую или неизвестную переменную TERM, если переменные LS_COLORS и COLORTERM не выставлены, и не будет в такой ситуации выводить цвета даже с --color=always.
Falcon-peregrinus ★★★★★ ()
Последнее исправление: Falcon-peregrinus (всего исправлений: 1)
Ответ на: комментарий от proud_anon

а потом еще системд... или стоп, в систему впилят рассово верные корутилс, переписанные великим потцерингом

nepank ★★ ()
Ответ на: комментарий от nepank

Судя по такому большому количеству ошибок в *системных* утилитах, их, несомненно, следовало бы переписать.

anarquista ★★★★ ()
Ответ на: комментарий от KennyMinigun

Бизибоксо-капец?

иди почитай про предназначение busybox, школота

anonymous ()
Ответ на: комментарий от proud_anon

sed grep awk тоже отдельно идут, непорядок

anonymous ()
Ответ на: комментарий от anarquista

Видимо эти фичи так редко используются, что баги в них просто не замечают, Вот и копятся они.

RedEyedMan4 ★★★★ ()

Шома был голоден. Шома был в темноте. Он шёл к холодильнику.

df теперь молча игрнорирует циклы каталогов, получившиеся в результате монтирования с опцией bind.

игрнорирует

ln -sf теперь замещает символические ссылки, чья цель не может существовать. Ранее эта команда выдавала сообщение об ошибки, требовалось специально указывать опецию --no-dereference (ошибка появилась в версии 5.3.0);

ошибки
опецию

ln -sr " F больше не сегволится, теперь работает, как и ожидается (ошибка появилась вместе с появлением опции --relative в версии 8.16);

сегволится

seq снова генерирует корректный вывод, когда последовательность начинается или заканцивается значением -0 (ошибка появилась в версии 8.20);

заканцивается

shuf --repeat больше не падает, когда вход пустой (ошибка появилась в версии

Какой?

tail -f теперь использует опрос для VXFS в класерном режиме (ошибка появилась в версии 7.5 вместе с поддержкой inotify)

класерном

od теперь принимает новую опция --endian=TYPE, чтобы правильно обрабатываеть ввод с разным порядком байтов;

опция
обрабатываеть

Мб стоит написать "

od получила опцию --endian=TYPE, указывающую как обрабатывать ввод с разным порядком байтов;

leonidko ★★★ ()

Блин, только старые собрал!

Adonai ★★★ ()

Вчера как раз обновился из homebrew.

xtraeft ★★★☆ ()
Ответ на: комментарий от Pinkbyte

Как засовывание всего в одну команду помогает использованию в эмбеддед?

buddhist ★★★★★ ()
Ответ на: комментарий от buddhist

один бинарь меньше многих мелких, тк даже helloworld что-то весит, плюс одна копия gnulib на всё

уменьшает количество форков

anonymous ()
Ответ на: комментарий от anonymous

Ну это понятно, но бизибокс же все равно меньше. Плюс этот бинарь нужно целиком засовывать в память.

buddhist ★★★★★ ()

DoctorSinus но ведь tail -f уже давно использует inotify, тут суть в том, что для вот этих файловых систем теперь использует.

anarquista ★★★★ ()

Вопрос к питонистам. Можно ли полностью заменить coreutils скриптами на питоне?

fedorino_gore ()
Ответ на: комментарий от buddhist

Плюс этот бинарь нужно целиком засовывать в память.

насколько я помню, в GNU/Linux бинарь засовывается в память один раз.

maloi ★★★★★ ()

они перед выпуском вообще тестируют? Каждый выпуск это просто правка регрессий предыдущего выпуска.

hope13 ★★★ ()

Вендекапец как никогда близок!

anonymous ()

Когда в systemd аналогичные функции включат?

Quasar ★★★★★ ()
Ответ на: комментарий от buddhist

А раз понятно, тогда - к чему вопрос?

Мне вот тоже понятно, что /bin/bb будет жрать меньше coreutils, потому что его на это затачивают. Но тем не менее, больше возможностей - не меньше.

Pinkbyte ★★★★★ ()
Ответ на: комментарий от buddhist

Меньше то он меньше но busybox по функционалу далеко не coreutils, возможно сумасшедшему изобретателю стиральной машины позарез понадобится tsort, например. Вот и соберет он себе coreutils с tsort, factor и ptx. Busybox так не умеет.

A-234 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.