Обновите coreutils на сервере CentOS 4.8

Я хотел бы использовать опцию oflag=append для dd операция добавления содержимого в файл. Это должно увеличить размер базового файла для устройства петли в случае, когда создание нового файла большего размера является слишком ресурсоемким.

Возможно dd В любом случае, это не лучший вариант для этого, но лучший из известных мне. Лучшие предложения приветствуются!

Мой сервер CentOS 4.8 X86_64 работает под управлением coreutils 5.2.1. Версия dd поставляется с этой версией coreutils не поддерживает oflag вариант. Более новая версия не присутствует в официальном репо.

Я заметил, что последняя версия coreutils - 8.5, и я предполагаю, что где-то между 5.2.1 и 8.5 oflag опция была добавлена.

Предполагая, что мне нужно обновить coreutils до версии, более новой, чем та, которая в настоящее время поставляется с CentOS 4.8 x86_64:

  • Безопасно ли обновлять coreutils?
  • Какая минимальная версия требуется для dd поддержать oflag вариант?
  • Откуда я могу получить RPM? Я бы предпочел не компилировать из источника.

2 ответа

Я не знаю каких-либо альтернативных способов сделать то, что вы хотите, бесцеремонно.

Обновление кажется опасным; шансы в значительной степени в пользу назад несовместимых изменений, где-то в длинном списке двоичных файлов в coreutils. Практически каждый сценарий в вашей системе использует двоичные файлы из coreutils, поэтому несовместимые изменения в неправильном месте могут нанести ущерб вашей системе.

Следующий вариант: получить двоичный RPM для этого. Я считаю, что это маловероятно, если только вы не построите это сами.

Что вы можете безопасно сделать, так это собрать исходный код coreutils (никогда этого не делал, но, вероятно, это просто настройка, сборка, установка), включая часть 'make'. Не делайте 'make install'. Затем выберите новый dd из недавно сгенерированных двоичных файлов, поместите его в /bin как dd_new, и все готово. Целый и невредимый.

То есть при условии, что новый coreutils будет собран на вашем старом glibc:)

Я думаю, что вы можете выполнить задание dd, которое вы хотите, с помощью "seek", не создавая новый coreutils.

ls -l loopfile

Получите размер, разделите на 1024, затем:

dd if=/dev/zero of=loopfile bs=1M seek=1024 count=2048

(это запись в 1M блоков, поэтому пропускает 1G выходных данных, затем добавляет 2G к файлу. Убедитесь, что размер блока равномерно делится на размер файла. Вероятно, вам понадобится размер блока 1k и намного большее число для поиска и подсчета)

Я бы сделал небольшой эксперимент. Вам также может понадобитьсяconv=notrunc".

Другие вопросы по тегам