Отсутствует скрипт инициализации MongoDB 3.2.6

Отсутствует скрипт инициализации MongoDB 3.2.6

Я следовал занаправлениядля установки MongoDB через apt-get. Произошел сбой с проверкой, но отслеживание этого на StackExchange показало, что это известная проблема с процессом подписи, поэтому я перезапустил apt-get install mongodbбез -yфлага. Затем установка прошла успешно, или так мне показалось. Но когда я попытался запустить службу, произошло следующее:

$ sudo service mongod start
[sudo] password for mark: 
Failed to start mongod.service: Unit mongod.service not found.
$ sudo service mongod status
● mongod.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

Конечно, файл /etc/init.d/mongodне существует. В инструкциях по установке прямо указано, что этот файл предоставляется:

Пакет mongodb-org включает в себя различные сценарии инициализации, включая сценарий инициализации /etc/init.d/mongod.

Файл существует в исходниках на GitHub. Так что я могу продолжать. Но я хотел бы узнать, почему критический файл конфигурации отсутствует в успешно установленном пакете. (Назовите меня комплетистом.)

Мой релиз Ubuntu — 16.10, который официально не поддерживается. Я бы не подумал, что это может быть причиной. Может ли быть виновата версия релиза? Или это была ошибка — установить пакеты неподписанными? Или сам пакет сломан? Или тут что-то еще?

решение1

Я просто ошибался. Проблема в несовместимости релиза. Похоже, что скрипт после установки молча отказывал, поэтому отсутствующий файл не существовал.

Решение оказалось очень похожим наэтот вопрос, что предполагает запускэтот сценарий.

Я внес небольшие изменения в скрипт в соответствии с изменением расположения файлов по умолчанию для MongoDB 3.2.6. (Изменения не являются строго необходимыми. Мне просто не нравится хлам.) Раньше файлы данных располагались в /data/db/. Теперь расположение по умолчанию — /var/lib/mongodb/, а старое расположение больше не используется. Поэтому я удалил строки в скрипте, которые ссылаются на этот путь.

Ubuntu теперь использует systemd по умолчанию вместо Upstart, так что /var/run/mongodb/больше не нужен. Я просто закомментировал эти строки, а не удалил их. Если вы по какой-то причине все еще используете Upstart, вам нужно будет раскомментировать три строки, которые ссылаются на этот путь.

Обновленный скрипт выглядит так:

# enable_mongo.sh

echo '[Unit]
Description=High-performance, schema-free document-oriented database
After=syslog.target network.target

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod -f /etc/mongod.conf

[Install]
WantedBy=multi-user.target' > /lib/systemd/system/mongod.service

# Setup the required directories
# mkdir -p /var/run/mongodb/
mkdir -p /var/log/mongodb/
mkdir -p /var/lib/mongodb/

# chown mongodb:mongodb /var/run/mongodb/
chown mongodb:mongodb /var/log/mongodb/
chown mongodb:mongodb /var/lib/mongodb/

# chmod 0755 /var/run/mongodb/
chmod 0755 /var/log/mongodb/
chmod 0755 /var/lib/mongodb/

# Start the new service and enable it on boot
systemctl --system daemon-reload
systemctl enable mongod.service

echo "Starting"
systemctl start mongod.service

Связанный контент