Существует ли метод или команда, которые могут определить, из какого репозитория поступает пакет?
Используйте следующую команду. Он имеет лучшую производительность:
apt-cache policy <Package Name>
Для Ubuntu 16.04 и более поздних версий есть более короткий способ сделать это:
apt policy <Package Name>
Редактировать:
Проверьте сабы ответ. Выглядит немного проще!
Оригинал:
Необходимые команды:
-
dpkg -s <package>
- позволяет вам найти версию, которую вы установили. (источник) -
apt-cache showpkg <package>
- покажет список доступных версий пакета. Для каждой версии будет указан исходный код пакета в виде имени индексного файла.
Если вы хотите найти исходный код пакета, который установлен в данный момент, вам понадобятся выходные данные dpkg -s <package>
. В противном случае вы можете просто просмотреть последнюю версию, выведенную с помощью apt-cache showpkg <package>
.
Пример:
$ dpkg -s lifereaPackage: lifereaStatus: install ok installedPriority: optionalSection: webInstalled-Size: 760Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>Architecture: i386Version: 1.6.2-1ubuntu6...$ apt-cache showpkg lifereaPackage: lifereaVersions: 1.6.2-1ubuntu6.1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages) Description Language: File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages MD5: 557b0b803b7ed864e6d14df4b02e3d261.6.2-1ubuntu6 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages) (/var/lib/dpkg/status) Description Language: File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages MD5: 557b0b803b7ed864e6d14df4b02e3d26...
Из первой команды я вижу, что установлена Liferea версии 1.6.2-1ubuntu6. Из второй команды я вижу, что эта версия указана в /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
.
Без особых усилий я могу сделать вывод, что исходная строка содержит archive.ubuntu.com
, ubuntu
, lucid
, и main
.
И, конечно же, мой /etc/apt/sources.list
содержит следующую строку.
deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse
apt
в Ubuntu 16.04+
Рядом apt-cache policy
, showpkg
и show
, теперь у нас есть более простой, с легко запоминающимися подкомандами: apt
[1] [2] (не путайте с классическим apt-*
):
apt policy <package>
Или альтернативный вариант с дополнительной информацией apt show <package>
, строка , начинающаяся с "ПОДХОДЯЩИЕ источники:".
Описание: Этот пакет предоставляет инструменты командной строки для поиска и управления, а также запроса информации о пакетах в качестве низкоуровневого доступа ко всем функциям библиотеки libapt-pkg. Это включает в себя:apt-get
, apt-cache
, apt-cdrom
, apt-config
, apt-key
.
Предупреждение: apt
не имеет стабильного интерфейса CLI. Используйте с осторожностью в сценариях.
Основные команды из apt --help
Другие также легко запоминающиеся подкоманды:
apt list
– список пакетов на основе имен пакетовapt search
– поиск в описаниях пакетовapt show
– показать детали упаковкиapt update
– обновление списка доступных пакетовapt install
– установка пакетовapt remove
– удаление пакетовapt purge
– удаление пакетов и конфигурационные файлы:При удалении пакета удаляются все упакованные данные, но обычно остаются небольшие (измененные) файлы конфигурации пользователя на случай, если удаление произошло случайно. Простая отправка запроса на установку для случайно удаленного пакета в этом случае восстановит его прежнюю функцию. С другой стороны, вы можете избавиться от этих остатков, вызвав purge даже для уже удаленных пакетов. Обратите внимание, что это не влияет на какие-либо данные или конфигурацию, хранящиеся в вашем домашнем каталоге.
sudo apt purge $(dpkg -l | grep "^rc" | awk '{print $2}')
apt upgrade
– обновите систему, установив / обновив пакетыapt full-upgrade
– обновите систему, удалив / установив / обновив пакетыapt edit-sources
– отредактируйте файл исходной информации
К сожалению, эта информация не записывается во время установки пакета. Вы можете сделать приличное предположение, если репозиторий все еще находится в списке источников и в репозитории все еще есть пакет:
grep -l PKG /var/lib/apt/lists/*
Даже synaptic не может определить, отключаете ли вы репозиторий и обновляете.
sudo grep *packagename* /var/lib/apt/lists/* | grep "Filename:"
Это двусмысленно. Вы имеете в виду: какие в настоящее время включенные репозитории предоставляют пакет с заданным именем или: какой репозиторий использовался для установки пакета с этим именем, который установлен в данный момент? (И то, и другое полезно. Я ищу последнее, а не первое.)
@ReinierPost Если вы знаете, какие включенные репозитории предоставляют пакет, вы можете определить, какой из них использовался, основываясь на версии пакета, предоставляемого каждым репозиторием. Если вы не уверены, какая версия установлена, запустите `dpkg -l <имя пакета> | awk '/^ii/{print $3}"