Перечислите дополнительные зависимости с pacman на дуге Linux

Какой демон? Большинство демонов идет с командной строкой или опцией конфигурации отбросить полномочия. Но если Вы ищете универсальный путь, попробуйте:

RUN_AS=my_user
su -c /usr/sbin/my_daemon $RUN_AS
23
28.10.2012, 03:40
6 ответов

Можно использовать expac для запросов pacmanбаза данных.

Что-то как:

awk 'NF>=2' <(expac "%n %O") > optdeps

распечатает список всех установленных пакетов на Вашей машине и optdepends для каждого (%O) 1 в названный файл optdeps. Вы могли затем отсортировать это против списка установленных optdepends пакетов.

Посмотрите man expac для полного списка опций.


1. Это - верхний регистр O, не нуль. Поскольку у нас не может быть шрифта, который различал два...

5
27.01.2020, 19:42
  • 1
    [вводит по абсолютному адресу], у Нас действительно есть такой шрифт теперь. :) –  muru 08.12.2014, 20:35

Это не точно эффективно, но найдет то, что Вы хотите (В ЦВЕТЕ!):

pacman -Q > /tmp/paccache
for pkg in $(awk '{print $1}' /tmp/paccache) ; do 
   echo -n "$pkg => "; 
   for dep in $(pacman -Qi $pkg | awk -F: '/Optional Deps/{gsub(/[\<\>=].*/,"");print $NF;}' ) ; do 
       grep -q "$dep" /tmp/paccache && COLOR=32 ; echo -en "\e[1;${COLOR:-31}m${dep}\e[0;m " ; unset COLOR ; 
   done 
   echo
done 
3
27.01.2020, 19:42
  • 1
    я не совершенно уверен, но не был должен это быть || вместо && после grep, и затем круглые скобки вокруг остальной части строки? –  Rörd 20.11.2012, 23:10
  • 2
    И что еще более важно, это должно, вероятно, использовать раздел "Optional Deps" вместо раздела "Depends On" вывода pacman. Спасибо спутник –  Rörd 21.11.2012, 00:28
  • 3
    Например, с xmms2: pacman -Qi xmms2 | sed -n '/^Optional/,$p' | sed '/^Required/q' | head -n -1 | cut -c19- | cut -d: -f1 –  i336_ 02.03.2016, 04:18

Хотя я должен был заметить, что решение @DarkHeart действительно не работает, оно вдохновило меня делать рабочее. (никакие цвета, хотя)

Я использую запрос пакета, подобный инструмент вместо expac, который был предложен @jasonwryan, потому что у меня уже был он установленный (это - зависимость yaourt). Это должно быть тривиально для изменения этого для использования expac вместо этого.

Список всех дополнительных зависимостей главным образом сделан вызовом к запросу пакета. Первый для цикла удаляет объяснения, поэтому просто названия пакета дополнительных зависимостей остаются; второй для цикла удаляет уже установленные зависимости в своей первой строке прежде, чем распечатать результаты во втором.

#!/usr/bin/perl
use strict;
use warnings;

my %deps;
for (`package-query -Q -f'%n %O'`) {
    $deps{ (/^(\S+)/)[0] } = [/(\S+):/g];
}
my @pkgs = keys %deps;
for my $pkg (@pkgs) {
    my @missing_deps = grep { !($_ ~~ @pkgs) } @{ $deps{$pkg} };
    print "$pkg => @missing_deps\n" if @missing_deps;
}
2
27.01.2020, 19:42

Существует хорошая утилита в эр-репозитории (AUR / PACDEP).

У PACDEP имеет много вариантов - только один пример - узнать дополнительные пакеты для «Thunar-Archive-Plugin»:

> pacdep -oppp thunar-archive-plugin
[...]
Optional dependencies:    6.16 MiB
  extra/file-roller     3.89 MiB
  extra/kdeutils-ark    1.12 MiB
  community/xarchiver   1.16 MiB
[...]

Выходной выше, означает, что ни одна из дополнительных пакетов не установлена. После установки «Xarchiver» вывод выглядит как

[...]
Optional dependencies:    6.16 MiB
 local:    1.16 MiB
  xarchiver            1.16 MiB
 sync:     5.01 MiB
  extra/file-roller    3.89 MiB
  extra/kdeutils-ark   1.12 MiB
[...]

, я нашел (первая часть) Этот ответ на
http://mywaytoarch.tumblr.com/post/34979742718/34979742718/34979742718/24979942718/asly-list-package-dependonds

4
27.01.2020, 19:42

Это должно помочь:

comm -23 <(expac -l"\n" "%o" | sort -u) <(expac -l"\n" "%n\n%S" | sort -u)

Первый ввод в comm перечисляет все необязательные зависимости, второй ввод - все установленные пакеты и их атрибуты 'provide'. Оба списка отсортированы и содержат каждый элемент только один раз из-за sort -u . Затем отображаются только строки, содержащиеся в первом, но не во втором списке.

(отредактировано с учетом предложения @ Archemar)

2
27.01.2020, 19:42

Я пробовал только в GNU sed, но

yay -Qi | sed -n '/Optional Deps/{:l s/.* \([a-zA-Z0-9.\-]\+\):.*/\1/p; n; /Required By/!bl}'

это сработало (Используйте sort/uniq как вам нравится ).

0
27.01.2020, 19:42

Теги

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