我是靠谱客的博主 无奈野狼,最近开发中收集的这篇文章主要介绍Docker官方推荐操作系统镜像Alpine源码安装MongoDB启动新的Alpine容器查看Alpine版本及内核信息更新Alpine包管理器获取MomngoDB源码安装C编译环境安装Python环境安装编译相关的库文件安装Python依赖编译结果总结遇到的错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MongoDB 在工作中使用已经很平凡,官方提供了方便的MongoDB镜像使用。然而本文却想通过源码编译安装MongoDB,下面详细介绍安装编译社区版MongoDB的过程。

启动新的Alpine容器

运行命令启动新的Alpine容器 alpine-mongodb-src

docker run --name alpine-mongodb-src -it /bin/sh

查看Alpine版本及内核信息

# 查看Alpine版本
cat /etc/alpine-release
# 查看Linux 内核
uname -a

在这里插入图片描述

更新Alpine包管理器

因为后边要安装很多软件,更新一下包管理器

#  Update repository indexes
apk update
# 安装 网络包 curl 和 wget,方便后期使用
apk add curl wget

在这里插入图片描述

获取MomngoDB源码

  • MongoDB 下载地址 https://www.mongodb.com/try/download
    在这里插入图片描述
  • 获取源码链接
    点击MongoDB Community Server展开社区版,右边version 选择最新的,Platform选择 Source[tgz]包。最后点击 Copy link 复制下载连接 https://fastdl.mongodb.org/src/mongodb-src-r5.0.6.tar.gz

在这里插入图片描述

  • 获取连接
    使用wget工具下载源码
wget  https://fastdl.mongodb.org/src/mongodb-src-r5.0.6.tar.gz
  • 解压源码
tar -xzvf tar -xzvf mongodb-src-r5.0.6.tar.gz
  • 查看安装说明
    首先查看README,内容如下:
MongoDB README

Welcome to MongoDB!

COMPONENTS

  mongod - The database server.
  mongos - Sharding router.
  mongo  - The database shell (uses interactive javascript).

UTILITIES

  install_compass   - Installs MongoDB Compass for your platform.

BUILDING

  See docs/building.md.

RUNNING

  For command line options invoke:

    $ ./mongod --help

  To run a single server database:

    $ sudo mkdir -p /data/db
    $ ./mongod
    $
    $ # The mongo javascript shell connects to localhost and test database by default:
    $ ./mongo
    > help

INSTALLING COMPASS

  You can install compass using the install_compass script packaged with MongoDB:

    $ ./install_compass

  This will download the appropriate MongoDB Compass package for your platform
  and install it.

DRIVERS

  Client drivers for most programming languages are available at
  https://docs.mongodb.com/manual/applications/drivers/. Use the shell
  ("mongo") for administrative tasks.

BUG REPORTS

  See https://github.com/mongodb/mongo/wiki/Submit-Bug-Reports.

PACKAGING

  Packages are created dynamically by the package.py script located in the
  buildscripts directory. This will generate RPM and Debian packages.

DOCUMENTATION

  https://docs.mongodb.com/manual/

CLOUD HOSTED MONGODB

  https://www.mongodb.com/cloud/atlas

FORUMS

  https://community.mongodb.com

    A forum for technical questions about using MongoDB.

  https://community.mongodb.com/c/server-dev

    A forum for technical questions about building and developing MongoDB.

LEARN MONGODB

  https://university.mongodb.com/

LICENSE

  MongoDB is free and the source is available. Versions released prior to
  October 16, 2018 are published under the AGPL. All versions released after
  October 16, 2018, including patch fixes for prior versions, are published
  under the Server Side Public License (SSPL) v1. See individual files for
  details.

从中可以看到Build文档是docs/building.md,这个文档内容比较多,此处不贴出,需要的可以去下载资源,解压后查看,其强调最好使用已经官方已经提供好的服务,编译比较困难。
building.md非常重要,它是编译的主要依赖
原文:

Please note that prebuilt binaries are available on mongodb.org and may be the easiest way to get started, rather than building from source.

截图:
在这里插入图片描述

安装C编译环境

此处用到的C/C++,需要安装的C编译环境有 GCCG++Clangmakecmake

apk add gcc g++ clang make cmake

安装Python环境

编译过程是使用Python写的,根据docs/building.md文档说明,需要安装python及pip等,可依次安装

# 安装 py3
apk add python3
# 安装 pip
apk add py3-pip

安装编译相关的库文件

编译期间需要一些开发环境下使用的库文件,根据文档及经验,主要安装了以下文件

apk add musl-dev
apk add openssl-dev nss-dev gnutls-dev
apk add python3-dev
# 安装xz ,因为编译过程需要该包中的lzma工具
apk add xz xz-dev
# 安装 curl-dev ,因为编译时用到该开发包
apk add curl-dev

安装Python依赖

进入mongodb-src-r5.0.6文件夹,运行文档中提供的命令,安装Python依赖

cd /apps/mongodb-src-r5.0.6/
python3 -m pip install -r etc/pip/compile-requirements.txt

编译

编译 mongod 服务

# 只编译 mongod
  python3 buildscripts/scons.py DESTDIR=/apps/mongodb install-mongod

结果

经过大量努力,最终编译还是失败了,鉴于自己水平有限,此次尝试暂时搁置,待后期完善。期遇到的问题见 遇到的错误 章节。

总结

  1. 源码编译确实比较困难,正如官方所述。
  2. 抛弃Alpine发型版,改用官方支持的Linux发行版编译应该问题不大,待验证。
  3. 虽然尝试编译失败了,但是经验很珍贵。希望有大神尝试,并给出解决方案

遇到的错误

  • fatal error: Killed signal terminated program cc1plus compilation terminated.

该问题说明编译环境内存不足,我们是在Docker容器内编译,需要对该容器增加内存即可。Dokcer容器内存限制见文章>https://editor.csdn.net/md?not_checkout=1&articleId=123167831

注意build.md 中原文提到内存信息,编译mongod 大概需要13GB内存,原文如下:

About 13 GB of free disk space for the core binaries (mongod, mongos, and mongo) and about 600 GB for the install-all target.

在这里插入图片描述

  • error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'class JS::Value'; use assignment or value-initialization instead [-Werror=class-memaccess]

该问题没有二次重现
在这里插入图片描述

  • error: ‘res_nclose’ was not declared in this scope

该问题未找到解决方案
在这里插入图片描述

  • fatal error: gnu/libc-version.h: No such file or directory

该问题在安装完 libc
在这里插入图片描述

最后

以上就是无奈野狼为你收集整理的Docker官方推荐操作系统镜像Alpine源码安装MongoDB启动新的Alpine容器查看Alpine版本及内核信息更新Alpine包管理器获取MomngoDB源码安装C编译环境安装Python环境安装编译相关的库文件安装Python依赖编译结果总结遇到的错误的全部内容,希望文章能够帮你解决Docker官方推荐操作系统镜像Alpine源码安装MongoDB启动新的Alpine容器查看Alpine版本及内核信息更新Alpine包管理器获取MomngoDB源码安装C编译环境安装Python环境安装编译相关的库文件安装Python依赖编译结果总结遇到的错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部