Перечислите все RPM-пакеты, установленные от repo “X”

Решение для Mac OS X. Выполните эти 2 шага:

  1. Используйте обходное решение Chris Johnsen: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard

  2. Добавьте этот код к своей конфигурации tmux (~/.tmux.conf)

# paste clipboard into tmux buffer
bind v run-shell "reattach-to-user-namespace -l zsh -c 'tmux set-buffer \\"$(pbpaste)\\"; tmux paste-buffer'"
# put tmux buffer into x clipboard
bind y run-shell "reattach-to-user-namespace -l zsh -c 'tmux show-buffer | pbcopy'"

46
15.07.2015, 20:48
7 ответов

CentOS / RHEL / Fedora 22 или ранее

yum list installed | grep @epel

Fedora 23 или позже

dnf list installed | grep @epel
45
27.01.2020, 19:34
  • 1
    Это не будет работать. Конфетка произведет строки к каналу, который будет поврежден, если они станут слишком длинными. Таким образом, вход grep является главным образом одной строкой на пакет, но это могли быть две строки. Конфетка могла передать "whizbanger.x86_64 ___ 3.8.4-2.el6 _______________ @epel". (Вообразите символы нижнего подчеркивания как пробелы.) "@epel" находится на следующей строке входа grep, видит. Таким образом, grep собирается произвести ту строку с только "@epel", но не предыдущую строку с именем пакета. –  Todd Walton 07.03.2017, 18:09
  • 2
    Вы, возможно, должны выполнить те команды как корень, пока bugzilla.redhat.com/show_bug.cgi?id=1525645 не исправлен. –  proski 13.12.2017, 21:27

Вы могли проверить Vendor заголовок установленного rpms.

Этот пример перечисляет весь пакет из репозитория VideoLAN:

 rpm -q -a --qf "%{Name}:%{Vendor}\n" \
     | grep -F ":VideoLAN Project (http://www.videolan.org)"

Очевидно, необходимо определить если Vendor заголовок Вашего репозитория уникален среди различных репозиториев.

1
27.01.2020, 19:34
  • 1
    Нет непосредственного отображения между Поставщиком и repos, и в некоторых случаях, Строка поставщика является пробелом. –  Lorin Hochstein 13.10.2011, 19:36

Начиная с RHEL6, как было предложено в в ответе на вопрос о переполнении стека , есть более тщательный способ сделать это с yumdb:

yumdb search from_repo REPOID*

Репоид берет wild cards.

Pretty-print

Если мы собираемся обмануть и пропустить вывод, то мы можем достичь эффекта красивого отпечатка также и в этом случае. Для этого используйте awk

yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'

, используя egrep или grep -e

yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'

list_ALL_AVAILABLE_from_repo

Чтобы перечислить все доступные пакеты в указанном репозитории, сделайте:

repoquery -a --repoid=REPONAME
17
27.01.2020, 19:34

Вывод Grepping Yum является наиболее очевидным способом:

yum list installed | grep @epel

Однако вы не можете отображать дополнительные свойства пакетов, и его трудно разобраться с скриптом. Инструмент repoquery из пакета yum-utils - это инструмент, но он не устанавливается по умолчанию.

repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'

И более сложный пример:

repoquery -a --installed --qf "%-20{ui_from_repo} %-30{name} %-7{arch} %{epoch}:%-12{version} %-4{release}" | grep '^@epel'
3
27.01.2020, 19:34
dnf repo-pkgs <repoid> list installed

Примечания

Команда выше использует DNF для списка пакетов, установленных из . Обратите внимание, что repo-pkgs - это просто псевдоним repository-packages.

Со страниц man:

man dnf | grep "repository-packages.*list.*installed" -A 1

Дальнейшее чтение:

man dnf
12
27.01.2020, 19:34

Для тех, кто просто хочет найти пропавшие репозитории:

yum list installed | awk '{print $3}' | sort | uniq

Это должно вернуть все репозитории, из которых у вас установлены пакеты.

1
27.01.2020, 19:34

Сервер RHEL 7.5 (Майпо)

yum repo-pkgs <repoid> list installedможно использовать для получения той же информации, что и yumdb search from_repo <repoid>, но в другом формате.

# yum help repo-pkgs
repo-pkgs <repoid> <list|info|install|remove|upgrade|reinstall*|remove-or-*> [pkg(s)]

Treat a repo. as a group of packages, so we can install/remove all of them

aliases: repo-packages, repository-pkgs, repository-packages

Пример epelвыходных данных:

# yumdb search from_repo epel
htop-2.2.0-1.el7.x86_64
    from_repo = epel

supervisor-3.1.4-1.el7.noarch
    from_repo = epel


# yum repo-pkgs epel list installed
Installed Packages
htop.x86_64            2.2.0-1.el7          @epel
supervisor.noarch      3.1.4-1.el7          @epel
3
27.01.2020, 19:34

Теги

Похожие вопросы