Утилита не принимает корректно параметр --cachedir. genpkglist --append --bloat --cachedir=/home/blitzkrieg /repo/adb/noarch classic genpkglist 0.6.0 usage: genpkglist [<options>] <dir> <suffix> options: --index <file> file to write srpm index data to --info <file> file to read update info from --useful-files <file> file to read the list of useful files from --meta <suffix> create package file list with given suffix --no-scan do not scan for useful files --bloat do not strip the package file list. Needed for some distributions that use non-automatically generated file dependencies --append append to the package file list, don't overwrite --progress show a progress bar --cachedir=DIR use a custom directory for package md5sum cache --changelog-since <seconds> save package changelogs; copy changelog entries newer than seconds since the Epoch, and also one preceding entry (if any) genpkglist: //--cachedir=/home/blitzkrieg/RPMS./repo/adb/noarch: No such file or directory
apt-repo add некорректно добавляет локалльный репозиторий, при этом, даже добавив его руками, на него ругается apt-get update. Для p9 это тоже справедливо. Использовать локальный репозиторий даже прописав его руками не получилось. Проблема таже, что была с добавлением обычных репозиториев http, что-то там с в регулярке которая урл парсит криво.
(Ответ для Alexey на комментарий #0) > Утилита не принимает корректно параметр --cachedir. > ... > --cachedir=DIR use a custom directory for package md5sum cache Ошибка ровно в этом месте. genpkglist вообще не умеет опции с параметрами через = , если написать --сachedir DIR , то всё будет хорошо.
В справке о программе именно через =. Вообще кеш бесполезная штука. В отсутствии самих пакетов, закешированные md5 которых там лежат, он становится бесполезным. Т.е. в условиях, когда нужно добавить мд5 новых пакетов кеш просто не используется. И перегенировать метаданные полностью нельзя. Правильнее в качестве кеша использовать некую БД как в убунте, из которой можно генерить метаданные без самих пакетов.
Возник вопрос по результату работы genbasedir. В каталоге после обрабокти появляются файлы .xz и .bz2. Зачем они нужны и когда используются? Вопрос связан с тем, что на данный момент на определенной платформе нет xz и, соответственно, файл xz отсутствует. Но насколько я понял он, как и bz2, apt-get не используется.
(Ответ для Alexey на комментарий #4) > Возник вопрос по результату работы genbasedir. > В каталоге после обрабокти появляются файлы .xz и .bz2. Зачем они нужны и > когда используются? Они используются когда делается apt-get update . > Вопрос связан с тем, что на данный момент на > определенной платформе нет xz и, соответственно, файл xz отсутствует. Простите, а это где такое? 4.1? > Но > насколько я понял он, как и bz2, apt-get не используется. Как раз используется либо файл .xz, а если его нет .bz2. Оказывается, несжатый сейчас не используется совсем. Это ошибка в apt, конечно -- он должен смотреть в несжатый файл если другого нет.
Я использую плагин для artifactory чтобы генерировать метаданные. В контейнер помещен genpkglist+поправленный нужным образом genbasedir. В официальном докер-образе используется busybox симлинк на xz, который не работает как архиватор. Т.е. у меня есть pkglist.classic и pkglist.classic.bz2. При этом все равно скачивается pkglist.classic. Я правильно понял, что если нет .xz, apt-get использует .bz2, а если и его нет, то незапакованный? Кстати было бы чудесно, если бы вместо двух полурабочих утилит genpkglist и genbasedir была одна нормальная genpkglist.
(Ответ для Alexey на комментарий #6) > Я использую плагин для artifactory чтобы генерировать метаданные. В > контейнер помещен genpkglist+поправленный нужным образом genbasedir. В > официальном докер-образе используется busybox симлинк на xz, который не > работает как архиватор. Ясно. > Т.е. у меня есть pkglist.classic и pkglist.classic.bz2. > При этом все равно > скачивается pkglist.classic. Вы уверены, что именно он скачивается? > Я правильно понял, что если нет .xz, apt-get использует .bz2, а если и его > нет, то незапакованный? Нет, он сейчас только .xz и .bz2 умеет скачивать. > Кстати было бы чудесно, если бы вместо двух полурабочих утилит genpkglist и > genbasedir была одна нормальная genpkglist. Вы ошиблись, они обе полностью рабочие и отлично решают свои задачи.
> Вы уверены, что именно он скачивается? неа > Вы ошиблись, они обе полностью рабочие и отлично решают свои задачи. Я не мог ошибиться, я высказывал мнение, а не считал. Мое мнение, как пользователя этого добра, именно такое. Если бы я ошибся, то мне бы не пришлось допиливать второе, для использования первого. И это связано не с некорректным или нетипичным использованием, а с другим мною созданным тикетом. Если есть враппер, то он как минимум не должен лишать того функционала утилиты, вокруг которого этот враппер пляшет.
https://github.com/ktf/apt-rpm/blob/master/tools/genbasedir Вот тут еще 20 лет назад почти ключ --append был.
Где можно взять исходники genpkglist?
С вашего позволения const char *srpm = headerGetString(h, RPMTAG_SOURCERPM); if (srpm == NULL) { cerr << "genpkglist: " << rpm << ": invalid binary package" << endl; headerFree(h); return 1; } Если я правильно понимаю, то если в пакете нет тэга SOURCERPM выдать сообщение invalid binary package. Мб стоит так и писать, что invalid sourcerpm tag?
(Ответ для Alexey на комментарий #10) > Где можно взять исходники genpkglist? http://git.altlinux.org/gears/a/apt-repo-tools.git?p=apt-repo-tools.git;a=tree;h=refs/heads/sisyphus;hb=sisyphus
Есть ли какая-либо возможность удалять записи из сгенерированного genpkglist листа? Перегенерировать каждый раз нет возможности.
apt-repo-tools-0.7.0-alt1 -> sisyphus: Mon Oct 26 2020 Gleb F-Malinovskiy <glebfm@altlinux> 0.7.0-alt1 - Added new options to patch package index. - Added --basedir option to specify base directory name. - genbasedir: added support for zstd-compressed package lists. - genpkglist, gensrclist: + removed --append option; + removed --meta option. - genpkglist: fixed --cachedir description in usage (ALT#38293). - imz@: + (.spec) Just added some compiler flags (which don't change anything) to be sure that APT API has not been used wrongly and will not be. (Namely, to be sure that if a method override was intended, it would actually be overriding and not hiding a virtual method and that it would be marked "override" for future.).