Вопрос или проблема
lsb_release -a
возвращает 16.04.3:
# lsb_release -a
Нет доступных модулей LSB.
ID дистрибьютора: Ubuntu
Описание: Ubuntu 16.04.3 LTS
Версия: 16.04
Кодовое имя: xenial
в то время как uname -a
возвращает 16.04.2
# uname -a
Linux u1b 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Какой из них правильный?
Я полагаю, это может указывать на проблему в моей системе, так как когда я запускаю apt-get -f install
, я получаю ошибки, которые говорят о том, что “у вас установлена более новая версия, но мне нужна более старая версия”, и наоборот:
# apt -f install
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение состояния информации... Готово
Исправление зависимостей... не удалось.
Следующие пакеты имеют неудовлетворенные зависимости:
ghostscript:i386 : Зависит: gsfonts:i386 (>= 6.0-1), но он не может быть установлен
ghostscript-dbg : Зависит: libgs9 (= 9.18~dfsg~0-0ubuntu2.6), но установлен 9.18~dfsg~0-0ubuntu2.7 или
ghostscript (= 9.18~dfsg~0-0ubuntu2.6) или
ghostscript-cups (= 9.18~dfsg~0-0ubuntu2.6), но он не может быть установлен или
ghostscript-x (= 9.18~dfsg~0-0ubuntu2.6), но он не может быть установлен
libaudit1 : Прерывает: libaudit1:i386 (!= 1:2.4.5-1ubuntu2.1), но установлен 1:2.4.5-1ubuntu2
libaudit1:i386 : Прерывает: libaudit1 (!= 1:2.4.5-1ubuntu2), но установлен 1:2.4.5-1ubuntu2.1
libblkid1 : Прерывает: libblkid1:i386 (!= 2.27.1-6ubuntu3.4), но установлен 2.27.1-6ubuntu3.3
libblkid1:i386 : Прерывает: libblkid1 (!= 2.27.1-6ubuntu3.3), но установлен 2.27.1-6ubuntu3.4
libcupsfilters1 : Прерывает: libcupsfilters1:i386 (!= 1.8.3-2ubuntu3.3), но установлен 1.8.3-2ubuntu3.1
libcupsfilters1:i386 : Прерывает: libcupsfilters1 (!= 1.8.3-2ubuntu3.1), но установлен 1.8.3-2ubuntu3.3
libgs9 : Зависит: libjbig2dec0 (>= 0.11), но он не установлен
libgs9:i386 : Зависит: libgs9-common:i386 (>= 9.18~dfsg~0), но он не может быть установлен
libmount1 : Прерывает: libmount1:i386 (!= 2.27.1-6ubuntu3.4), но установлен 2.27.1-6ubuntu3.3
libmount1:i386 : Прерывает: libmount1 (!= 2.27.1-6ubuntu3.3), но установлен 2.27.1-6ubuntu3.4
libseccomp2 : Прерывает: libseccomp2:i386 (!= 2.3.1-2.1ubuntu2~16.04.1), но установлен 2.2.3-3ubuntu3
libseccomp2:i386 : Прерывает: libseccomp2 (!= 2.2.3-3ubuntu3), но установлен 2.3.1-2.1ubuntu2~16.04.1
libuuid1 : Прерывает: libuuid1:i386 (!= 2.27.1-6ubuntu3.4), но установлен 2.27.1-6ubuntu3.3
libuuid1:i386 : Прерывает: libuuid1 (!= 2.27.1-6ubuntu3.3), но установлен 2.27.1-6ubuntu3.4
python : Предварительно зависит: python-minimal (= 2.7.11-1), но установлен 2.7.12-1~16.04
Зависит: libpython-stdlib (= 2.7.11-1), но установлен 2.7.12-1~16.04
systemd-shim:i386 : Зависит: cgmanager:i386 (>= 0.32), но он не может быть установлен
E: Ошибка, pkgProblemResolver::Resolve сгенерировал нарушения, это может быть вызвано удерживаемыми пакетами.
E: Невозможно исправить зависимости
И если это действительно проблема, как я могу ее исправить?
ИЗМЕНЕНИЕ: Вывод команды apt-cache policy ghostscript-dbg
следующий:
ghostscript-dbg:
Установлено: 9.18~dfsg~0-0ubuntu2.6
Кандидат: 9.18~dfsg~0-0ubuntu2.7
Версия:
9.18~dfsg~0-0ubuntu2.7 500
500 http://192.168.12.61/ubuntu xenial-security/main amd64 Packages
*** 9.18~dfsg~0-0ubuntu2.6 100
100 /var/lib/dpkg/status
9.18~dfsg~0-0ubuntu2 500
500 http://192.168.12.61/ubuntu xenial/main amd64 Packages
Источник – это зеркала Ubuntu, которое я настроил. Файл /etc/apt/sources.list
содержит следующее:
deb [arch=amd64] http://192.168.12.61/ubuntu/ xenial main restricted multiverse universe
deb [arch=amd64] http://192.168.12.61/ubuntu/ xenial-security main restricted multiverse universe
deb [arch=amd64] http://192.168.12.61/ubuntu/ xenial-updates main restricted multiverse universe
deb [arch=amd64] http://192.168.12.61/ubuntu/ xenial-proposed main restricted multiverse universe
deb [arch=amd64] http://192.168.12.61/ubuntu/ xenial-backports main restricted multiverse universe
ИЗМЕНЕНИЕ 2: Вывод команды sudo apt install ghostscript-dbg=9.18~dfsg~0-0ubuntu2.7
:
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение состояния информации... Готово
Возможно, вы захотите выполнить 'apt-get -f install', чтобы исправить это:
Следующие пакеты имеют неудовлетворенные зависимости:
ghostscript:i386 : Зависит: gsfonts:i386 (>= 6.0-1), но он не может быть установлен
libaudit1 : Прерывает: libaudit1:i386 (!= 1:2.4.5-1ubuntu2.1), но 1:2.4.5-1ubuntu2 должен быть установлен
libaudit1:i386 : Прерывает: libaudit1 (!= 1:2.4.5-1ubuntu2), но 1:2.4.5-1ubuntu2.1 должен быть установлен
libblkid1 : Прерывает: libblkid1:i386 (!= 2.27.1-6ubuntu3.4), но 2.27.1-6ubuntu3.3 должен быть установлен
libblkid1:i386 : Прерывает: libblkid1 (!= 2.27.1-6ubuntu3.3), но 2.27.1-6ubuntu3.4 должен быть установлен
libcupsfilters1 : Прерывает: libcupsfilters1:i386 (!= 1.8.3-2ubuntu3.3), но 1.8.3-2ubuntu3.1 должен быть установлен
libcupsfilters1:i386 : Прерывает: libcupsfilters1 (!= 1.8.3-2ubuntu3.1), но 1.8.3-2ubuntu3.3 должен быть установлен
libgs9 : Зависит: libjbig2dec0 (>= 0.11), но он не будет установлен
libgs9:i386 : Зависит: libgs9-common:i386 (>= 9.18~dfsg~0), но он не может быть установлен
libmount1 : Прерывает: libmount1:i386 (!= 2.27.1-6ubuntu3.4), но 2.27.1-6ubuntu3.3 должен быть установлен
libmount1:i386 : Прерывает: libmount1 (!= 2.27.1-6ubuntu3.3), но 2.27.1-6ubuntu3.4 должен быть установлен
libseccomp2 : Прерывает: libseccomp2:i386 (!= 2.3.1-2.1ubuntu2~16.04.1), но 2.2.3-3ubuntu3 должен быть установлен
libseccomp2:i386 : Прерывает: libseccomp2 (!= 2.2.3-3ubuntu3), но 2.3.1-2.1ubuntu2~16.04.1 должен быть установлен
libuuid1 : Прерывает: libuuid1:i386 (!= 2.27.1-6ubuntu3.4), но 2.27.1-6ubuntu3.3 должен быть установлен
libuuid1:i386 : Прерывает: libuuid1 (!= 2.27.1-6ubuntu3.3), но 2.27.1-6ubuntu3.4 должен быть установлен
python : Предварительно зависит: python-minimal (= 2.7.11-1), но 2.7.12-1~16.04 должен быть установлен
Зависит: libpython-stdlib (= 2.7.11-1), но 2.7.12-1~16.04 должен быть установлен
systemd-shim:i386 : Зависит: cgmanager:i386 (>= 0.32), но он не может быть установлен
E: Неудовлетворенные зависимости. Попробуйте 'apt-get -f install' без пакетов (или укажите решение).
Ответ или решение
При выполнении команд lsb_release -a
и uname -a
вы получаете разные результаты, что может вызвать путаницу относительно версии операционной системы Ubuntu, установленной на вашем компьютере. Давайте проанализируем каждый из этих инструментов и выясним, какая информация является наиболее актуальной.
Разбор команд
-
lsb_release -a
:- Эта команда предоставляет информацию об общей версии дистрибутива. В вашем случае результатом выполнения является:
Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 16.04 Codename: xenial
- Это означает, что вы используете Ubuntu 16.04.3 LTS. Эта информация отражает уровень выпуска (или "релиз") системы операционной системы, указывая на то, что вы используете Long Term Support (LTS) версию.
- Эта команда предоставляет информацию об общей версии дистрибутива. В вашем случае результатом выполнения является:
-
uname -a
:- Эта команда предоставляет информацию о ядре Linux. В вашем случае результат выполнения следующей команды:
Linux u1b 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
- Здесь указана версия ядра (4.10.0-28-generic) и информация о том, что она была упакована для Ubuntu 16.04.2. Это говорит о том, что версия ядра вашего дистрибутива отличается от версии самого дистрибутива Ubuntu.
- Эта команда предоставляет информацию о ядре Linux. В вашем случае результат выполнения следующей команды:
Какой вывод правильный?
Чтобы ответить на вопрос, какая версия Ubuntu правильная, следует учитывать, что lsb_release
раскрывает информацию о версии дистрибутива, а uname
представляет данные о версии ядра. Итак, если ваш интерес заключается в версии самой операционной системы, следует доверять данным из lsb_release -a
, что подтверждает, что у вас установлена версия Ubuntu 16.04.3 LTS. В то время как uname -a
показывает, что установленное ядро относится к Ubuntu 16.04.2.
Проблемы с зависимостями
Ваше выражение о проблемах с выполнением команды apt-get -f install
указывает на конфликты зависимостей программного обеспечения. Сообщения об ошибках, которые вы видите, говорят о том, что некоторые пакеты требуется либо обновить до более новой версии, либо установить в результате конфликтов версий.
Шаги для решения проблемы
-
Обновление списков пакетов:
sudo apt update
-
Обновите все установленные пакеты:
sudo apt upgrade
-
Используйте
aptitude
для решения зависимостей (может потребоваться установкаaptitude
):sudo aptitude
Этот инструмент может предложить несколько способов для решения потенциальных конфликтов.
-
Удаление конфликтующих пакетов:
Если конфликты продолжаются, вы можете рассмотреть вариант удаления конфликта через:sudo apt remove <имя_пакета_с_конфликтом>
Например,
sudo apt remove ghostscript:i386
-
Установите вручную недостающие пакеты:
sudo apt install <пакет>
Заключение
Разница в выводах команд lsb_release
и uname
объясняется различием в том, какую информацию они предоставляют. Если вы видите конфликты с зависимостями, это часто решается обновлением системных пакетов или использованием специфических инструментов для управления зависимости (таких как aptitude
). Всегда работаете с актуальными версиями репозиториев и пакетами, чтобы избежать подобных ситуаций в будущем.