MongoDB GPG - недійсні підписи


98

Я встановлюю MongoDB на машині Ubuntu 14.04, використовуючи інструкції за адресою: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Тому я бігаю:

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

І потім:

echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

Далі:

sudo apt-get update

Після закінчення оновлення я отримую таке попередження:

W: помилка GPG: http://repo.mongodb.org trusty / mongodb-org / 3.2 Випуск: Наступні підписи недійсні: BADSIG D68FA50FEA312927 MongoDB 3.2 Ключ підпису випуску

Якщо я ігнорую попередження і намагаюся запустити:

sudo apt-get install -y mongodb-org

Я отримав:

ПОПЕРЕДЖЕННЯ: Наступні пакети не можуть бути автентифіковані!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: Є проблеми і -y використовувався без --force-так

Будь-які ідеї, як вирішити? Дякую!


5
Та сама помилка, також 14.04 LTS
Майк

1
Проблема з - як і раніше тут , в Feb'18, і є робочий розчин нижче, але не прийняла один: stackoverflow.com/a/46737148/2273305 @ Асаф-Хершко, будь ласка , спробуйте змінити свій вибір кращої відповіді
Хук

На мене працювала імпорт ключів відповідно до офіційної інсталяційної документації на docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu . Станом на 2019-06-10 команда для виконанняsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Eborbob

Відповіді:


286

Оновіть усі ключі, що минули з сервера ключів Ubuntu, за допомогою однієї команди:

sudo apt-key list | \
 grep "expired: " | \
 sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' | \
 xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Пояснення команди:

  1. sudo apt-key list - перелічує всі ключі, встановлені в системі;
  2. grep "expired: " - залишати лише рядки з пропущеними ключами;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - витягує ключі;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - оновлює ключі з сервера ключів Ubuntu за знайденими термінами.

Джерело


2
Це чудово спрацювало на Монетному дворі. Примітка. Аргументом для --recv-keyє ключ минув.
not2qubit

Дивно, велике дякую, це вирішило подібні проблеми, які у мене були і з іншими програмами. Мені потрібно зберегти це у файлі для подальшого використання.
Йомі

12
Для тих, хто бачить це через кілька років від "прийнятого рішення", це найпростіший виправлення.
Ніколі

1
Це рішення! @ assaf-hershko, будь ласка, подумайте про зміну прийнятого рішення для цього!
гук

9
Схоже, це більше не працює, оскільки формат apt-key listбільше не сумісний з командами у цій відповіді, які його обробляють. Замість цього бігайте sudo apt-key list | grep -A 1 expired. Скопіюйте відбиток 40-значного числа. Далі, запустіть команду, sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINTде $FINGERPRINTзначення, яке ви скопіювали (якщо воно містить пробіли, поставте навколо нього лапки).
Лоранс Гонсальвес

48

Здається, що вам потрібно повторити кроки встановлення MongoDB. Спочатку видаліть будь-який існуючий файл сховища для MongoDB. Зробіть як нижче.

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

Далі додайте ключ: (без ключа сховище не завантажиться).

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

Тепер створіть новий файл списку сховища MongoDB:

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

Після додавання реквізитів репозиторію нам необхідно оновити список пакетів.

$ sudo apt-get update

Тепер встановіть MongoDB.

sudo apt install mongodb-org

Сподіваюся, це допомагає!


Дякую @Tiziano Я радий, що ти знайшов своє рішення.
PyDevSRS

5
Єдиний крок, який необхідний - це повторний імпорт ключа: sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv EA312927
Бен Маккан

Працював і для мене. Я думаю, як заявив Бен, реімпорт - це ключ до ключа.
Джеймс О'Брайен

Отримання: Неможливо знайти пакет mongodb-org
Мухаммед Хафіл

25

Вам не потрібно перевстановлювати пакети mongo, а просто змінити ключ наступним чином:

Перелічіть ключі, щоб підтвердити, що термін його дії закінчився:

apt-key list | grep "expired:"

Замініть ключ:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xd68fa50fea312927

Номер 0xd68fa50fea312927 - це поточний дійсний ідентифікатор ключа (закінчується в 2019-10-09), як це можна перевірити тут .


1
Це мені справді допомогло.
Аніл Чаудхарі

Я думаю, що це метод, пояснений більш докладно тут: futurestud.io/tutorials/… . Це працювало для мене.
Маленький мозок

9

Здається, версія 3.2.1 була випущена 11 січня / 2016, і підпис пакунків поганий з цього моменту. Підпис упаковки був добре напередодні.

посилання: https://jira.mongodb.org/browse/SERVER/fixforversion/15908/?selectedTab=com.atlassian.jira.jira-projects-plugin:version-summary-panel

Ви можете додати параметр --force-yes або почекати кілька годин, коли команда mongodb побачить та виправить проблему.

Білет вже є: https://jira.mongodb.org/browse/SERVER-22144


1
Я використав --force-так, чи є ризик, який я приймаю за допомогою цього рішення?
Лам

1
Березень 2016 року, це ще не було виправлено.
ретрографія

8
Ще в жовтні 2017 року
Айтор Азнар Альварес

4
Січень 2018 року, все ще є.
Костанос

3
і все ж у березні 2018 року
Waqas Malik

9

Я також зіткнувся з цим питанням під час встановлення MongoDB 4.0 на Ubuntu 16.04. Так я і зробив.

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list - видаліть будь-який існуючий файл для MongoDB

  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4 - додайте ключ

  3. 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' - створити новий файл списку сховищ MongoDB

