Como instalar o mongodb 3.4 no debian stretch (9)?

13

Quero instalar o mongodb 3.4 no debian stretch. Infelizmente os pacotes debian stretch são apenas o mongodb 3.2 ( https://packages.debian.org/stretch/mongodb ).

Os documentos do mongodb mencionam apenas o debian 7 e 8 ( https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/ ). Ao usar os comandos debian 8, não consigo instalar os pacotes mongodb porque eles têm dependências não atendidas.

Ao permitir o jessie-backports, o erro de dependências não atendidas desapareceu, mas não tenho certeza se devo fazer isso e instalar os pacotes do jessie-backports em stretch.

Como você instalaria o mongodb 3.4 no debian stretch?

Obrigado por qualquer conselho.

Hamburml
fonte
eles lançaram 3.6 para stretch
eri

Respostas:

16

O erro ao tentar usar as instruções do Debian 8 sugere muitas dependências ausentes, mas na verdade funcionará se você instalar a única dependência real ausente ( libssl1.0.0). Para referência, para descobrir o que estava faltando, baixei o mongodbinário e dei uma olhada em ldd:

adam@debian9:~/mongo/mongodb-linux-x86_64-debian81-3.4.6/bin$ ldd mongod
    linux-vdso.so.1 (0x00007ffd0e15d000)
    libssl.so.1.0.0 => not found
    libcrypto.so.1.0.0 => not found
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f93c6dff000)
    *snip*

Se você der uma olhada no que está instalado no Debian 9, basicamente temos apenas versões libsslmuito novas. As bibliotecas libssle libcryptosão instaladas pelo libsslpacote e são praticamente independentes. Portanto, podemos simplesmente pegar o libssl1.0.0pacote Debian 8 e instalá-lo.

A versão amd64 do pacote pode ser encontrada aqui (apenas o Google para libssl1.0.0 Jesse e seu arch para outra versão).

Para instalar esse pacote, baixe o arquivo (no meu caso, foi para Downloads) e instale-o com dpkg:

adam@debian9:~$ sudo dpkg -i /home/adam/Downloads/libssl1.0.0_1.0.1t-1+deb8u6_amd64.deb 
Selecting previously unselected package libssl1.0.0:amd64.
(Reading database ... 126471 files and directories currently installed.)
Preparing to unpack .../libssl1.0.0_1.0.1t-1+deb8u6_amd64.deb ...
Unpacking libssl1.0.0:amd64 (1.0.1t-1+deb8u6) ...
Setting up libssl1.0.0:amd64 (1.0.1t-1+deb8u6) ...

Com isso completo, rapidamente verificamos novamente ldd:

adam@debian9:~/mongo/mongodb-linux-x86_64-debian81-3.4.6/bin$ ldd mongod
    linux-vdso.so.1 (0x00007ffdf25de000)
    libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f86bc12d000)
    libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f86bbd31000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f86bbb29000)
*snip*

Sucesso! Agora vamos tentar novamente a instalação do pacote mongodb-org:

adam@debian9:~$ sudo apt install mongodb-org
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
The following NEW packages will be installed:
  mongodb-org mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 66.8 MB of archives.
After this operation, 270 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4/main amd64 mongodb-org-shell amd64 3.4.6 [7,980 kB]
Get:2 http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4/main amd64 mongodb-org-server amd64 3.4.6 [14.2 MB]
Get:3 http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4/main amd64 mongodb-org-mongos amd64 3.4.6 [8,103 kB]
Get:4 http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4/main amd64 mongodb-org-tools amd64 3.4.6 [36.5 MB]
Get:5 http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4/main amd64 mongodb-org amd64 3.4.6 [3,820 B]
Fetched 66.8 MB in 7s (9,509 kB/s)                                                             
Selecting previously unselected package mongodb-org-shell.
(Reading database ... 126491 files and directories currently installed.)
Preparing to unpack .../mongodb-org-shell_3.4.6_amd64.deb ...
Unpacking mongodb-org-shell (3.4.6) ...
Selecting previously unselected package mongodb-org-server.
Preparing to unpack .../mongodb-org-server_3.4.6_amd64.deb ...
Unpacking mongodb-org-server (3.4.6) ...
*snip*
Adding system user `mongodb' (UID 119) ...
Adding new user `mongodb' (UID 119) with group `nogroup' ...
Not creating home directory `/home/mongodb'.
Adding group `mongodb' (GID 123) ...
Done.
Adding user `mongodb' to group `mongodb' ...
Adding user mongodb to group mongodb
Done.
Setting up mongodb-org (3.4.6) ...

