Какой демон? Большинство демонов идет с командной строкой или опцией конфигурации отбросить полномочия. Но если Вы ищете универсальный путь, попробуйте:
RUN_AS=my_user
su -c /usr/sbin/my_daemon $RUN_AS
Можно использовать expac для запросов pacman
база данных.
Что-то как:
awk 'NF>=2' <(expac "%n %O") > optdeps
распечатает список всех установленных пакетов на Вашей машине и optdepends
для каждого (%O
) 1 в названный файл optdeps
. Вы могли затем отсортировать это против списка установленных optdepends пакетов.
Посмотрите man expac
для полного списка опций.
1. Это - верхний регистр O, не нуль. Поскольку у нас не может быть шрифта, который различал два...
Это не точно эффективно, но найдет то, что Вы хотите (В ЦВЕТЕ!):
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
||
вместо &&
после grep
, и затем круглые скобки вокруг остальной части строки?
– Rörd
20.11.2012, 23:10
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;
}
Существует хорошая утилита в эр-репозитории (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
Это должно помочь:
comm -23 <(expac -l"\n" "%o" | sort -u) <(expac -l"\n" "%n\n%S" | sort -u)
Первый ввод в comm
перечисляет все необязательные зависимости, второй ввод - все установленные пакеты и их атрибуты 'provide'. Оба списка отсортированы и содержат каждый элемент только один раз из-за sort -u
. Затем отображаются только строки, содержащиеся в первом, но не во втором списке.
(отредактировано с учетом предложения @ Archemar)
Я пробовал только в GNU sed, но
yay -Qi | sed -n '/Optional Deps/{:l s/.* \([a-zA-Z0-9.\-]\+\):.*/\1/p; n; /Required By/!bl}'
это сработало (Используйте sort/uniq как вам нравится ).