Summary: | Метод http пытается создавать файлы неоправданно длинными именами | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Ivan A. Melnikov <iv> |
Component: | apt | Assignee: | placeholder <placeholder> |
Status: | NEW --- | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P5 | CC: | boyarsh, glebfm, imz, ldv, placeholder |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Ivan A. Melnikov
2024-07-24 18:44:39 MSK
Они два раза повторяются для пакетов, подпадающих под Allow-Duplicates. Уникальная версия становится частью имени для таких пакетов (это можно увидеть дополняя аргумент команды install в apt-shell и т.п.), а дальше версия по общей схеме. Получается, можно подумать о том, чтобы при скачивании пакетов из Allow-Duplicates, не повторять эту информацию в имени файла. (И теоретически для сокращения имени файла можно в качестве него использовать какой-нибудь хэш, но тогда оно будет непонятно людям. Правда, это внутреннее дело скорее, не для людей, но иногда их там люди находят и ставят rpm -U. Можно хэш и потом имя сколько влезет.) (In reply to Ivan Zakharyaschev from comment #1) > Получается, можно подумать о том, чтобы при скачивании пакетов из > Allow-Duplicates, не повторять эту информацию в имени файла. (И теоретически > для сокращения имени файла можно в качестве него использовать какой-нибудь > хэш, но тогда оно будет непонятно людям. Правда, это внутреннее дело скорее, > не для людей, но иногда их там люди находят и ставят rpm -U. Можно хэш и > потом имя сколько влезет.) Можно оставить полностью дисттаг, время сборки, версию, а имя пакета в начале имени файла при необходимости сокращать. Тогда по большей части имя файла будет совпадать со старым, но иногда имя пакета будет обрезано. (In reply to Ivan Zakharyaschev from comment #1) > Они два раза повторяются для пакетов, подпадающих под Allow-Duplicates. > Уникальная версия становится частью имени для таких пакетов (это можно > увидеть дополняя аргумент команды install в apt-shell и т.п.) Для истории: это здесь: https://git.altlinux.org/gears/a/apt.git?a=blob;f=apt-pkg/rpm/rpmlistparser.cc;h=8355680ade350a54ac8fb9890fd6f1b99ea6400b#l127 (In reply to Ivan Zakharyaschev from comment #2) > Можно оставить полностью дисттаг, время сборки, версию, а имя пакета в > начале имени файла при необходимости сокращать. Это хорошая мысль. Как я понимаю, окончательно имя файла формируется здесь: https://git.altlinux.org/gears/a/apt.git?p=apt.git;a=blob;f=apt-pkg/acquire-item.cc;h=906eb287dba0e38654330fe7f335c474cb53e5c3#l717 Оно состоит из четырёх компонент: - имя пакета (в терминах apt; для пакетов с Allow-Duplicated это name#evrdt); - строка версии (в терминах apt; с точки зрения rpm это тот самый evrdt); - архитектура - точка и расширение из оригинального URI (.rpm). Именно тут можно проверить, что имя файла оказалась больше 255 (например, NAME_MAX из limits.h; c pathconf(3) я бы не заморачивался), то первый компонент можно сделать короче ровно на столько, чтобы влезло. |