Pkglist-query: различия между версиями
(нач из почты) |
м (код тоже помельче) |
||
Строка 14: | Строка 14: | ||
Исходник утилиты <tt>[http://git.altlinux.org/gears/a/apt-repo-tools.git?p=apt-repo-tools.git;a=blob;f=pkglist-query.cc;hb=HEAD pkglist-query]</tt> должен собираться с любой доступной версией librpm (спасибо [https://bugzilla.altlinux.org/show_bug.cgi?id=14449#c22 at@], legion@, glebfm@): | Исходник утилиты <tt>[http://git.altlinux.org/gears/a/apt-repo-tools.git?p=apt-repo-tools.git;a=blob;f=pkglist-query.cc;hb=HEAD pkglist-query]</tt> должен собираться с любой доступной версией librpm (спасибо [https://bugzilla.altlinux.org/show_bug.cgi?id=14449#c22 at@], legion@, glebfm@): | ||
<small> | |||
<pre> | <pre> | ||
// g++ pkglist-query.cc -o pkglist-query -lrpm -lrpmio | // g++ pkglist-query.cc -o pkglist-query -lrpm -lrpmio | ||
Строка 59: | Строка 60: | ||
// ex:set ts=8 sts=4 sw=4 noet: | // ex:set ts=8 sts=4 sw=4 noet: | ||
</pre> | </pre> | ||
</small> | |||
[[Категория:Branches]] | [[Категория:Branches]] | ||
[[en:pkglist-query]] | [[en:pkglist-query]] |
Текущая версия от 14:59, 17 августа 2019
Доступ к метаданным репозиториев ALT можно получить напрямую таким образом:
wget -qO- http://ftp.altlinux.org/pub/distributions/ALTLinux/p9/branch/x86_64/base/pkglist.classic.xz | unxz > pkglist.classic wget -qO- http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/aarch64/base/srclist.classic.xz | unxz > srclist.classic pkglist-query '%{name}-%{version}-%{release}.%{arch}.rpm\n' pkglist.classic pkglist-query '%{name}-%{version}-%{release}.src.rpm\n' srclist.classic
Исходник утилиты pkglist-query должен собираться с любой доступной версией librpm (спасибо at@, legion@, glebfm@):
// g++ pkglist-query.cc -o pkglist-query -lrpm -lrpmio #include <stdio.h> #include <rpm/header.h> int main(int argc, char *argv[]) { const char *progname = argv[0]; if (argc < 3) { fprintf(stderr, "Usage: %s <format> <pkglist>...\n", progname); return 2; } const char *format = argv[1]; int rc = 0; const char *pkglist; int ix = 2; while ((pkglist = argv[ix++]) != NULL) { FD_t Fd = Fopen(pkglist, "r.ufdio"); if (Ferror(Fd)) { fprintf(stderr, "%s: %s: %s\n", progname, pkglist, Fstrerror(Fd)); rc = 1; continue; } Header h; while ((h = headerRead(Fd, HEADER_MAGIC_YES)) != NULL) { const char *err = "unknown error"; char *str = headerFormat(h, format, &err); if (str == NULL) { rc = 1; fprintf(stderr, "%s: %s: %s\n", progname, pkglist, err); } else { fputs(str, stdout); free(str); } headerFree(h); } Fclose(Fd); } return rc; } // ex:set ts=8 sts=4 sw=4 noet: