Вопрос или проблема
При использовании команды zip я иногда получаю следующую ошибку:
*** обнаружено переполнение буфера ***: завершено
Некоторые имена файлов в материале, который создается резервная копия, содержат одинарные кавычки (код ascii E2 80 99). Это является проблемой только при использовании zip на ubuntu 24.04. На ubuntu 22.04 всё работает.
Я не понимаю, как исправление попадает в обновление программного обеспечения, но, наконец, думаю, что по этой проблеме, а также по более важной проблеме, связанной с такими символами, как немецкий диакритический знак (“ö”), возможно, ведётся работа. Следующее только что появилось в отчете об ошибке 2062535
** Предложение на слияние: https://code.launchpad.net/~zhsj/ubuntu/+source/zip/+git/zip/+merge/475986
Как обходное решение:
- Получите более раннюю версию zip. В моем случае я взял
/usr/bin/zip
из Ubuntu 22.04 - Отложите
/usr/bin/zip
, возможно, как/usr/bin/zip24
- Поместите более старую версию zip в любое место, в моем случае я разместил её в
/usr/local/bin/zip
- Создайте символическую ссылку по адресу
/usr/bin/zip
, указывающую на старую версию.
В моем случае команда (выполненная из директории/usr/bin
) была
ln -s /usr/local/bin/zip zip
Используя эту старую версию, я создал zip-архив, который, разархивированный на 24.04, полностью совпадал с оригинальным материалом – короче говоря, это работает.
В моем случае zip
“спотыкался” о имя файла, содержащего немецкий диакритический знак (“ö”). Я мог переименовать файл, и он снова заработал.
Существует исправленная версия 3.0-14 в архиве Debian: https://packages.debian.org/trixie/zip
Правка: Теперь она также доступна в архивах Ubuntu 24.10: https://launchpad.net/ubuntu/oracular/+source/zip
Просто загрузите deb-файл, соответствующий вашей архитектуре, и установите его.
Ответ или решение
Ошибка переполнения буфера при использовании команды zip в Ubuntu 24.04 из-за одиночной кавычки
Ваша проблема с ошибкой " buffer overflow detected : terminated" при использовании команды zip
в Ubuntu 24.04 действительно вызывает беспокойство. Эта ситуация особенно возникает при наличии в именах файлов символа одиночной кавычки, который имеет код ASCII E2 80 99, а также немецкого умлаута ("ö"). Данная проблема не возникает в предыдущей версии операционной системы – Ubuntu 22.04.
Причины и источники проблемы
Ошибка переполнения буфера, с которой вы столкнулись, может быть связана с определенными изменениями в версии zip
, которая была получена в Ubuntu 24.04. Это может быть изменение в обработке символов, что делает команду zip
уязвимой для определенных символов, таких как указанные выше.
Эта проблема была зафиксирована в отчете об ошибках (bug report) 2062535, где обсуждается необходимость исправления как для одиночной кавычки, так и для других символов, таких как немецкий умлаут. В связи с этим, уже существует предложение по слиянию, которое можно найти по следующему адресу: Merge proposal.
Временное решение
В качестве временного решения вы можете использовать более раннюю версию zip
, которая работает корректно в вашей ситуации. Для этого выполните следующие шаги:
-
Получите более раннюю версию
zip
, и, как вы упомянули, можно использоватьzip
из Ubuntu 22.04:cp /usr/bin/zip /usr/bin/zip24
-
Поместите старую версию
zip
в подходящее место. В вашем случае:mv /usr/bin/zip /usr/local/bin/zip
-
Создайте символическую ссылку на старую версию, чтобы команда
zip
всегда ссылалась на нее:ln -s /usr/local/bin/zip /usr/bin/zip
После выполнения этих шагов вы сможете использовать zip
без возникновения ошибок при наличии проблемных символов в именах файлов.
Долгосрочное решение
Предоставляется информация о том, что исправленная версия zip
(3.0-14) доступна в архиве Debian, и можно установить ее через следующие ссылки:
Для установки просто загрузите соответствующий .deb
файл для вашей архитектуры и используйте следующую команду:
sudo dpkg -i name_of_downloaded_package.deb
Заключение
Ваша проблема с переполнением буфера в утилите zip
на Ubuntu 24.04, вызванная определенными символами в именах файлов, может временно быть решена путём использования более ранней версии утилиты или установкой фиксированной версии из архивов. Рекомендуется следить за обновлениями в репозиториях и в баг-трекерах, чтобы получить окончательное исправление проблемы, так как разработчики работают над её устранением.