(Отказ от ответственности: я не могу предоставить источники ни для чего из этого, потому что я никогда не видел никакой документации, которая на самом деле обсуждает эти вещи. Информация, которой я должен следовать, - это просто то, что мне удалось выяснить с помощью осмотра, экспериментов с «черным ящиком», случайных действий. Метод проб и ошибок и простые старые догадки. Кроме того, справедливое предупреждение, это слишком многозначительно до такой степени, что слишком долго.)
DNF добавляет @ для обозначения репо установлен пакет был установлен с , в dnf list
контексте. Как вы заметили:
В моей системе установлено несколько пакетов из репозитория @System, @fedora (однако есть также fedora без @) и таких вещей, как @@ commandline.
Но на самом деле вы никогда не увидите ни одного пакета, входящего fedora
в установленный список, так как каждый пакет показывает некоторый @ -repo в качестве источника. (Вы можете проверить это, запустив sudo dnf list installed
и проверив ; в списке нет репозиториев без хотя бы одного знака @.) Когда вы просматриваете информацию о пакете с помощью dnf info
, в From repo:
поле « » будет отображаться имя репо без @
. (Так что " From repo: fedora
" абсолютно возможно, и эквивалентно @fedora
в установленном списке.)
Но некоторые репо названы со @
знаком на передней панели. Как обнаружил ДжонКоч в источниках «Ястреба», «@commandline» определяется как «имя репо» для «репо командной строки». Таким образом, @@commandline
в dnf list
листинге просто указывается установленный пакет From repo: @commandline
, репо, которому до степени смешения было присвоено имя, начинающееся со своего @ -знака.
dnf info
на любом установленном пакете покажет Repository: @System
, какой @
виртуальный репозиторий называется другим . Похоже, что @System
это виртуальное репо, содержащее набор установленных в данный момент пакетов, и @commandline
виртуальное репо-источник, откуда поступил пакет, когда он не поступил из какого-либо репо.
Смысл @commandline
и @System
, и их отношения друг к другу, похоже, изменились с тех пор, как я впервые написал этот ответ. В некотором смысле он более последовательный и рассматривает некоторые из моих предыдущих возражений о том, как @commandline
это используется. Я больше не вижу каких - либо установленных пакетов , перечисленных как из @@System
, и вне зоны Установок действительно теперь показывают From repo: @commandline
( @@commandline
в контексте списка). dnf info
на внешнем установленном пакете обычно отображается что-то вроде следующего:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : @commandline
Если я сделаю dnf reinstall remi-release
(потому что пакет находится в remi
репо), он изменится на:
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : remi
Еще одна вещь об исходных репо: репо, перечисленные в From repo:
поле, всегда являются репо, которые существуют в текущем контексте репо . Другими словами, источник установки пакета - это не просто строка, содержащая имя репозитория; Установленные пакеты связаны с идентификацией репо-провайдера, поскольку он существует (или существовал) в системе.
Поскольку большинство репозиториев имеют дистрибутивную версию, они переопределяются с каждым новым выпуском Fedora. (Как, например, « fedora
» репо становится набором пакетов, составляющих новый выпуск, полностью отличным от « fedora
» репозитория, существовавшим в предыдущем выпуске.) Таким образом, всякий раз, когда выполняется обновление системы, множество старых идентификаторов репо получить недействительным.
DNF (или hawkey) используется для отправки пакетов, установленных из репозиториев, которые больше не существуют, в @commandline
качестве их репо-источника. Я говорю "привык", потому что это (к счастью) больше не сделано. Установленные пакеты из репо, который больше не существует, больше не будут показывать свой источник как @@commandline
/ From repo: @commandline
. На самом деле, dnf info
показывает , что они больше не имеют какой - либо источник репо. Например, sitecopy
был пакет Fedora, который с тех пор был удален. Я установил его из fedora
или updates
репо 7 или 8 выпусков назад, и все еще установил:
$ dnf info sitecopy
Installed Packages
Name : sitecopy
Version : 0.16.6
Release : 14.fc22
Architecture : x86_64
Size : 373 k
Source : sitecopy-0.16.6-14.fc22.src.rpm
Repository : @System
Там нет " From repo:
" в списке.
Это означает, что этот пакет (и другие подобные) dnf list installed
покажет (один ) рядом с ним. Таким образом, в некотором смысле мы просто обменяли одно несоответствие на другое, так как этот столбец больше не всегда является исходным репо с добавленным. Тем не менее, я предпочитаю текущее положение дел.@System
@
@
Сноски
- «... тот, который показан ...»
(иногда показывается. «Доступные пакеты» не обязательно будут отображаться при каждом dnf list
запуске: если установленная версия пакета является лучшей доступной версией, она указана в разделе «Установленные пакеты»). поэтому было бы излишним также указывать его в разделе «Доступные пакеты». Использование
--showduplicates
приведет к созданию раздела «Доступные пакеты», который включает все известные экземпляры, независимо от версии, установленной или загружаемой.)
dnf
невероятно молчит об этом. Предположим, «@» обозначает установленный пакет, означает ли «@@», что он установлен вручную из источника без репо, возможно? Я бы очень хотел, чтобы кто-то разъяснил.