在Ubuntu 20.04上安装MongoDB
添加GPG公钥
- GPG的全名是GNU Privacy Guard,是一种能够在操作系统上进行加密和解密的软件。
- 在注册apt包时,为了确保所注册的包不是被除了制作者以外的别有用心的人篡改的假货,需要接收一个由拥有包所在仓库的私钥加密的证书。然后需要使用包制作者的公钥进行解密以确认其真实性。
现在,我们获取MongoDB官方发布的公开密钥。
USER:~$ sudo wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
如果成功的話,
OK
应该显示为”应该呈现为”。
对使用过的软件包进行说明。
コマンド名説明wgetインターネット上に公開された内容を取得するパッケージapt-keyaptのGPGキーを管理するパッケージ
请参考
使用wget时的参数和选项
用户:~$ wget <选项> <网址>
オプション(GNU拡張)短縮形(POSIX標準)説明–quiet-qログにwgetの出力が表示されないようにする–output-document=file-O <ファイル名 or – (標準出力)>から取得したコンテンツを一つのファイルに保存するか、標準出力に書き出す
apt-key命令的参数和选项
用户:~$ apt-key <命令>
コマンド説明add <ファイル名 or – (標準入力)>aptのGPGキーに、指定したファイルの内容を加えるdelete <キーID>GPGキーを削除するlist登録されているGPGキーを一覧表示する
关于apt-key的GPG密钥管理
GPG密钥在名为/etc/apt/trusted.gpg.d/的目录中进行管理。
注册apt仓库
- 当apt下载软件时,它只会参考已注册的软件源。在Ubuntu中,默认注册的软件源仅限于Ubuntu官方的源,而mongoDB不是Ubuntu官方的软件包,因此需要自行注册包含mongoDB软件包的源。
USER:~$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
使用过的命令的说明
パッケージ名説明echo <文字列>文字列・変数の出力をするコマンドtee <ファイル名>標準入力されたものをファイルに出力したり、標準出力したりするコマンド
这个命令创建了一个名为mongodb-org-4.2.list的文件,其中包含deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse的内容。
更新软件包清单
- apt(Advanced Packaging Tool)可以下载安装包,这些包以列表形式保存。当更新命令下达时,会获取所有已注册仓库中包的信息。目前仅注册了存储mongoDB包的仓库,因此需要更新包列表以便包含该包的信息。
USER:~$ sudo apt update
命令解释
コマンド名説明apt update登録されたリポジトリを巡り、パッケージ一覧を更新する
请参考
コマンド名説明apt list登録されたパッケージ一覧を見るdpkg -lインストール済みのパッケージの一覧を見る
在这种情况下,如果未注册上述GPG密钥,则没有拥有解密证书所需的公钥。
W: GPG error: https://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 'https://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.
会出现这个错误。
安装mongoDB软件包
实际上在Ubuntu上安装mongoDB软件包。
USER:~$ apt-get install mongodb-org -y
尝试启动MongoDB。
mongod
(大概可以)通过启动
2020-07-23T18:08:10.297+0900 I STORAGE [initandlisten] exception in initAndListen: NonExistentPath: Data directory /data/db not found. Create the missing directory or specify another path using (1) the --dbpath command line option, or (2) by adding the 'storage.dbPath' option in the configuration file., terminating
如果出现这个错误导致启动失败,请按照错误消息的提示创建一个名为/data/db的目录。
USER:~$ sudo mkdir /data
USER:~$ sudo mkdir /data/db
又或者
USER:~$ sudo mkdir -p /data/db
然后,为了使mongoDB能够对这个目录进行读写操作,将这个文件夹的所有者更改为自己的用户名()。
USER:~$ sudo chown <USER名>:<USER名> /data/db
只要再次输入“mongod”,MongoDB应该就会启动!
文献引用
GNU Wget 手册可在https://www.gnu.org/software/wget/manual/wget.html#Overview找到。
Debian的apt-key手册可在https://manpages.debian.org/unstable/apt/apt-key.8.ja.html找到。