Intereting Posts
Почему файлы конфигурации X-сервера переместились из / etc / Xorg в / usr / share / Xorg? Используйте Emulated Scrollwheel вместо Real One X11 Будет ли учетная запись заблокирована при входе в режим FTP на удаленный сервер, пароль которого уже истек в UNIX Как разобрать XML в CSV с помощью сценария оболочки? Попытка запустить программу, которая требует X11-сервера на безголовой установке Raspbian Как вырезать (выбрать) поле из подсчета строки строки с конца? CentOS 6 связывает связь, круговое развертывание вместо активной резервной копии, дублирует кадры Не удалось загрузить новую установку FreeBSD 8.2 на Intel SS4200-EHW Безопасны ли sudo и gksudo? Установка времени через GPS-ключ Идеальная ширина столбцов меньше Очистка папок, за исключением файлов определенного типа предотвращение перезапуска вывода терминала с помощью вывода программы В vim, как вы выполняете команду молча в фоновом режиме? Shift-стрелка не работает в emacs в tmux

Как определяется желаемый статус в диспетчере пакетов Debian?

Например, если я запустил следующую команду dpkg -l '*compiz*' вывод будет следующим:

 Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-==============-============-============-================================= pi compiz 1:0.9.12.2+1 all OpenGL window and compositing man ii compiz-core 1:0.9.12.2+1 amd64 OpenGL window and compositing man un compiz-core-ab <none> <none> (no description available) [more output deleted] 

Результат немного загадочный. Существует несколько подробных объяснений на StackExchange, из которых, например , один. Аналогично, man dpkg и man dpkg-query дают похожие объяснения.

Первый символ в первом поле, 'p', в нашем примере выше, указывает желаемый статус пакета. Каков статус, который система упаковки считает, что пакет должен быть включен.

Каково основное значение желаемого статуса? Т.е. почему система управления упаковкой имеет представление о том, какой статус должен быть в пакете? Я мог видеть, что интеллектуальная система будет рекомендовать (или желать) пакет, который будет очищен, если бы он использовался только как зависимость от уже удаленного родительского пакета. Однако в нашем примере это не так.

В нашем примере установлен пакет compiz, однако dpkg считает, что его следует очистить или, по крайней мере, желательно, чтобы пакет был очищен, почему это? Более того, как эта конкретная область работает в целом? Т.е. как система решает «желаемый статус» для пакета и каковы основные причины этой функциональности?

Это не то, что система упаковки «думает» о желаемом статусе.

Это то, что вы, или кто-то еще, СКАЗАЛ, что это должно быть – например, с помощью программы, например aptitude или synaptic , или даже простой утилиты, такой как apt-mark .

Он будет очищен в следующий раз, когда apt-get dselect-upgrade , apt-get dist-upgrade , aptitude full-upgrade или аналогичный.

apt отлично подходит для разрешения зависимостей, но он не «умный», и он не принимает таких решений для вас. Он пытается сделать то, о чем вы сказали, насколько это возможно. Обычно это Just Works. Иногда это происходит либо из-за того, что конфликты не могут быть разрешены автоматически, а иногда, когда вы запускаете их, он предлагает удалить сотни пакетов, которые вы не хотите, так что вам нужно сказать «нет». В подобных случаях вам придется решить проблему самостоятельно (с помощью таких инструментов, как aptitude ).

Если вы хотите изменить желаемый статус пакета compiz , вы можете запустить что-то вроде:

 apt-mark install compiz 

Примечание : как всегда бывает с пакетами, это будет взаимодействовать с зависимостями и конфликтами других пакетов. Если, например, он получил этот статус p потому что вы использовали aptitude для отметки другого установленного пакета, который конфликтует с compiz, тогда это создает конфликт зависимости, который должен быть разрешен при запуске apt-get dist-upgrade .