Bug 38293 - genpkglist --help: неправильное описание опции --cachedir
Summary: genpkglist --help: неправильное описание опции --cachedir
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: apt-repo-tools (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Gleb F-Malinovskiy
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-03-28 17:05 MSK by Alexey
Modified: 2020-11-04 17:07 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey 2020-03-28 17:05:34 MSK
Утилита не принимает корректно параметр --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
Comment 1 Alexey 2020-03-28 17:08:34 MSK
apt-repo add некорректно добавляет локалльный репозиторий, при этом, даже добавив его руками, на него ругается apt-get update.
Для p9 это тоже справедливо. 
Использовать локальный репозиторий даже прописав его руками не получилось.
Проблема таже, что была с добавлением обычных репозиториев http, что-то там с в регулярке которая урл парсит криво.
Comment 2 Gleb F-Malinovskiy 2020-03-30 12:01:59 MSK
(Ответ для Alexey на комментарий #0)
> Утилита не принимает корректно параметр --cachedir.
> 
...
>  --cachedir=DIR  use a custom directory for package md5sum cache

Ошибка ровно в этом месте.  genpkglist вообще не умеет опции с параметрами через = , если написать --сachedir DIR , то всё будет хорошо.
Comment 3 Alexey 2020-03-30 18:00:17 MSK
В справке о программе именно через =.
Вообще кеш бесполезная штука. В отсутствии самих пакетов, закешированные md5 которых там лежат, он становится бесполезным. Т.е. в условиях, когда нужно добавить мд5 новых пакетов кеш просто не используется. И перегенировать метаданные полностью нельзя. Правильнее в качестве кеша использовать некую БД как в убунте, из которой можно генерить метаданные без самих пакетов.
Comment 4 Alexey 2020-04-07 10:17:44 MSK
Возник вопрос по результату работы genbasedir.
В каталоге после обрабокти появляются файлы .xz и .bz2. Зачем они нужны и когда используются? Вопрос связан с тем, что на данный момент на определенной платформе нет xz и, соответственно, файл xz отсутствует. Но насколько я понял он, как и bz2, apt-get не используется.
Comment 5 Gleb F-Malinovskiy 2020-04-07 11:02:32 MSK
(Ответ для Alexey на комментарий #4)
> Возник вопрос по результату работы genbasedir.
> В каталоге после обрабокти появляются файлы .xz и .bz2. Зачем они нужны и
> когда используются?

Они используются когда делается apt-get update .

> Вопрос связан с тем, что на данный момент на
> определенной платформе нет xz и, соответственно, файл xz отсутствует.

Простите, а это где такое?  4.1?

> Но
> насколько я понял он, как и bz2, apt-get не используется.

Как раз используется либо файл .xz, а если его нет .bz2.  Оказывается, несжатый сейчас не используется совсем.  Это ошибка в apt, конечно -- он должен смотреть в несжатый файл если другого нет.
Comment 6 Alexey 2020-04-07 11:15:41 MSK
Я использую плагин для artifactory чтобы генерировать метаданные. В контейнер помещен genpkglist+поправленный нужным образом genbasedir. В официальном докер-образе используется busybox симлинк на xz, который не работает как архиватор.
Т.е. у меня есть pkglist.classic и pkglist.classic.bz2. При этом все равно скачивается pkglist.classic.
Я правильно понял, что если нет .xz, apt-get использует .bz2, а если и его нет, то незапакованный?

Кстати было бы чудесно, если бы вместо двух полурабочих утилит genpkglist и genbasedir была одна нормальная genpkglist.
Comment 7 Gleb F-Malinovskiy 2020-04-07 11:19:14 MSK
(Ответ для Alexey на комментарий #6)
> Я использую плагин для artifactory чтобы генерировать метаданные. В
> контейнер помещен genpkglist+поправленный нужным образом genbasedir. В
> официальном докер-образе используется busybox симлинк на xz, который не
> работает как архиватор.

Ясно.

> Т.е. у меня есть pkglist.classic и pkglist.classic.bz2.
> При этом все равно
> скачивается pkglist.classic.

Вы уверены, что именно он скачивается? 

> Я правильно понял, что если нет .xz, apt-get использует .bz2, а если и его
> нет, то незапакованный?

Нет, он сейчас только .xz и .bz2 умеет скачивать.

> Кстати было бы чудесно, если бы вместо двух полурабочих утилит genpkglist и
> genbasedir была одна нормальная genpkglist.

Вы ошиблись, они обе полностью рабочие и отлично решают свои задачи.
Comment 8 Alexey 2020-04-07 15:52:47 MSK
> Вы уверены, что именно он скачивается? 
неа

> Вы ошиблись, они обе полностью рабочие и отлично решают свои задачи.

Я не мог ошибиться, я высказывал мнение, а не считал.
Мое мнение, как пользователя этого добра, именно такое.
Если бы я ошибся, то мне бы не пришлось допиливать второе, для использования первого. И это связано не с некорректным или нетипичным использованием, а с другим мною созданным тикетом.
Если есть враппер, то он как минимум не должен лишать того функционала утилиты, вокруг которого этот враппер пляшет.
Comment 9 Alexey 2020-04-09 21:32:59 MSK
https://github.com/ktf/apt-rpm/blob/master/tools/genbasedir

Вот тут еще 20 лет назад почти ключ --append был.
Comment 10 Alexey 2020-04-10 09:22:34 MSK
Где можно взять исходники genpkglist?
Comment 11 Alexey 2020-04-10 09:35:34 MSK
С вашего позволения

      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?
Comment 12 Andrey Cherepanov 2020-04-10 11:31:01 MSK
(Ответ для 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
Comment 13 Alexey 2020-04-22 11:46:55 MSK
Есть ли какая-либо возможность удалять записи из сгенерированного genpkglist листа?
Перегенерировать каждый раз нет возможности.
Comment 14 Repository Robot 2020-11-04 17:07:08 MSK
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.).