Первая команда
aptitude search '?and(?installed,?origin(backports))'
находит пакеты, которые установлены и имеют доступный резервный порт , но обратный порт есть не обязательно установлен. (Может быть, backport установлен, а может и нет.)
Напротив, вторая команда
aptitude search '?narrow(?installed,?origin(backports))'
находит пакет, который установлен , , а установленная в настоящее время версия взята из резервного порта, {{1} } т.е. фактически установленные резервные порты. Это более строгий поиск, потому что набор установленных резервных портов является подмножеством доступных резервных портов. { {1}} Вы можете думать об этом так:
все пакеты
установленные пакеты
установленные пакеты с доступным резервным портом (первая команда)
В вашей системе , первая команда возвращает результаты , а вторая ничего не возвращает. Это означает, что вы установили пакеты с доступными обратными портами, но очевидно, что ни один из этих резервных портов в настоящее время не установлен.
Это связано с различием aptitude между соответствием пакету и соответствием версии пакета . От { {1}} документация :
Существует тонкое, но важное различие между сопоставлением шаблона с пакетом и сопоставлением его со всеми версиями этого {{1} } упаковка. Когда шаблон сопоставляется с пакетом, каждый из его терминов сопоставляется с пакетом, и поэтому каждый термин будет соответствовать, если любая версия пакета совпадает. Напротив, когда шаблон сопоставляется с каждой версией пакета, он будет успешно соответствовать, если он совпадает, когда все его термины сопоставляются с той же версией пакета упаковка.
Например: предположим, что версия
3.0-1
пакетаaardvark
установлен, но доступна эта версия4.0-1
. Тогда поисковое выражение? Версия (4 \ .0-1)? Установлен
соответствует трубкозубу, потому что? Версия (4 \ .0-1)
соответствует версии4.0-1
aardvark, а? Installed
соответствует версии3.0-1
. С другой стороны, это выражение не соответствует всем версиямaardvark
, потому что ни одна версия не установлена, а также имеет номер версии4.0 -1
.
? И (шаблон1, шаблон2), шаблон1 шаблон2
Соответствует пакетам, которые соответствуют обоим ] шаблон1 и шаблон2 .
Обратите внимание, что это соответствует пакетам , а не одиночным версиям . Итак, этот запрос:
aptitude search '?and(?installed, ?origin(backports))'
получает список всех версий пакета , которые установлены,
затем список всех версий пакета
с источник, соответствующий регулярному выражению , возвращает
,
, а затем возвращает пакеты , которые появляются в обоих списках.
С другой стороны,
документация
для ? Узкий
гласит:
? Узкий (фильтр, шаблон), ~ S шаблон фильтра
Выберите пакеты, для которых одна версия соответствует как фильтру, так и шаблону.
Вот почему этот запрос показывает только пакеты
, в которых единственная установленная версия имеет источник, который соответствует backports
:
aptitude search '?narrow(?installed, ?origin(backports))'
Имеется связанный обсуждение
для функции ? any-version
:
? any-version (pattern)
Соответствует пакету, если какая-либо из его версий соответствует приложенному шаблону.
Примечание: этот термин тесно связан с
? Узким
. Фактически,? Any-version (шаблон1 шаблон2)
в точности совпадает с? wide (шаблон1, шаблон2)
.Примечание. Чтобы быть точным, как и в случае с любым другим шаблоном, сопоставляются не пакеты, а версии пакетов. Для
поиска aptitude
и других вариантов использования это не имеет большого значения, новерсии aptitude
будут отображать только совпадающие версии, а не все версии пакет, для которого соответствует любая версия .
Запустив версии aptitude
вместо aptitude search
,
мы обнаруживаем, что все эти запросы дают одинаковый результат:
aptitude versions '?and(?installed, ?origin(backports))'
aptitude versions '?installed?origin(backports)'
aptitude versions '?narrow(?installed, ?origin(backports))'
Уф!
Если вы находите язык запросов для aptitude
запутанным (как и я),
вы можете предпочесть другой подход,
например, привязку Python к ] libapt
.
Вместо сопоставления строк версии
вы можете напрямую проверить исходную строку, например:
import apt
apt_cache = apt.Cache()
for pkg in apt_cache:
if pkg.is_installed:
for pkg_origin in pkg.installed.origins:
if pkg_origin.origin == 'Debian Backports':
print(pkg.name)
Это связано с тем, что при обновлении с помощью dist-upgrade вы получаете новую версию NetworkManager. NetworkManager теперь обрабатывает изменения MAC-адреса и поэтому конфликтует со всем, что пытается его изменить. Это может быть полезно для вас, если вы хотите иметь другой MAC-адрес, связанный с сетью. Вы должны изменить файл /etc/NetworkManager/NetworkManager.conf и удалить конфигурацию SSID в /etc/NetworkManager/system-connections после обновления файла конфигурации. Затем, конечно, перезапустите network manager
service network-manager restart
Вы обнаружите, что в этой статье блога описано, как начать работу. Но также прочитайте страницу man, чтобы узнать, какие опции доступны. У меня была та же проблема, которую вы описываете, и теперь macchanger устарел. Я выбираю вариант stable, а не random, но решать вам.