История изменений
Исправление Rootlexx, (текущая версия) :
Вопрос про ‘~o’ остался: как я понял ‘(~i,!~O.*)’ - это все установленные пакеты AND не совпадающие ни с одним origin, a ‘~o’ - это ‘осиротевшие’ установленные пакеты, которые не существуют ни в одном из зарегистрированных в системе репозиториев. Что по моему одно и то же.
Давайте рассмотрим пример. Допустим, мы вручную скачали и установили пакет libfoo 1.1, обновив дистрибутивный libfoo 1.0.
~o
выберет установленные пакеты, не существующие ни в одном репозитории ни в одной из версий. Пакет libfoo установлен, но его версия 1.0 имеет активный источник (репозиторий дистрибутива), поэтому он не попадёт в вывод ~o
.
Далее, рассмотрим ~i!~O.*
. Это выражение состоит из нескольких частей:
-
~i
— выберет пакеты, какая-то версия которых установлена. -
~O.*
— выберет пакеты, какая-то версия которых имеет origin. -
!~O.*
— это отрицание 2., т.е. выберет пакеты, ни одна из версий которых не имеет origin (см. законы де Моргана).
libfoo под это сложное условие не попадёт, поскольку несмотря на то что одна из его версий установлена, существует версия (1.0), которая имеет origin (репозиторий дистрибутива).
?narrow(~i,!~O.*)
же заставляет оба выражения применяться к одной и той же версии, т.е. получаем «какая-то версия пакета установлена, и она же не имеет origin» — теперь libfoo подходит, поскольку установлена версия 1.1, и она не имеет origin.
Исходная версия Rootlexx, :
Вопрос про ‘~o’ остался: как я понял ‘(~i,!~O.*)’ - это все установленные пакеты AND не совпадающие ни с одним origin, a ‘~o’ - это ‘осиротевшие’ установленные пакеты, которые не существуют ни в одном из зарегистрированных в системе репозиториев. Что по моему одно и то же.
Давайте рассмотрим пример. Допустим, мы вручную скачали и установили пакет libfoo 1.1, обновив дистрибутивный libfoo 1.0.
~o
выберет установленные пакеты, не существующие ни в одном репозитории ни в одной из версий. Пакет libfoo установлен, но его версия 1.0 имеет активный источник, поэтому он не попадёт в вывод ~o
.
Далее, рассмотрим ~i!~O.*
. Это выражение состоит из нескольких частей:
-
~i
— выберет пакеты, какая-то версия которых установлена. -
~O.*
— выберет пакеты, какая-то версия которых имеет origin. -
!~O.*
— это отрицание 2., т.е. выберет пакеты, ни одна из версий которых не имеет origin (см. законы де Моргана).
libfoo под это сложное условие не попадёт, поскольку несмотря на то что одна из его версий установлена, существует версия (1.0), которая имеет origin.
?narrow(~i,!~O.*)
же заставляет оба выражения применяться к одной и той же версии, т.е. получаем «какая-то версия пакета установлена, и она же не имеет origin» — теперь libfoo подходит, поскольку установлена версия 1.1, и она же не имеет origin.