LINUX.ORG.RU

GNU Coreutils 8.13

 ,


0

1

Джим Мейеринг (Jim Meyering) объявил о выходе GNU Coreutils 8.13.

Новая версия включает более 200 коммитов от 18 разработчиков, а также более 1000 коммитов из gnulib, внесённых со времени выхода Coreutils 8.12.

Большее количество этих изменений направлено на усовершенствование кода, улучшение портируемости, добавление новых возможностей и лишь малая часть заключается в исправлении ошибок. Далее подробный перечень этих изменений:

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

  • chown и chgrp теперь корректно работают с опциями -v и --from, то есть для файлов, которые не удовлетворяют указанным в --from UID:GID, выводится их текущий владелец, а не новый владелец остальных файлов (ошибка появилась в sh-utils-2.0g);
  • cp -r ранее могла ошибочно изменить права доступа у существующих каталогов (ошибка из coreutils версии 6.8);
  • cp -u -p до этого времени не удавалось предотвратить дублирование жёстких ссылок для каждой актуальной копии файла в пути назначения, то есть, если s/a и s/b являются жёсткими ссылками и файл dst/s/a актуален, cp -up s dst скопирует s/b в dst/s/b вместо того, чтобы просто создать ссылку с dst/s/b на dst/s/a (видимо, эта ошибка существует с самого начала);
  • использование памяти утилитами rm, du, chmod, chgrp, chown, chcon больше не пропорционально числу файлов в каталоге, соответственно, если ранее работа с каталогом, содержащим 4 миллиона файлов, могла потребовать примерно 1 гигабайт оперативной памяти, то теперь требуется лишь около 30 мегабайт;
  • pr -T более не игнорирует параметр LAST_PAGE — позицию, где нужно остановиться (ошибка появилась в textutils-1.19q);
  • split --number l/... более не создаёт посторонних файлов (ошибка из coreutils-8.8);
  • timeout теперь отправляет сигналы командам, создающим свои группы процессов, и нормально работает при запуске вместе с дочерним процессом (ошибка добавлена в версии 7.0 coreutils);
  • unexpand -a теперь выравнивает правильно, если за пробелами следовал символ табуляции, поскольку в этом случае пробелы отбрасывались, приводя к нарушению выравнивания — введена проверка, не следует ли символ табуляции за пробелами (ошибка появилась в coreutils-5.3.0).

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

  • cp -au при явном указании --preserve=links теперь может замещать более новые файлы в каталоге назначения, чтобы отображать жёсткие ссылки из источника;
  • chmod, chown и chgrp теперь отображают оригинальные атрибуты, когда указываются опции -v и -c.

Новая функциональность:

  • date теперь обрабатывает строки в формате ISO 8601 с «T» в качестве символа-разделителя, такие как «2004-02-29T16:21:42» или «2004-02-29T16:21:42.333-07:00» (с указанием часового пояса и долей секунды);
  • md5sum, sha1sum, sha224sum, sha384sum и sha512sum с опциями --strict --check теперь возвращают ненулевой результат (выдают ошибку) при любой некорректной строке на входе, а не ограничиваются просто предупреждением;
  • split --filter=CMD позволяет пропустить вывод команды через фильтр CMD; CMD в свою очередь может использовать значение переменной окружения $FILE, которая содержит имя выходного файла во время каждого запуска CMD, например, если мы хотим разбить файл на три приблизительно равные части и сжать их, то теперь это может быть сделано командой split -n3 --filter='xz > $FILE.xz' big (обратите внимание, что кавычки должны быть одинарными, а не двойными);
  • timeout принимает новую опцию --foreground для поддержки команд, запускаемых не напрямую из командной строки, если команда интерактивна или должна получать сигналы из терминала.

