Сбой Apt-get 16.04 или 18.04 при установке mongodb

26

Когда я пытаюсь установить mongodb, используя инструкции https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/16.04, я получаю следующий результат на этапе установки:

jonathan@poseidon:~$ sudo apt-get install mongodb-org
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package mongodb-org is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'mongodb-org' has no installation candidate

Я проверил HTTP-трафик с помощью Wireshark и обнаружил, что единственным трафиком был HTTP GET для списка и ответ HTTP 304, который предполагает, что проблема заключается в моих локальных файлах конфигурации. Мой файл sources.list.d содержит следующую запись:

mongodb-org-3.4.list

Что мне нужно сделать, чтобы продолжить устранение этой проблемы?

РЕДАКТИРОВАТЬ: я попытался сделать это снова на новой установке 16.04 под VirtualBox. Я получил ключ, создал файл списка и сделал sudo apt updateсо следующими результатами:

jonathan@Ubuntu-16:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
[sudo] password for jonathan: 
Executing: /tmp/tmp.uWYpRUWfjK/gpg.1.sh --keyserver
hkp://keyserver.ubuntu.com:80
--recv
0C49F3730359A14518585931BC711F9BA15703C6
gpg: requesting key A15703C6 from hkp server keyserver.ubuntu.com
gpg: key A15703C6: public key "MongoDB 3.4 Release Signing Key <packaging@mongodb.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
jonathan@Ubuntu-16:~$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse
jonathan@Ubuntu-16:~$ sudo apt update
Ign:1 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 InRelease
Get:2 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release [3 462 B]
Hit:3 http://mx.archive.ubuntu.com/ubuntu xenial InRelease               
Get:4 http://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB]                   
Get:5 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release.gpg [801 B]                      
Get:6 http://mx.archive.ubuntu.com/ubuntu xenial-updates InRelease [95.7 kB]           
Ign:5 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release.gpg                       
Get:7 http://mx.archive.ubuntu.com/ubuntu xenial-backports InRelease [92.2 kB]                    
Reading package lists... Done      
W: GPG error: http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY D68FA50FEA312927
E: The repository 'http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
jonathan@Ubuntu-16:~$ 

Как видите, полученный ключ был для Mongodb 3.4, а не Mongodb 3.2, и это объясняет сбой GPG в apt update. Кто-нибудь знает, где взять правильный ключ?

Джонатан
источник

Ответы:

76

Ubuntu 16.04 и MongoDB 4.0

Сначала удалите все существующие файлы репозитория для MongoDB.

sudo rm /etc/apt/sources.list.d/mongodb*.list

Далее добавьте ключ: ( без ключа репозиторий не загрузится )

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4

Теперь создайте новый файл списка репозитория MongoDB:

sudo bash -c 'echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-4.0.list'

Завершите установку обновлением репозиториев, затем установите:

sudo apt update
sudo apt install mongodb-org

Включите mongodсервис и запустите его:

systemctl enable mongod.service
systemctl start mongod.service

Проверьте вашу версию mongodb:

~$ mongo --version
MongoDB shell version v4.0.5
git version: 3739429dd92b92d1b0ab120911a23d50bf03c412
OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
allocator: tcmalloc
modules: none
build environment:
    distmod: ubuntu1604
    distarch: x86_64
    target_arch: x86_64

Проверьте, работает ли служба:

~$ systemctl status mongod.service
● mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-01-21 00:33:51 MST; 7s ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 2906 (mongod)
   CGroup: /system.slice/mongod.service
           └─2906 /usr/bin/mongod --config /etc/mongod.conf

Ubuntu 18.04 и MongoDB 4.0

MongoDB 4.0 показан как стабильный, где 4.1 пока предварительный просмотр.

Сначала удалите MongoDB из предыдущего, если он установлен:

sudo apt remove --autoremove mongodb-org

Удалите все файлы репозитория mongodb:

sudo rm /etc/apt/sources.list.d/mongodb*.list
sudo apt update

Теперь добавьте новый ключ:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4

Добавьте новый репозиторий:

sudo bash -c 'echo "deb [arch=amd64] http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-4.0.list'

