В качестве варианта я использую следующее:
apt-get -V -s dist-upgrade \
|grep -E "^ .*=>.*" \
|awk 'BEGIN {
ul=sprintf("%*s",40,""); gsub(/ /,"-",ul);
printf "%-30s %-30s %-30s\n", "Package", "Installed", "Available";
printf "%-30.30s %-30.30s %-30.30s\n", ul, ul, ul;
}
{
printf "%-30s %-30s %-30s\n",
$1,
substr($2,2),
substr($4,1,length($4)-1)
}'
Вставьте его в сценарий с именем apt-updates
, и вы можете затем вызвать apt-updates
, чтобы получить список всех обновлений независимо от пользователя.
Вам по-прежнему нужно вызвать apt-get update
с привилегированным доступом.
Позвольте мне бросить кирпич, чтобы привлечь сюда нефрит.
dnf список всех | less
показывает все пакеты (включая установленные и доступные). Вывод состоит из двух разделов: «Установленные пакеты» и «Доступные пакеты». Всем «Установленным пакетам» предшествует знак @, а «Доступным пакетам» нет. Итак, я считаю, что знаки @
показывают, что пакеты установлены. Если пакет установлен, но его исходное репо было удалено, я полагаю, что отображается знак @@
.
Исходный код dnf размещен по адресу https://github.com/rpm-software-management/dnf . После загрузки кода src выполните команду grep в командной строке -ri.
в каталоге и ничего не возвращает. Однако на его странице на github это упоминается
. Он осуществляет управление пакетами с использованием библиотек RPM, libsolv и hawkey.
Я смотрю на hawkey, который размещен в рамках того же проекта, по адресу https://github.com/rpm-software-management/hawkey . Посмотрите его код с помощью командной строки grep -ri.
, он показывает некоторые результаты.
./src/types.h:#define HY_CMDLINE_REPO_NAME "@commandline"
./hawkey.spec:- fix: commandline RPMs do not provide their files (RhBug:1112810) (Ales Kozumplik)
Итак, командная строка
взята из пакета hawkey
. Что касается вопроса, почему @comandline
отображается в команде dnf list
, я предполагаю, что код dnf
не может правильно использовать hawkey
.