Тепер завершіть установку оновленням сховищ, потім встановіть MongoDB, увімкніть mongodсервіс та запустіть його, і останнє, перевірте свою версію MongoDB:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version

Очевидно, проблема вирішується лише кроком №2, імпортом відкритого ключа в магазині ключів ubuntu. Дякую за відповідь!
Ананд Вайдя

7

Я також зіткнувся з цією проблемою під час встановлення MongoDB 3.2 на моєму ubuntu 16.04 за допомогою наведених нижче команд. Наведене нижче рішення пропонується як питання щодо встановлення MongoDB v3.2

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update

Після запуску вищезгаданої команди оновлення я знайшов наступні попередження

W: GPG error: http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release: The following signatures were invalid: KEYEXPIRED 1507497109
W: The repository 'http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Подальше дослідження за допомогою наведеної нижче команди перераховує всі ключі

sudo apt-key list

Це показує, що термін дії поточного ключа минув 2017-10-08

pub   4096R/EA312927 2015-10-09 [expired: 2017-10-08]
uid                  MongoDB 3.2 Release Signing Key <packaging@mongodb.com>

Це також мало сенс, оскільки зараз стабільний реліз MongoDB (3.4.9).

Щоб вирішити проблему спочатку, ми робимо невелику очистку (необов’язково)

  1. ми видаляємо доданий старий ключ

    sut apt-key list // Список усіх клавіш

    sudo apt-key del EA312927 // Знайдіть uid ключа, який потрібно видалити

    список доречних ключів | grep Mongodb // Перевірте, чи його видалено

  2. Тепер ми видаляємо репортаж MongoDB, доданий у /etc/apt/sources.list.d

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

  3. Тепер ми встановлюємо останню стабільну версію MongoDB (3.4.9), використовуючи команди нижче

Імпортуйте відкритий ключ, який використовується менеджером пакунків Ubuntu

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Створіть список файлів для mongoDB для отримання поточного сховища

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-3.4.list

Встановіть MongoDB

sudo apt-get update
sudo apt-get install mongodb-org

3

У мене була така ж проблема, і я вирішив її, встановивши mongodb методом tarball. Докладніше див. Посилання нижче.

https://docs.mongodb.org/manual/tutorial/install-mongodb-on-linux/

Додавання деталей нижче

  1. curl -O https://fastdl.mongodb.org/linux/mongodb-linux-i686-3.2.0.tgz
  2. tar -zxvf mongodb-linux-i686-3.2.0.tgz
  3. mkdir -p mongodb && cp -R -n mongodb-linux-i686-3.2.0 / mongodb
  4. експорт PATH = / bin: $ PATH

  5. потім запустіть mongod (db шлях, можливо, потрібно встановити)


1
Надання посилань добре, але спробуйте пояснити рішення саме тут
Нехаль

1
Я можу це зробити, але посилання сама пояснює достатньо деталей, тому я подумав, що це буде не потрібно ..
Harrison Hyunmin Cho

2

Власне, для вирішення проблеми дуже важливо наступне

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

1

У мене була така ж проблема, і я зробив:

root@skarabi:~# apt remove mongodb-org

Тоді:

root@skarabi:~# sudo rm /etc/apt/sources.list.d/mongodb*.list

Після:

root@skarabi:~# apt update


Це просто вилучить сховища MongoDB з вашої машини, чи не так? Як ви збираєтеся потім встановити?
Колін Ніколсон

а потім встановити його, ви можете перевірити за цим посиланням: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu Існує навіть ключ GPG. Працює зі мною
Зінеб СКАРАБІ

Це небезпечно і погано. Немає підстав apt remove(видаляти) Монго зі своєї машини просто для отримання найновішого ключа. Ви будете знищувати всю свою базу даних, просто намагаючись увімкнути оновлений ключ для влучних джерел.
BoomShadow

1

Використовуючи відповідь dlopatin, я придумав це для Ubuntu 18.04, оскільки цей код більше не працює:

sudo apt-key list | \
grep -A 1 "\[expired:" | \
sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp' | \
xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys
  1. Список ключів sudo apt-key list
  2. Отримайте термін придатності та надрукуйте наступний рядок за допомогою відбитка пальця grep -A 1 "\[expired:"
  3. Використовуйте sed для вилучення лише рядків, що починаються з пробілу ^\s\{1,10\}, і виберіть буквено-цифрові символи \(\w*\), замініть ці рядки на вибрану групу, яка є відбитком пальців \1, повторіть для всіх повернених рядків g, після чого роздрукуйте відбиток пальця p. Це дає:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. Використовуйте xargs з роздільником для '\ n', інакше він розіб'ється на пробіли:, xargs -d '\n'потім передайте відбитки пальців як аргументи до apt-ключа, щоб оновити їх: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keysщо дає вам:xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Сподіваємось, це зрозуміло. Ігноруйте попередження про розбір виводу з підходящого ключа :)


0

Під час встановлення MongoDB 4.2 на екземпляр Ubuntu 18.04 в Google Cloud я зіткнувся з подібною проблемою.

W: GPG error: http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4B7C549A058F8B6B
E: The repository 'http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.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

Рішення, яке працювало у мене, виконувало наступну команду, щоб отримати ключ. Я знайшов це на офіційних сторінках випуску Джира MongoDB.

/usr/bin/curl -sLO https://www.mongodb.org/static/pgp/server-4.2.asc && sudo /usr/bin/apt-key add server-4.2.asc

Я знайшов це рішення в офіційних питаннях Джира MongoDB. Ось посилання на проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.