Finalmente, vamos garantir que o serviço seja iniciado e que possamos nos conectar com um shell:

adam@debian9:~$ sudo systemctl start mongod
adam@debian9:~$ mongo
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.6 

E aí está - pacotes de Jesse trabalhando no Stretch. Tenho certeza de que em breve haverá um lançamento oficial que tornará isso obsoleto, mas enquanto isso é uma solução relativamente indolor.

Adam C
fonte
Obrigado pelo truque de backports. Eu estava ficando package not foundpara mongodb-orgquando amanheceu sobre mim tive a bitiness errado de Linux. Consegui uma VM de 32 bits em vez de 64 bits ... oops! As instruções e os binários do MongoDB são apenas de 64 bits!
sumitkm
2
Esse tem sido o caso por um longo tempo, 32 bit tinha limitações graves (2 GB de dados max), particularmente no mecanismo de armazenamento MMAP, não tenho certeza WiredTiger sempre o apoiaram
Adam C
3
achei - retirou o suporte para 32 bits com a versão 3.0: docs.mongodb.com/manual/release-notes/3.0-compatibility/...
Adam C
1
Obrigado por este Adam. Na etapa final, eu usaria sudo systemctl start mongoduma vez que SystemD é o sistema init padrão do Debian desde Jessie e servicese tornou apenas um script de compatibilidade.
Rafa
3

Parece que o mongodb 3.4 ainda não possui binários para o debian stretch em seu repositório oficial do apt. Sua melhor abordagem pode ser a partir da fonte para o seu sistema.

Existem instruções específicas nesta página: https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source

Você também pode tentar usar os pacotes Ubuntu para o Xenial, mas não há garantia de que isso funcione corretamente, e acho que construir a partir do código-fonte seria uma idéia melhor.

Ivan G.
fonte
Tentei compilá-lo da fonte, mas obtenho que SSLv2_method não foi declarado erros do asio / ssl / impl / context.ipp. Alguma ideia?
21817 Hamburml
1

Eu apenas tive esse problema (apesar de usar o debain 9).

Um pouco de escavação revelou que isso se devia ao fato de que a versão mais antiga do pacote debian não pôde ser removida pelo instalador (eu estava tentando atualizar do pacote não oficial do mongodb fornecido pelo Debian para os pacotes oficiais do mongodb-org).

A solução foi a seguinte:

sudo apt-get autoremove mongodb-org
sudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install -y mongodb-org

Espero que isso economize tempo para alguém!

Ricardo
fonte
0

Criei um repositório do Github para facilitar a criação da versão mais recente do MongoDB. Ele criará tudo internamente, em vez de depender do apt, incluindo o serviço systemd.

Patrik Laszlo
fonte
0

Estou usando o Debian 9 Stretch

Eu baixei esta versão do MongoDB: Linux 64x legado 64x

insira a descrição da imagem aqui

Fiz o download para a minha pasta da área de trabalho e a renomeei para mongodb

Depois disso, você "precisa" mover sua pasta renomeada recente para /opt/

mv mongodb /opt/

Agora você pode acessar /opt/mongodb/bine executar um comando como esse:

./mongod --dbpath ./db/

Para tornar a coisa divertida, você pode criar um link simbólico, por exemplo, mongodpara /usr/local/bin/:

ln -s /opt/mongodb/bin/mongod /usr/local/bin/mongod

Agora, no seu terminal, digite o comando, de qualquer lugar:

mongod --dbpath /homer/user/Desktop/db

Você precisa especificar o --dbpath para que o mongod funcione corretamente.

Alex
fonte