Установить MongoDB

sudo apt update
sudo apt install mongodb-org

Включите и запустите mongodслужбу сервера:

systemctl enable mongod.service
systemctl start mongod.service

Проверьте вашу установку:

~$ mongo --version
MongoDB shell version v4.0.3
git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c
OpenSSL version: OpenSSL 1.1.0g  2 Nov 2017
allocator: tcmalloc
modules: none
build environment:
    distmod: ubuntu1804
    distarch: x86_64
    target_arch: x86_64

Вы также можете проверить, что ваш сервис запущен:

~$ systemctl status mongod.service
● mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: e
   Active: active (running) since Sun 2018-10-07 12:33:46 MDT; 2min 34s ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 5573 (mongod)
   CGroup: /system.slice/mongod.service
           └─5573 /usr/bin/mongod --config /etc/mongod.conf

Надеюсь это поможет!

Терренс
источник
2
Спасибо за это. Получение правильного ключа было критической частью.
Джонатан
gpg: сбой при получении сервера ключей: сервер указал на сбой
Максима Алек
@ MáximaAlekz Проверьте мой ответ.
Тпойка
Большое спасибо, @Terrance. Вы сэкономили мне много времени.
Анирудх Татипелли
Большое спасибо, мой друг!
Йована
10

В дополнение к ответу @Terrance, вот как вы можете найти соответствующий ключ sig. Пример применим к mongodb в этом случае, но может быть использован для любого другого пакета аналогично. Перед тем как выполнить строки из ответа @Terrance:

  1. Зайдите на сервер ключей Ubuntu, чтобы найти актуальный ключ

  2. Найдите интересующую строку (в случае mongodb) и отправьте эту первую форму (для этого вам не нужна вторая форма) - нажмите Search!кнопку

введите описание изображения здесь

  1. По предоставленному списку поиска ищите вашу версию (в нашем случае это был 3.4, например)

введите описание изображения здесь

  1. Вы можете увидеть два ряда с ключами там. Сосредоточьтесь на самом актуальном по дате. Первая строка - это дата создания, вторая - действительная дата.

  2. Используйте sig из строки, упомянутой в пункте 5 - в случае с картинки это будет A15703C6

  3. Продолжите с ответом Терранса, вам нужно установить пакет или обновить, как я

Tpojka
источник
1
Спасибо. Это сэкономило мне много времени!
Аказуко
1

У меня тоже ничего не получалось , поэтому я зашел на сайт mogodb и следовал этим инструкциям по установке из tarball:

Установить зависимости:

sudo apt-get install libcurl3 openssl

Скачайте архив с этой страницы

cd в каталог загрузок или куда-либо файл, и распакуйте его:

tar -zxvf mongodb-linux-*-4.0.1.tgz

Двоичные файлы находятся в binкаталоге извлеченной структуры. Вы можете добавить этот каталог в PATH или скопировать файлы в /usr/local/binдругое место PATH.

VishalTheBeast
источник
Вы установили другую версию, отличную от указанной в то время, поэтому ответы не сработали для вас. Я обновил свой ответ с тех пор. Для каждой версии ключ меняется, а хранилище меняется. Я постараюсь обновлять свой ответ для новых стабильных версий по мере их выхода.
Терранс
1

Первый забег:

$ sudo rm /etc/apt/sources.list.d/mongodb*.list
$ sudo rm /etc/apt/sources.list 

Можно удалить файл sources.list или просто удалить строки, связанные с монго, присутствующими в файле sources.list.

Затем выполните новую установку MongoDB, используя команды, приведенные в официальных инструкциях по установке MongoDB для Ubuntu. .

Команды в приведенной ссылке приведены ниже

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

sudo apt-get установить gnupg

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

echo "deb [arch = amd64] https://repo.mongodb.org/apt/ubuntu bionic / mongodb-org / 4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

sudo apt-get update

sudo apt-get install -y mongodb-org

sudo service mongod start

статус sudo сервис mongod

Лакшми
источник
Вы можете включить команды из этой ссылки в свой ответ?
Дамадам