Вопрос или проблема
Я не могу найти файл libnss3.so (64-битная версия) в CentOS 8, даже после установки связанного пакета nss-3.44.0-4.el7.x86_64.rpm.
Я могу найти только 32-битную версию в /usr/lib/, но 64-битной версии в /usr/lib64/ нет.
Я попытался вернуться к CentOS 7 и проверить, что libnss3.so находится в /usr/lib64, и действительно, файл присутствует в /usr/lib64 в CentOS 7.
Где находится 64-битная версия libnss3.so в CentOS 8?
Буду признателен за любые указания/советы/разъяснения, спасибо.
ОБНОВЛЕНИЕ
Я только что выполнил чистую установку CentOS 8, но все равно нет libnss3.so в /usr/lib64/.
[test@centos-s-1vcpu-1gb-fra1-01 lib64]#sudo cat /etc/*release*
CentOS Linux release 8.1.1911 (Core)
Производное от Red Hat Enterprise Linux 8.1 (Source)
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"
CentOS Linux release 8.1.1911 (Core)
CentOS Linux release 8.1.1911 (Core)
cpe:/o:centos:centos:8
[test@centos-s-1vcpu-1gb-fra1-01 lib64]#sudo ls libnss
libnssckbi.so libnss_compat.so.2 libnss_dns.so.2 libnss_files.so.2 libnss_resolve.so.2 libnss_systemd.so.2
libnss_compat-2.28.so libnss_dns-2.28.so libnss_files-2.28.so libnss_myhostname.so.2 libnss_sss.so.2
Также после небольшого исследования выяснилось, что yum в CentOS 8 предлагает только версии i686 (32 бита) libnss3.so.
[test@centos-s-1vcpu-1gb-fra1-01 lib64]#sudo yum whatprovides libnss3.so
Последняя проверка метаданных истекла: 0:30:41 назад в Пт 27 Мар 2020 13:38:16 UTC.
nss-3.44.0-8.el8.i686 : Службы сетевой безопасности
Repo : AppStream
Совпало с:
Provide : libnss3.so
nss-3.44.0-9.el8_1.i686 : Службы сетевой безопасности
Repo : AppStream
Совпало с:
Provide : libnss3.so
Есть ли возможность вручную установить libnss3.so 64 бита?
Мне удалось выяснить, как установить 64-битную версию. Хотя я все еще не понимаю механизмов, почему это работает именно так. Если кто-то знает, пожалуйста, дайте мне знать, я бы хотел понять, почему это работает так, как работает.
При установке libnss3.so 64-битная версия устанавливается только если я использую dnf, когда я использую yum, устанавливается только 32-битная версия. Я разобрался в этом, иск.Searching online while I was trying to manually download the package binaries to unpack them myself (см. centos.pkgs.org).
Я просто не понимаю, почему dnf устанавливает 64-битную версию, в то время как yum устанавливает 32-битную версию? Буду признателен за любой анализ этого вопроса. В любом случае, спасибо всем, кто внес свой вклад.
Ответ или решение
Проблема с отсутствием файла libnss3.so
(64-битной версии) в CentOS 8 может быть довольно запутанной для пользователей, привыкших к различиям в пакетном управлении между версиями CentOS 7 и CentOS 8. Давайте подробно разберемся в данной ситуации.
Проблема
Вы столкнулись с проблемой отсутствия 64-битного файла libnss3.so
в директории /usr/lib64/
после установки пакета nss
. При перечислении доступных файлов вы заметили наличие только 32-битной версии в /usr/lib/
, в то время как 64-битная версия отсутствует.
Исследование
После установки CentOS 8 и выполнения команды yum whatprovides libnss3.so
вы обнаружили, что в доступных репозиториях есть только 32-битные версии .i686
. Это может вызывать недоумение, особенно на фоне того, что в CentOS 7 64-битная версия данной библиотеки присутствует.
Решение
К счастью, вы успешно нашли решение данной проблемы. Как вы отметили, 64-битная версия libnss3.so
доступна при использовании менеджера пакетов dnf
, который является преемником yum
в CentOS 8. Для этого вам нужно выполнить команду:
sudo dnf install nss
После этого команда автоматически установит 64-битную версию libnss3.so
, которая будет находиться в директории /usr/lib64/
.
Почему это происходит?
Причины, по которым yum
и dnf
ведут себя по-разному, заключаются в различиях в их реализации и способах работы с метаданными репозиториев.
-
Yum: Он ориентирован на работу с 32-битными пакетами, и в CentOS 8 может по умолчанию искать только документы, предоставляемые в 32-битной версии, если они есть. Если в репозитории установлены и 32-битные, и 64-битные версии пакетов,
yum
может приоритетно выбирать 32-битные. -
Dnf: В отличие от
yum
, dnf был спроектирован с более современным подходом к управлению пакетами, включая улучшенные механизмы разрешения зависимостей и предпочтения 64-битных версий. Он также внедряет более новый кэш и механизм хранения метаданных, что делает его более эффективным в поиске и установке корректных версий пакетов.
Заключение
Таким образом, для установки 64-битной версии libnss3.so
в CentOS 8 вам следует использовать dnf
. Важно понимать, что переход от yum
к dnf
в CentOS 8 знаменует собой значительный сдвиг в способе управления пакетами, который может повлиять на совместимость и доступность некоторых библиотек.
Если возникнут дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться.