centos7 安装mongo ./mongod: error while loading shared libraries: libnetsnmpmibs.so.31:

本文记录了作者两次安装MongoDB过程中遇到的问题及解决方法。主要问题包括连接被拒绝和加载共享库失败等,最终通过安装net-snmp包解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

入坑两次:第二次几近崩溃,容我吐槽一下,以表明治。。

问题是这:

NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: errno:111 Connection refused
./mongod: error while loading shared libraries: libnetsnmpmibs.so.31: cannot open shared object file: No such file or directory


第一次是2018年2月3号;今天是2018年4月24,时隔近3个月,由于ECS到期要迭代原因,所有东西重装,两次都是tar.gz安装mongo, data目录db与logs/mongodb.log已创建好,mongo.conf如下

# 设置数据文件的存放目录
dbpath = /alex/data/mongo/mongo3.2.15/data/db
# 设置日志文件的存放目录及其日志文件名
logpath = /alex/data/mongo/mongo3.2.15/data/logs/mongodb.log
# 设置端口号(默认的端口号是 27017)
port = 27017 
# 设置为以守护进程的方式运行,即在后台运行
fork = true
# nohttpinterface = true
nohttpinterface = true
#登录验证
#noauth=false


问题开始出现~2:

操作步骤:1

[root@alex /alex/data/mongo/mongo3.2.15/bin]$ ./mongo
MongoDB shell version: 3.2.15
connecting to: test
2018-04-24T21:53:16.940+0800 W NETWORK[thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: errno:111 Connection refused
2018-04-24T21:53:16.940+0800 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:229:14
@(connect):1:6

exception: connect failed

不服:进行操作步骤2

[root@alex /alex/data/mongo/mongo3.2.15]$ ./bin/mongod --dbpath=/alex/data/mongo/mongo3.2.15/data/db/
./bin/mongod: error while loading shared libraries: libnetsnmpmibs.so.31: cannot open shared object file: No such file or directory
[root@alex /alex/data/mongo/mongo3.2.15]$ cd bin/
[root@alex /alex/data/mongo/mongo3.2.15/bin]$ ./mongod --dbpath=/alex/data/mongo/mongo3.2.15/data/db/
./mongod: error while loading shared libraries: libnetsnmpmibs.so.31: cannot open shared object file: No such file or directory
[root@alex /alex/data/mongo/mongo3.2.15/bin]$ vim mongo.conf 
[root@alex /alex/data/mongo/mongo3.2.15/bin]$ ./mongod --dbpath=/alex/data/mongo/mongo3.2.15/data/db/^C
[root@alex /alex/data/mongo/mongo3.2.15/bin]$ ./mongod --config mongo.conf
./mongod: error while loading shared libraries: libnetsnmpmibs.so.31: cannot open shared object file: No such file or directory
[root@alex /alex/data/mongo/mongo3.2.15/bin]$ ./mongod --config mongo.conf  
./mongod: error while loading shared libraries: libnetsnmpmibs.so.31: cannot open shared object file: No such file or directory
[root@alex /alex/data/mongo/mongo3.2.15/bin]$ ls
bsondump  mongo  mongo.conf  mongod  mongodecrypt  mongodump  mongoexport  mongofiles  mongoimport  mongooplog  mongoperf  mongorestore  mongos  mongosniff  mongostat  mongotop
[root@alex /alex/data/mongo/mongo3.2.15/bin]$ chmod 777 mongod
[root@alex /alex/data/mongo/mongo3.2.15/bin]$ ./mongod --config mongo.conf  
./mongod: error while loading shared libraries: libnetsnmpmibs.so.31: cannot open shared object file: No such file or directory
然后各种百度,但是内心最深处就是感觉哪个地方没弄好,开始百度“centos7 安装mongo入门,看官方文档”,都没提起

“libnetsnmpmibs.so.31”不小心翻到2月3号给人家留言的博客,定位到这个时间点,本想查看自己的csdn,发现并没做记录哭无奈之下去旧的ecs上蹭人品,用history看一下操作记录指令,惊奇的发现前1000行竟然是从mongo开始的。感谢上帝的怜悯

37  cd /space/data/mongo3.2.15/bin/
   38  ls
   39  ./mongod --config mongo.conf 
   40  sudo service mongod start
   41  cd ../
   42  ls
   43  cd ../
   44  ls
   45  cd mongo3.2.15/
   46  ls
   47  cd bin/
   48  ls
   49  ./mongod
   50  ls
   51  ./mongo
   52  ./mongod
   53  yum whatprovides libstdc++.so.6
   54  yum whatprovides libstdc++.so.31
   55  yum whatprovides  libnetsnmpmibs.so.31
   56  yum -y install net-snmp-agent-libs-5.7.2-28.el7_4.1.i686
   57  ./mongod --config mongo.conf 
   58  ./mongod --dbpath=/space/data/mongo3.2.15/data/db --logpath=/space/data/mongo3.2.15/data/logs/mongodb.log --logappend --fork
   59  yum whatprovides  libnetsnmpmibs.so.31
   60  mongod --dbpath=/space/data/mongo3.2.15/data/db --logpath=/space/data/mongo3.2.15/data/logs/mongodb.log --logappend --fork
   61  sudo ln -s /lib/libcrypto.so.0.9.8 /lib/libnetsnmpmibs.so.31
   62  sudo ln -s /lib/libcrypto.so.0.9.8 /lib/libnetsnmpmibs.so.31 -y
   63  ln --help
   64  ls
   65  ./mongod
   66  cat mongod
   67  ./mongod
   68  ls
   69  sudo -i
   70  cd /space/data/mongo3.2.15/bin/
   71  ls
   72  ./mongod
   73  sudo ln -s ~/Downloads/mongodb-correct-version/bin/mongod /usr/local/sbin/bin/mongod
   74  sudo ln -s ~/Downloads/mongodb-correct-version/bin/mongod /space/data/mongo3.2.15/bin/mongod
   75  sudo ln -s ~/Downloads/mongodb-correct-version/bin/mongod /space/data/mongo3.2.15/bin/mongod  --version
   76  ./mongod --dbpath=/space/data/mongo3.2.15/data/db --logpath=/space/data/mongo3.2.15/data/logs/mongodb.log --logappend --fork
   77  cd /etc/
   78  ls
   79  cd init.d/
   80  ls
   81  mongod --dbpath ~/data/db/
   82  cd /space/data/mongo3.2.15/bin/
   83  mongod --dbpath ~/data/db/
   84   sudo cp /lib/x86_64-linux-gnu/libssl.so.1.0.0 /usr/lib/libssl.so.31
   85  sudo apt-get update
   86   sudo apt-get install snmp
   87  yum install -y snmp
   88  yum -y install snmp
   89  cd /space/data/mongo3.2.15/bin/
   90  ls
   91  ll -lhtr /usr/lib64/libnetsnmp.so.31 
   92  mv /usr/lib64//usr/lib64/libnetsnmp.so.31  /tmp/
   93  mv /usr/lib64/libnetsnmp.so.31  /tmp/
   94  ps -ef | grep mongo
   95  kill 32317
   96  ./mongod --dbpath=/space/data/mongo3.2.15/data/db --logpath=/space/data/mongo3.2.15/data/logs/mongodb.log --logappend --fork –smallfiles –nojournal
   97  mv /tmp/libnetsnmp.so.31  /usr/lib64/
   98  ./mongod --dbpath=/space/data/mongo3.2.15/data/db --logpath=/space/data/mongo3.2.15/data/logs/mongodb.log --logappend --fork –smallfiles –nojournal
   99  ./mongod --dbpath=/space/data/mongo3.2.15/data/db --logpath=/space/data/mongo3.2.15/data/logs/mongodb.log  –smallfiles –nojournal &
  100  ./mongod -dbpath /space/data/mongo3.2.15/data/db -logpath /space/data/mongo3.2.15/data/logs/mongodb.log  –smallfiles –nojournal &
  101  ./mongod -dbpath /space/data/mongo3.2.15/data/db -logpath /space/data/mongo3.2.15/data/logs/mongodb.log  –smallfiles –nojournal
  102  ./mongod -dbpath /space/data/mongo3.2.15/data/db -logpath /space/data/mongo3.2.15/data/logs/mongodb.log
  103  ./mongo
  104  ./mongo --port 40000
  105  service mongod start
  106  sudo -i
  107  sudo -i
  108  cd /tmp/
  109  ls
立刻警醒到:这台借别人新买ECS的“ net-snmp”没装:

此处参考博客:https://blog.youkuaiyun.com/qq_17202587/article/details/78538065

在启动 mongod的时候遇到error while loading shared libraries: libnetsnmpagent.so.20: cannot open shared object file: No such file or directory

该error 是因为未装net-snmp

直接连接外网的Linux服务器可直接使用:yum install net-snmp


[root@alex /alex/data/mongo/mongo3.2.15/bin]$ yum install net-snmp 
base                                                                                                                                                                                                                                                   | 3.6 kB  00:00:00     
epel                                                                                                                                                                                                                                                   | 4.7 kB  00:00:00     
extras                                                                                                                                                                                                                                                 | 3.4 kB  00:00:00     
updates                                                                                                                                                                                                                                                | 3.4 kB  00:00:00     
Loading mirror speeds from cached hostfile
Resolving Dependencies
  Installing : 1:net-snmp-libs-5.7.2-28.el7_4.1.x86_64                                                                                                                                                                                                                    1/4 
  Installing : 1:net-snmp-agent-libs-5.7.2-28.el7_4.1.x86_64                                                                                                                                                                                                              2/4 
  Installing : perl-Data-Dumper-2.145-3.el7.x86_64                                                                                                                                                                                                                        3/4 
  Installing : 1:net-snmp-5.7.2-28.el7_4.1.x86_64                                                                                                                                                                                                                         4/4 
  Verifying  : perl-Data-Dumper-2.145-3.el7.x86_64                                                                                                                                                                                                                        1/4 
  Verifying  : 1:net-snmp-5.7.2-28.el7_4.1.x86_64                                                                                                                                                                                                                         2/4 
  Verifying  : 1:net-snmp-agent-libs-5.7.2-28.el7_4.1.x86_64                                                                                                                                                                                                              3/4 
  Verifying  : 1:net-snmp-libs-5.7.2-28.el7_4.1.x86_64                                                                                                                                                                                                                    4/4 


Installed:
  net-snmp.x86_64 1:5.7.2-28.el7_4.1                                                                                                                                                                                                                                          


Dependency Installed:
  net-snmp-agent-libs.x86_64 1:5.7.2-28.el7_4.1                                                 net-snmp-libs.x86_64 1:5.7.2-28.el7_4.1                                                 perl-Data-Dumper.x86_64 0:2.145-3.el7                                                
Complete!
[root@alex /alex/data/mongo/mongo3.2.15/bin]$ ./mongo
MongoDB shell version: 3.2.15
connecting to: test
Server has startup warnings:
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] 
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] 
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] 
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] 
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 7283 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
2018-04-24T23:36:09.715+0800 I CONTROL  [initandlisten] 
MongoDB Enterprise > show dbs
local  0.000GB
MongoDB Enterprise > use hellotables
switched to db hellotables
MongoDB Enterprise > db.hellotales.insert({"name":"菜鸟教程"})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > show tables

完成,,这次再晚也要记录,可以洗漱睡觉去了~

<think>我们正在处理一个关于加载COCO数据集时遇到路径不存在的错误问题。根据引用内容,用户可能是在进行计算机视觉或深度学习项目,涉及到数据集的处理。错误信息明确指出了路径不存在,因此我们需要检查数据集路径设置。 首先,需要确认COCO数据集的存放路径是否正确。通常,在代码中会指定数据集的根目录,例如: data_dir = './data/coco' 然后,检查该路径下是否包含必要的文件,例如annotations(标注文件)和images(图像文件夹)。COCO数据集的标准结构如下: - data - coco - annotations - instances_train2017.json - instances_val2017.json - train2017 - val2017 如果路径设置正确,但程序仍然报错,可能是由于以下原因: 1. 路径字符串错误(如拼写错误、多余的斜杠等) 2. 相对路径与绝对路径问题(建议使用绝对路径) 3. 数据集未正确下载或解压 解决方案: 1. 检查代码中设置的数据集路径,确保与实际存放路径一致。 2. 使用绝对路径:例如在Linux系统中可能是 '/home/user/data/coco',在Windows系统中可能是 'C:\\data\\coco'(注意转义)。 3. 验证数据集是否完整:检查annotations文件夹和images文件夹是否存在,并且文件数量正确。 另外,参考用户提供的引用[1]中,他们使用了split_dataset.py脚本来划分TACO数据集,这提示用户可能在进行数据集划分操作。如果用户是在划分数据集后出现此问题,那么可能是划分后的json文件保存路径与代码中读取的路径不一致。 因此,建议用户: - 检查数据集划分脚本的输出路径是否与主程序读取的路径一致。 - 检查划分后的json文件是否生成在指定目录下。 如果用户没有划分数据集,而是直接使用COCO数据集,那么需要确认下载的数据集是否已经按照标准结构放置。 示例代码:假设我们使用pycocotools来加载COCO数据集,通常这样写: from pycocotools.coco import COCO annFile = './data/coco/annotations/instances_train2017.json' coco = COCO(annFile) 如果annFile不存在,就会报错。因此,需要确保这个文件存在。 此外,用户可能使用了某个框架(如Detectron2、MMDetection等)提供的默认配置,这些框架通常有预定义的数据集路径。如果用户将数据集放在其他位置,则需要在配置中修改路径。 总结步骤: 1. 确认数据集路径。 2. 检查路径下的文件是否存在。 3. 检查代码中的路径设置(相对路径还是绝对路径,注意当前工作目录)。 4. 如果使用了框架,检查框架要求的数据集结构。 如果问题仍然存在,建议用户打印当前工作目录和尝试访问的完整路径,以便进一步调试。 相关问题: 1. 如何正确设置COCO数据集的目录结构? 2. 在深度学习中,如何处理数据集路径问题? 3. 如何检查文件路径是否存在并打印出来?</think>### 加载COCO数据集时路径不存在问题的解决方案 当出现"Error loading data from COCO dataset: path does not exist"错误时,通常是由于数据集路径配置不正确导致的。以下是逐步解决方案: #### 1. **验证数据集路径** - 检查代码中指定的COCO数据集路径是否正确: ```python # 示例:PyTorch中COCO数据集的典型路径配置 data_dir = "./data/coco" # 需确保此路径存在 ``` - 在终端验证路径是否存在: ```bash ls ./data/coco # Linux/macOS dir .\data\coco # Windows ``` #### 2. **检查目录结构** COCO数据集的标准结构应为: ``` coco/ ├── annotations/ │ ├── instances_train2017.json │ └── instances_val2017.json ├── train2017/ # 训练集图片 └── val2017/ # 验证集图片 ``` 若结构不符,需重新组织文件或修改代码中的路径指向[^1]。 #### 3. **使用绝对路径替代相对路径** 相对路径易受工作目录影响,建议改为: ```python import os data_dir = os.path.abspath("./data/coco") # 转换为绝对路径 ``` #### 4. **检查数据集加载代码** 以PyTorch的`torchvision.datasets.CocoDetection`为例: ```python from torchvision.datasets import CocoDetection # 正确示例 dataset = CocoDetection( root="./data/coco/train2017", # 图片目录 annFile="./data/coco/annotations/instances_train2017.json" # 标注文件 ) ``` 确保: - `root`指向图片文件夹 - `annFile`指向JSON标注文件 #### 5. **数据集划分问题** 若手动划分数据集(如引用[1]的TACO数据集处理方式),需确保: - 划分脚本生成的JSON文件路径正确 - 图片文件与标注文件的对应关系未破坏 #### 6. **环境配置检查** 在Jupyter等环境中,工作目录可能与脚本位置不同: ```python import os print("当前工作目录:", os.getcwd()) # 确认实际工作目录 ``` #### 7. **解决方案流程图 ```mermaid graph TD A[报错 Path does not exist] --> B{路径是否存在?} B -->|否| C[检查路径拼写/大小写] B -->|是| D{目录结构正确?} D -->|否| E[按标准结构重组文件] D -->|是| F{使用绝对路径?} F -->|否| G[改用os.path.abspath] F -->|是| H[检查环境工作目录] ``` ### 相关问题 1. 如何正确划分COCO格式的数据集? 2. COCO数据集与其他格式(如PASCAL VOC[^2])如何转换? 3. 加载COCO数据集时出现KeyError应如何解决? 4. 如何在分布式训练中正确配置数据集路径? 5. COCO数据集的标注JSON文件结构解析? [^1]: 参考数据集划分工具:`detector/split_dataset.py --dataset_dir ./data`,需确保输出路径正确 [^2]: PASCAL VOC2012数据集结构参考:deep-learning-for-image-processing/pytorch_object_detection/yolov3_spp
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值