Coreutils
Всего сообщений: 18
GNU coreutils 8.29
Состоялся релиз GNU coreutils 8.29, набора базовых утилит Unix от проекта GNU.
Основные изменения:
- timeout теперь поддерживает опцию
--verbose
для диагностики принудительного завершения работы. - В dd добавлена поддержка флага
iflag=direct
для файлов произвольного размера во всех файловых системах. - В tail опция
--bytes=NUM
теперь вызывает lseek/fseek (или аналог) вместо последовательного чтения с начала потока, если системный вызов поддерживается для данного типа дескриптора. - Утилиты, которые не поддерживают длинные опции (кроме глобальных
--help
и--version
) теперь выводят более понятное сообщение об ошибке.
>>> Подробности
Coreutils 8.26
Состоялся релиз GNU Coreutils 8.26 — базового набора утилит для работы с файлами, командной оболочкой и текстом.
Основные улучшения:
- Добавлена утилита
b2sum
, реализующая алгоритм BLAKE2 для нахождения и проверки контрольной суммы файла. - В программу
date
добавлена поддержка формата%q
для вывода квартала года. - В программу
comm
добавлена опция--total
для вывода сводки в конце. - Исправлено множество ошибок.
>>> Подробности
GNU Coreutils 8.25
20 января была представлена новая версия GNU Coreutils — набора базовых утилит для работы с файлами, текстом и командной оболочкой (cp, mv, chown, ls, dd, echo, cat и т. д.). Новая версия включает 169 коммитов от 12 людей.
В новой версии:
- В дополнение к команде base64 была добавлена команда base32;
- Новые функции:
- comm, cut, head, numfmt, paste и tail теперь имеют опцию "-z" ("--zero-terminated"), добавляющую в конец записи нулевой символ (NUL);
- dd с опцией "--human-readable" преобразует информацию о размере в читаемый формат, например: «3441325000 bytes (3.4 GB, 3.2 GiB) copied»;
- в утилиты md5sum, sha1sum, sha224sum, sha256sum, sha384sum и sha512sum добавлена опция "--ignore-missing", исключающая проверку несуществующих файлов;
- printf теперь поддерживает спецификатор формата '%q', выводящий аргумент в формате, пригодном для большинства оболочек, показывающих непечатные символы в виде «$'...'»;
- Исправления и улучшения:
- mv больше не вызывает потери данных при удалении исходного каталога, указанного в параметрах несколько раз, если этот каталог является пунктом назначения;
- утилиты, влияющие на директории (chmod, cp, rm и т. д.), теперь лучше работают с XFS;
- stat -f --format=%T теперь выводит тип ФС для новых псевдо-ФС «bpf_fs», «btrfs_test», «nsfs», «overlayfs» и «tracefs», а также для «acfs»;
- все утилиты выводят аргументы, полученные от пользователя, в сообщениях об ошибках;
- Изменения:
- join, sort и uniq с опцией "--zero-terminated" воспринимают '\n' как разделитель полей;
- ls теперь экранирует имена файлов, что подходит для использования их в командной оболочке и при выводе в терминал.
>>> Подробности
GNU Coreutils 8.23
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 одновременно.
Об остальных улучшениях и исправлениях можно прочитать в анонсе к выпуску.
>>> Анонс
GNU Core Utilities 8.22
Тихо и незаметно в последнюю 13-ю пятницу уходящего года вышла новая версия GNU coreutils. За десять месяцев, прошедших с прошлого релиза, 32 разработчика сделали 195 коммитов.
Выход версии 8.22 прежде всего связан с исправлением ошибок и улучшением производительности.
( читать дальше... )
>>> Подробности
GNU Coreutils 8.21
14 февраля тихо и незаметно вышла новая версия набора утилит GNU Coreutils.
Новая программа numfmt — программа для изменения формата представления чисел. Понимает строки формата в стиле printf, а также позволяет работать с размерами файлов, представленных в системе Си или IEC, 1K = 1000 или 1K = 1024 и т.п.
Новые особенности
- У df появилась новая опция --output[=FIELD_LIST], позволяющая задать поля, которые надлежит включить в вывод, или задать вывод всех возможных полей, если параметр опущен. Это дает возможность вывести сведения и о свободных блоках, и о свободных инодах;
- du --threshosld=SIZE исключает из вывода файлы, чей размер меньше заданного (или больше заданного при отрицательной величине SIZE).
( читать дальше... )
>>> Подробности
GNU Coreutils 8.20
Джим Мейеринг (Jim Meyering) объявил о выходе новой версии GNU Coreutils. Выход этой версии главным образом связан с исправлением ряда ошибок. Хотя были сделаны и некоторые улучшения.
( читать дальше... )
>>> Подробности
GNU Coreutils 8.19
Прошло всего восемь дней, и вот новый стабильный релиз GNU Coreutils. 4 разработчика сделали 13 коммитов.
Исправленные ошибки
- df теперь прекращает работу, если список примонтированных файловых систем (/etc/mtab) недоступен для чтения, а информация о типе файловых систем необходима для обработки определенных опций (-a, -l, -t, -x). Эта ошибка присутствовала изначально;
- sort -u в определенных условиях выдавала некорректный результат. Например, следующая конструкция пропускала «1»: Ошибка появилась в coreutils-8.6;
(yes 7 | head -11; echo 1) | sort --p=1 -S32b -u
- sort -u могла читать освобожденную память (тоже ошибка из coreutils-8.6). Проявляется, например, на такой команде:
perl -le 'print "a\n"."0"x900'|valgrind sort --p=1 -S32b -u
Улучшения
- У команды rm появилась новая опция --dir (-d), которая позволяет удалять пустые каталоги. Это сделано в целях совместимости с Mac OS X и BSD.
>>> Подробности
GNU Coreutils 8.18
Джим Мейеринг (Jim Meyering) сообщает, что за 13 недель разработки был подготовлен новый стабильный релиз GNU Coreutils 8.18.
( читать дальше... )
>>> Подробности
GNU coreutils 8.17
В новой версии GNU coreutils изменений немного, и все они выглядят безопасными.
- Исправленные ошибки
- id и groups, будучи запущены без аргумента, указывающего имя пользователя, в ряде случаев могли отображать группы, которые не являются ни реальными, ни эффективными. Например, при запуске set-GID или в сессии, когда группа была изменена, но еще не стала эффективной (ошибка появилась в версии coreutils 8.1);
- команда cp S D избавлена от состояния гонок. Если удалить существующий файл D после того, как команда cp выполнит stat, но до того, как она выполнит open, то ранее cp прекращала работу с непонятным для пользователя сообщением об ошибке «файл D не найден». Теперь же cp пытается просто открыть файл с флагом O_CREATE;
- split --number=C /dev/null более не приводит к бесконечному циклу в ОС GNU/Hurd (ошибка появилась в coreutils-8.8);
- stat более не сообщает об отрицательном размере файлов для огромных файлов (ошибка появилась в coreutils-8.8).
- Новые особенности
- split и truncate теперь позволяют работать с любым файлом, допускающим произвольный доступ в ситуациях, когда необходимо знать размер файла, теперь это могут быть не только обычные файлы;
- fmt теперь принимает опцию --goal=ШИРИНА (-g);
- stat -f распознает новые файловые системы: bdevfs, indefs, qnx6.
- Изменения в поведении
- cp,mv,install,cat,split теперь пишут и читают блоками по 64KiB вместо 32KiB в прошлых версиях, это увеличивает производительность на 64-битных системах GNU/Linux;
- cp --attributes-only больше не обрезает существующий файл, предоставляя более общий способ переноса атрибутов с файла на файл.
>>> Подробности
GNU Core Utilities 8.15
12 человек за 12 недель добавили более 120 коммитов. Результатом стала вышедшая 6 января новая версия GNU Coreutils 8.15. Была добавлена новая программа, realpath, а также исправлено несколько ошибок. Хорошо, что эти ошибки, как это и происходит в последнее время, обнаруживаются лишь в «пыльных углах» кода, и лишь немногие из них воспроизводятся достаточно часто.
Существенные изменения
- Новые программы
- realpath выводит абсолютные имена файлов.
- Исправленные ошибки
- du -x более не подсчитывает корневые каталоги других файловых систем (ошибка появилась в coreutils-5.1.0);
- команду ls --color <директория с большим количеством файлов> нельзя было прервать слишком долго (ошибка появилась в coreutils-5.2.1);
- параметр -k команды ls больше не влияет на то, как ls -l отображает размеры файлов, влияет только на отображение общего числа блоков в директории и отображение размеров файлов при использовании параметра -s. Это сделано для совместимости с BSD и соответствия стандарту POSIX 2008. Поскольку опция -k теперь не эквивалентна --block-size\1KiB, добавлена новая опция — --kilobyte;
- в ls -l понемногу утекала память для каждой непустой директории при использовании SELinux (возможно, ошибка появилась в coreutils-6.0, когда была добавлена поддержка SELinux);
- rm -rf падала с ошибкой «Device or resource busy» в Cygwin на файловых системах NWFS и NcFsd. Это никак не затрагивает системы с ядрми Linux или Unix (ошибка появилась в coreutils-8.0, когда rm стала использовать fts);
- split -n 1/2 FILE теперь не падает при обработке растущих файлов или (на некоторых системах) таких необычных файлов, как /dev/zero. Эта команда могла бы выдать: «/dev/zero: No such file or directory» даже если этот файл очевидно существует. То же и для -n l/2. Ошибка появилась в coreutils-8.8 вместе с этими дополнительными опциями;
- stat -f теперь распознаёт файловые системы FhGFS и PipeFS;
- tac более не падает при обработке двух и более входных файлов, для которых невозможно выполнить fseek (ошибка появилась в coreutils-5.3.0);
- tail -f более не пытается использовать inotify в файловых системах GPFS или FhGFS.
- Изменения в поведении
- df отображает длинные названия файловых систем с UUID в списке по умолчанию. При использовании достаточно нового ядра и пользовательского окружения такие длинные названия могут использоваться, перенося часть колонок вправо. Если длинное имя указывает на символическую ссылку, а ФС не указаны, df выводит короткое название.
- tail -f теперь использует polling (не inotify), если какой-то из файлов лежит на файловой системе неизвестного типа. Дополнительно, для каждого такого файла выводится предупреждение, magic number файловой системы и просьба отправить это число по адресу bug-coreutils@gnu.org.
>>> Подробности
Coreutils 8.14: исправление ошибок
12 октября Джим Мейеринг (Jim Meyering) объявил о выходе новой версии базовых системных утилит GNU coreutils 8.14, направленной на исправление ряда ошибок (в том числе появившихся в прошлой версии, 8.13).
Список изменений:
- Исправление ошибок:
- ls --dereference более не выводит ошибочные строки «argetm» для символических ссылок без объекта назначения, когда в $LS_COLORS присутствует запись 'ln=target' (ошибка появилась в fileutils-4.0);
- ls -lL снова правильно выводит «+», когда объект ссылки имеет ACL. (ошибка появилась coreutils-8.13);
- sort -g больше не впадает в бесконечный цикл, даже если входные данные содержат NaNs (ошибка появилась в coreutils-8.5);
- Улучшения:
- md5sum --check (как впрочем и sha1sum, sha224sum, sha384sum, sha512sum) теперь поддерживает формат -r соответствующей команды из BSD;
- pwd теперь нормально работает и в системах без системного вызова openat (ранее наблюдались проблемы с каталогами, абсолютный путь к которым содержал более PATH_MAX / 3 компонентов);
- Изменения в поведении:
- timeout теперь обрабатывает только первый сигнал, полученный из обрабатываемого набора (SIGTERM, SIGINT, ...), что предназначено для поддержки систем, которые косвенно создают потоки для некоторых функций таймера (как GNU/kFreeBSD);
- Сборка пакета:
- .tar.xz признан достаточно портируемым форматом, решено отказаться от сборки файлов .tar.gz.
>>> Подробности
GNU Coreutils 8.13
Джим Мейеринг (Jim Meyering) объявил о выходе GNU Coreutils 8.13.
Новая версия включает более 200 коммитов от 18 разработчиков, а также более 1000 коммитов из gnulib, внесённых со времени выхода Coreutils 8.12.
Большее количество этих изменений направлено на усовершенствование кода, улучшение портируемости, добавление новых возможностей и лишь малая часть заключается в исправлении ошибок. Далее подробный перечень этих изменений:
( читать дальше... )
GNU coreutils и потеря данных
Как, прошло меньше двух недель, и нужно выпускать новую версию — GNU coreutils 8.12?
Оказалось, что при определенных условиях использование GNU coreutils может привести к серьезным проблемам, например, к потере данных при копировании файлов. Это может случиться при выполнении трех условий:
- используется свежее ядро Linux 2.6.39 (по крайней мере, это касается версии -rc3);
- используется файловая система xfs;
- копируется только что созданный файл с зарезервированным дисковым пространством (т. н. «unwritten extent»).
Подробно про потерю данных можно почитать здесь: gmane.comp.file-systems.xfs.general
Другие изменения:
- dd вновь успешно собирается в системах AIX 5.
- исправлена ошибка в программе tail, --follow=name теперь не влечет --retry в системах с inotify (ошибка из версии 7.5)
GNU coreutils: вот и 8.11
13 апреля вышла новая версия программ GNU Coreutils, то есть 8.11. Этот выпуск включает исправления ошибок, добавление новых расширений и изменения в поведении. Начнем с ошибок.
Исправленные ошибки:
- touch, собранная в Solaris 9, ранее завершалась с ошибкой сегментирования, будучи запущена в Solaris 10 (ошибка появилась в версии coreutils-8.6);
- sort больше не запускает 7 рабочих нитей, чтобы отсортировать файл в 16 строк (ошибка из версии coreutils-8.8).
- wc больше не пытается разыменовывать указатель NULL при нехватке амяти (ошибка из версии coreutils 7.1);
- cp -a --link скопировала бы символическую ссылку, вместо того, чтобы сделать жесткую ссылку на нее. (ошибка из версии coreutils-8.0);
- исправлена работа cp с разреженными файлами в файловой системе btrfs на ядрах Linux старых версий (до 2.6.38). Ранее могли получаться неверные копии (ошибка из версии coreutils 8.10);
- cut могла завершаться с ошибкой сегметирования, когда пользователем укзаывался --output-delimeter и неограниченный ряд полей вроде -f1234567890 (ошибка из версии coreutils-5.3.0);
- du впадала в бесконечный цикл, когда задавалсь опция --files0-from=DIR.
Новые расширения появились в программе dd:
- Добавлен флаг nocache к опциям iflag и oflag. Это новый флаг может быть полезен когда, например, count=0 и не только;
- dd теперь предупреждает о необходимости установки флага iflag=fullblock, в тех случаях, когда частичное чтение сопровождается неприятностями.
Изменения в поведении:
- cp работает с FIEMAP еще лучше;
- для test теперь «==» синоним «=»;
- install окончательно перестал понимать устаревшую опцию --preserve_context. Теперь можно использовать только --preserve-context;
- df теперь выравнивает строки более сообразно.
GNU Coreutils 7.3
Представлено обновление набора базовых утилит – GNU Coreutils 7.3.
Данный набор включает в себя утилиты для работы с файлами (dd, chmod, cp и т.д.), shell–утилиты (du, chroot, pwd и т.д.) и утилиты для работы с текстом (cat, head, tail и т.д.).
Среди новшеств можно выделить, то что для shred, sort и shuf используется внутренний генератор псевдослучайности (pseudorandom) по умолчанию. Утилита cp стала способна копировать файлы размером около 4000 байт из файловой системы /proc с использованием базового блока файловой системы 4 KiB или более. «id -G $USER» стал корректно работать на операционных системах с ядром Darwin и операционной системе NetBSD.
Произведено исправление ошибок.
coreutils 6.11
Вышла стабильная версия coreutils 6.11, пакета базовых утилит, включающая в себя порядка 200 изменений и улучшений.
Изменения:
- configure опция --enable-no-install-program теперь работает;
- cp -fR fifo E теперь работает, если E существует. Ранее при попытке копирования FIFO или специального файла в существующий, выдавалась ошибка;
- dd опять работает с параметрами if=/dev/stdin и of=/dev/stdout;
- id теперь использует getgrouplist(3), когда это возможно;
- слинкованная со старой libselinux, утилита ls теперь не падает на файлах в /proc;
- в md5sum, sha1sum, sha224sum, sha384sum и sha512sum исправлена ошибка, мешающая работе с хэшами, заданными в BSD-стиле (префикс 'MD5 ('). Также теперь допустимо использования символа с нулевым кодом при чтении хэша через опцию "-c";
- "paste -d'\' file" теперь не переусердствует в использовании памяти (недочёт, тянущийся с 1992 года!);
- улучшено поведение "rmdir --ignore-fail-on-non-empty";
- join теперь проверяет, заданы ли входные данные в отсортированном виде; отключить проверку можно через --nocheck-order;
- новые параметры для sort;
- ls --color теперь не печатает лишние escape-последовательности;
- улучшена работоспособность rm на системах типа BeOS;
- устранены проблемы в утилитах id и groups при работе с файловой системой AFS;
- и большой список других изменений.
Скачать tar.lzma (3.6 Mb) (Скачать LZMA http://www.7-zip.org)
>>> Подробности