Czy mogę używać pakietów 14.04 MongoDB z 16.04?

10

Niestety oficjalny pakiet Ubuntu dla MongoDB nadal tkwi w wersji 2.6, która w tym momencie jest starożytna ( ten błąd nie został odebrany jako żywy, przebiegły lub ksenogeniczny).

MongoDB nie opublikował jeszcze pakietu na 16.04 (Xenial), więc jak mogę użyć pakietów 14.04 (Trusty), aby zainstalować MongoDB 3.2+ w dniu 16.04?

    
zadawane Adam C 14.04.2016, 18:02
źródło

2 odpowiedzi

14

To trochę hack, ale tak, to można zrobić. Istnieje nieudokumentowany krok potrzebny do faktycznego uruchomienia usługi i (co dziwne), chyba że chcesz rozpocząć ręczną konwersję zadań do przodu, musisz najpierw zainstalować pakiet% Ubuntu mongodb , a następnie usunąć go, abyś miał użyteczną usługę . Prosta instalacja pakietów MongoDB nie zapewni Ci działającej usługi w świeżej wersji 16.04.

Aktualizacja - lipiec 2016: oficjalna poprawka do tego (dodając obsługę 16.04 do pakietów) została zakończona w oddziale dev w wersji 3.3 w ramach SERVER-23043 - i został wydany jako backport w serii 3.2 jako część 3.2.7 . Dlatego jeśli używasz wersji 3.2.7+ nie , musisz to zrobić, a oficjalna instalacja pakietu MongoDB powinna działać.

W każdym przypadku po dodaniu / usunięciu wykonaj zwykłe instrukcje dla 14.04, podsumowano tutaj:

# install the Ubuntu package (to get the service set up correctly)
sudo apt-get install mongodb
# Now remove it and continue with the MongoDB instructions
sudo apt-get remove mongodb
sudo apt-get autoremove
# import key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
# add trusty repos
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
# update apt
sudo apt-get update
# install the MongoDB package
sudo apt-get install -y mongodb-org

Instalacja się powiedzie, a dzięki pakietowi Ubuntu mamy wszystkie elementy potrzebne do wykonania usługi, ale próba uruchomienia usługi początkowo się nie powiedzie:

$ sudo service mongodb start
Failed to start mongodb.service: Unit mongodb.service is masked.

Naprawianie tego nie jest zbyt trudne:

$ sudo systemctl unmask mongodb
Removed symlink /etc/systemd/system/mongodb.service.

Teraz możemy włączyć / uruchomić usługę, uzyskać jej status itp.

$ sudo service mongodb enable
$ sudo service mongodb start
$ sudo service mongodb status
● mongodb.service - LSB: An object/document-oriented database
   Loaded: loaded (/etc/init.d/mongodb; bad; vendor preset: enabled)
   Active: active (running) since Thu 2016-04-14 16:40:35 IST; 7s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2849 ExecStart=/etc/init.d/mongodb start (code=exited, status=0/SUCCESS)
 Main PID: 1593 (code=exited, status=0/SUCCESS)
    Tasks: 13 (limit: 512)
   Memory: 51.9M
      CPU: 100ms
   CGroup: /system.slice/mongodb.service
           └─2861 /usr/bin/mongod --config /etc/mongodb.conf

Sukces - i dostajemy ładny wskaźnik do aktywnego pliku konfiguracyjnego (który jest w starym formacie key=value , zobacz tutaj przykłady w nowszym zalecanym formacie YAML).

Uwaga: w rzeczywistości będą dwa pliki konfiguracyjne /etc/mongod.conf i /etc/mongodb.conf dzięki niewielkim różnicom między dwoma zainstalowanymi pakietami. Obecnie aktywna usługa domyślnie wskazuje na stary format /etc/mongodb.conf - możesz przełączyć, przesuwając / kopiując mongod.conf do mongodb.conf , jeśli sobie tego życzysz, lub po prostu bezpośrednio edytować plik.

Po uruchomieniu przetestuj połączenie z bazą danych za pomocą powłoki mongo :

$ mongo
MongoDB shell version: 3.2.5
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 

Jeśli chcesz pozbyć się ostrzeżeń THP, zapoznaj się z tą odpowiedzią .

    
odpowiedział Adam C 14.04.2016, 18:02
źródło
-1

Jeśli już go zainstalowałeś, usuń mongodb przez:

sudo apt-get remove mongodb
sudo apt-get autoremove

Wypróbuj z rekomendacją dotyczącą digitalocean link

    
odpowiedział grey87 17.05.2016, 21:56
źródło

Przeczytaj inne pytania na temat tagów