Улучшения:

  • cp -p теперь копирует тривиальные NFSv4 ACLs на Solaris 10 (ранее эта команда ошибочно применила бы нетривиальные ACL к файлу назначения);
  • благодаря улучшениям в gnulib, cp и ls теперь поддерживают ACL в системе HP-UX 11.11;
  • df теперь поддерживает дисковые разделы величиной более 4TiB в MacOS X 10.5 и новее и AIX 5.2 и новее;
  • join --check-order теперь выводит сообщение «join: FILE:LINE_NUMBER: bad_line» для неотсортированного файла, а не просто «join: file 1 is not in sorted order»;
  • shuf гораздо более эффективно выводит небольшие подмножества больших перестановок, например, `shuf -i1-$((2**32-1)) -n2' больше не потребляет память в непомерных количествах;
  • stat -f теперь распознаёт файловые системы GPFS, MQUEUE и PSTOREFS;
  • timeout теперь поддерживает доли секунды для задания интервалов.

Отказ от изменений:

  • в cp не будет добавлен индикатор прогресса, эта функциональность признана излишней, а тем, кому такой индикатор необходим, рекомендовано использовать программу rsync.

>>> Исходный код

>>> Сообщение на Саванне

★★★★

Проверено: svu ()

В cp не будет добавлен прогрессбар.

Жлобы. Могли бы сделать опционально.

vurdalak ★★★★★ ()

anarquista, сам переведёшь до конца или предоставишь это корректорам?

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

Как хочешь.
Сегодня я устал, переводить не буду.
Или доперевожу завтра утром (по Москве), либо сам переведи, если не сложно (:

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

Ну просмотришь утром. А так, корректорский состав в моём лице благославляет на главную :)

adriano32 ★★★ ()

Утилитам этим кому двадцать, а кому и тридцать лет. А их функциональность всё продолжают перерабатывать. Что, эти изменения всё ещё кем-то востребованы?

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

> А их функциональность всё продолжают перерабатывать. Что, эти изменения всё ещё кем-то востребованы?

Почему нет? Файловые системы и объёмы данных меняются, к этому нужно адаптировать и утилиты.

anonymous ()

>использование памяти утилитами rm, du, chmod, chgrp, chown, chcon больше не пропорционально числу файлов в каталоге, соответственно, если ранее работа с каталогом, содержащим 4 миллиона файлов, могла потребовать примерно 1 гигабайт оперативной памяти, то теперь требуется лишь около 30 мегабайт

Так вот что создавало 12309.

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

обратите внимание на количество изменений.
для релиза более чем достаточно.

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

Каша в голове?

> а кому и тридцать лет


Какой же утилите из GNU coreutils тридцать лет? Путаете идею с реализацией? Да, современные реалии не очень хорошо соответствуют идеям семидесятых.

«Текстовым терминалам больше сорока лет. А функциональность их эмуляторов продолжают перерабатывать. Что, эти изменения всё ещё кем-то востребованы?»

anonymous ()

> использование памяти утилитами rm, du, chmod, chgrp, chown, chcon больше не пропорционально числу файлов в каталоге, соответственно, если ранее работа с каталогом, содержащим 4 миллиона файлов, могла потребовать примерно 1 гигабайт оперативной памяти, то теперь требуется лишь около 30 мегабайт;

Торт.

> в cp не будет добавлен индикатор прогресса, эта функциональность признана излишней

Не торт. Жлобы.

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

Ты прямо как элой...
Как думаешь - булки в булочной родятся?
Это же Coreutils - на использовании их строится бОльшая часть функциональности линуксовых программ...

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

Как всегда с новой версией coreutils целая толпа начинает ныть по поводу того, что прогрессбар не добавили. По поводу него уже было много сказано в предыдущих тредах, чтобы все могли уяснить ненужность его присобачивания к cp и mv.

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

Это же Coreutils - на использовании их строится бОльшая часть функциональности линуксовых программ...

Нет, я непротив, просто мне Питона хватает вполне. И вроде бы там эти самые CoreUtils ни в os, ни в sys не используются.

Иногда, конечно, запускаю ls, cd, mv, mkdir, но они же и так работают.

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

Я не могу сказать, что это критический функционал, но я бы в общем не отказался от такой штуки.

arknir ()

>в cp не будет добавлен индикатор прогресса Хех, только час назад подумал об этой штуке. Ну и шут с ней

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

> Как всегда с новой версией coreutils целая толпа начинает ныть по поводу того, что прогрессбар не добавили. По поводу него уже было много сказано в предыдущих тредах, чтобы все могли уяснить ненужность его присобачивания к cp и mv.

Я в тех тредах говорил, и в этом буду. Встраивать прогрессбар в cp и mv не надо. Надо встроить туда подсчёт статистики, который будет включаться специальным аргументом командной строки. И встроить обработчик сигнала, который будет при поступлении сигнала выдавать эту статистику stdout.

После этого любой прогрессбар для cp пришется элементарно. Хоть текстовый, хоть графический, хоть с рюшечками и свистелками.

Это же всё очевидно любому здравомыслящему человеку.

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

>>И встроить обработчик сигнала, который будет при поступлении сигнала выдавать эту статистику stdout.

И это будет -SIGUSR1 как в dd FTGJ!!

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

Поддерживаю, разработчики не должны решать за пользователей что им нужно, а что нет, кто мешал сделать ключик для вывода прогрессбара. Печально.

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

Разработчикам лень. Напиши патч и отошли им.

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

Им осмысленно не хочется этого делать. Но если кто-то возьмет на себя труд реализовать и поддерживать эту часть кода, они могут согласиться. А могут и нет. Но в любом случае, можно будет просто сделать свой -git бранч и радоваться жизни.

arknir ()

> если ранее работа с каталогом, содержащим 4 миллиона файлов, могла потребовать примерно 1 гигабайт оперативной памяти, то теперь требуется лишь около 30 мегабайт

им бы firefox писать

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

> Утилитам этим кому двадцать, а кому и тридцать лет. А их функциональность всё продолжают перерабатывать. Что, эти изменения всё ещё кем-то востребованы?

Хорошего не замечаешь, брат.

Попробуй ls во FreeBSD или ps в Солярке.

А GNU ln вызывает linkat() миную link(), в отличии от Solaris ln.

anonymous ()

>в cp не будет добавлен индикатор прогресса, эта функциональность признана излишней, а тем, кому такой индикатор необходим, рекомендовано использовать программу rsync.

ГДЕ ЭТО НАПИСАНО?

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

>им бы firefox писать

Так качественно всё переделать и у них не получится: монстры с ООП нагромождениями просто обязаны жрать, течь и генерировать баги на ровном месте.

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

Действительно, в сообщении о выходе новой версии этого нет (:

Но в августе этот вопрос активно обсуждался разработчиками, пришли они к отрицательному решению. Многие пользователи еще не знали, что такое решение принято. Я счел возможным добавить это в новость.

Jim Meyering изложил свою позицию в рассылке, можете почитать.

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

http://lists.gnu.org/archive/html/coreutils/2011-07/msg00068.html

I would like to implement a progress bar in cp, would that patch be accepted? Is there any reason not to do it? - Diogo Sousa

Well the thinking at the moment is it's a marginal feature.
Given that one can already use rsync for this
we don't think it needs to be added to cp. - Pádraig Brady

If cp had every feature of rsync then it would be rsync.

  $ ls -ldogh /bin/cp /usr/bin/rsync | awk '{print $3, $7}'
  116K /bin/cp
  393K /usr/bin/rsync

And if you would like to have one of the features available in rsync
then it is better to be using rsync instead. - Bob Proulx

adriano32 ★★★ ()

>в cp не будет добавлен индикатор прогресса, эта функциональность признана излишней, а тем, кому такой индикатор необходим, рекомендовано использовать программу rsync.

Упоролись, чтоле?!

http://www.zlonet.ru/page/cp-progress-bar

для Ъ:

Небольшое сравнение, что заставило отказаться от этой затеи.

Копирование одного файла размером 1,7G:

результат rsync: 13,82s user 11,99s system 23% cpu 1:47,75 total
результат cp:    0,00s user 5,78s system 4% cpu 1:58,71 total
Много мелких файлов:
результат rsync: 1,59s user 3,48s system 10% cpu 48,672 total
результат cp:    0,04s user 1,33s system 17% cpu 7,915 total
Вывод: не нужно.

YYY ()

Тем, кому нужен прогресс бар рекомендуется добавить в .bashrc:

cppv(){
pv "$1" > "$2"
}

и копировать с помощью cppv

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

>Надо встроить туда подсчёт статистики, который будет включаться специальным аргументом командной строки. И встроить обработчик сигнала, который будет при поступлении сигнала выдавать эту статистику stdout.

Может, лучше сделать некие controlin и controlout, по которой будет идти собственно управление cp? Ну и аналогичные функции сделать во всех прочих утилитах, выкинув заодно логику определения, из скрипта они вызываются или интерактивно (а за цвета/колонки/прочие визуальные рюшки пусть отвечает, например, эмулятор терминала, читающий сырые данные в json из controlout и применяющий к ним определённые правила)…

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

>А если директорию? Можно соорудить что-то вроде:

(cd "$1"; tar cf - somedir) | pv | (cd "$2"; tar xf - )

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

>>эмулятор терминала, читающий сырые данные в json

Одного меня чуть не стошнило от комбинации Coreutils, cp, terminal и json?

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

Это будет слишком... эээ... инновационно для этого пакета. Что-то мне подсказывает, что разработчиков хватит удар от таких предложений.

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

> просто мне Питона хватает вполне

а чо так хило? надо уж сразу jvm!

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

Извиняюсь, естественно

(cd "$1"; tar cf - . ) | pv | (cd "$2"; tar xf - )
YYY ()
Ответ на: Прогресс бар от joy4eg

The latest snapshot - which is currently 0.1.5 beta — ecp.0.1.5beta.tar.gz from 09-Jul-2006.

Лучше тогда приложить один из предложенных в рассылке coreutils патчей, чем эту хрень

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

> (cd «$1»; tar cf - . ) | pv | (cd «$2»; tar xf - )

Размер файла pv из астрала прочтет?

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