
Есть ли способ узнать, было ли установлено какое-либо приложение через Snap, из PPA, через загруженный deb-файл или из стандартного репозитория?
На данный момент на моем ноутбуке Focal 20.04 установлен Zoom. Я пытаюсь понять, как я изначально его установил, но эта проблема возникает довольно часто. Либо это фирменное приложение (например, Slack или Dropbox) и я хочу его обновить, либо приложение оповещает меня о наличии более новой версии (Keepass) и я хочу еще раз проверить, что я установил из репозитория, и могу просто подождать, пока репозиторий обновится.
Если бы мне пришлось угадывать, я бы сказал, что, скорее всего, я установил Zoom из загруженного .deb
, но я не уверен, как это проверить. Я не думаю, что я установил Slack из .deb
.
Я попытался следовать некоторым предложениям наКак узнать, из какого репозитория получен пакет?apt policy
но результаты неоднозначны. Например , для Slack нет результата:
amanda@rajje:~$ apt policy slack
slack:
Installed: (none)
Candidate: 1:0.15.2-9
Version table:
1:0.15.2-9 500
500 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu focal/universe i386 Packages
Вероятно, потому что я установил его из Ubuntu Software, так что это просто:
Если я пробую apt policy
приложение, с которым я точно не делал никаких манипуляций, я вижу список репозиториев. Могу ли я предположить, что это означает, что я установил из репозитория?
amanda@rajje:~$ apt policy emacs
emacs:
Installed: 1:26.3+1-1ubuntu2
Candidate: 1:26.3+1-1ubuntu2
Version table:
*** 1:26.3+1-1ubuntu2 500
500 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu focal/universe i386 Packages
100 /var/lib/dpkg/status
А если репозиторий не отображается, значит ли это, что я установил его из загруженного пакета?
amanda@rajje:~$ apt policy zoom
zoom:
Installed: 5.0.403652.0509
Candidate: 5.0.403652.0509
Version table:
*** 5.0.403652.0509 100
100 /var/lib/dpkg/status
решение1
Начните с which zoom
или which zoom-client
. Это вернет путь к исполняемому файлу. (Подсказка: tabзавершение — ваш друг)
Все, что начинается с , /snap
было установлено Snap (или Центром приложений Ubuntu), поэтому вы можете узнать больше, открыв Центр приложений или выполнив команду , snap list | grep -i zoom
чтобы получить полное/правильное имя Snap.
Если он начинается с , /usr/bin
то, вероятно, он был установлен с помощью apt
или Synaptic. В этом случае dpkg -l | grep -i zoom
или apt policy zoom*
расскажет вам больше. Посмотрите на фильтр «Установлено (локально или устаревшие)» в Synaptic, чтобы увидеть, apt
было ли что-то установлено локально или через репозиторий.
Вы также можете проверить:
- Flatpak - проверьте с
flatpak list | grep -i zoom
- Убунту Сделать- проверьте с помощью
umake --list-installed
(например, IDE)
решение2
Установите Synaptic Package Manager (вы можете установить его из Ubuntu Software или из командной строки с помощью sudo apt install synaptic
). Это отличный инструмент для управления .deb
пакетами. На главном экране он показывает вам пакеты, разделенные на группы, как вы можете видеть на снимке экрана ниже. Посмотрите на группу под названием «Установленные (локальные или устаревшие)» — это пакеты, которые были установлены из вручную загруженных файлов, а не из репозиториев (некоторые очень важные системные пакеты, такие как libc
, также включены туда). На моем снимке экрана вы можете увидеть zoom
среди этих пакетов.
BTW. В вашем примере Slack программа установлена как snap, а не как .deb
пакет, что можно распознать по наличию "Channel" в начале данных на вашем снимке экрана. Пакеты Snap всегда имеют канал (обычно latest/stable
), а .deb
пакеты - нет. Так что ни apt
Synaptic, ни он не будут знать ничего об этом пакете (фактически, в вашем примере apt policy
показывается информация оне установлен slack
пакет доступен для установки .deb
из репозиториев).
решение3
Прошло много времени с тех пор, как был задан этот вопрос, но я быстро создал скрипт (сегодня утром) для одновременного поиска приложений в репозиториях и Snap, а также для запроса установленного приложения с его исходным кодом.
Если кому-то это будет полезно, вот git-репозиторий: