在升级时禁用MongoDB重启(RPM包)

时间:2017-01-19 08:52:29

标签: mongodb rpm yum

MongoDB RPM软件包(由官方repo.mongodb.org存储库提供,版本3.4.1)在软件包升级时自动无条件地重启服务器。此行为硬编码到postun处理程序:

UUID.randomUUID()

这是一种不方便且危险的行为,尤其是在使用配置管理工具设置服务器时。例如,我想先运行一个完整的Ansible手册来设置我的服务器,然后逐个手动重启MongoDB,以完全控制情况。

有没有办法改变或禁用它?可能是其他MongoDB软件包吗?或者一些模糊的yum / rpm命令选项来禁用scriptlet?

我知道我可以切换到简单的.tar.gz安装,但这是最后的选择。

1 个答案:

答案 0 :(得分:2)

如果您首先下载rpm并使用--nopostun手动安装它;您可以使用rpm -Uvh mongodb***rpm --nopostun 选项:

  --noscripts
  --nopre
  --nopost
  --nopreun
  --nopostun
  --nopretrans
  --noposttrans
         Don't execute the scriptlet of the same name.  The --noscripts option is equivalent to
         --nopre --nopost --nopreun --nopostun --nopretrans --oposttrans
         and turns off the execution of the corresponding %pre, %post, %preun, %postun %pretrans, and %posttrans scriptlet(s).
来自rpm手册页的

yum

afaik --nopostun无法处理 var request = require('request'); var generalConfig = require('./config.js') var cron = require('node-cron'); var async = require('async'); var failures = { webEndManager: 0, userManager: 0 } cron.schedule('* * * * * *', function () { async.parallel({ webEndManager: function (callback) { request.get({ url: generalConfig.webEndManager }, function (error, response, body) { if (response) { failures.webEndManager = 0; callback(null, 'success'); } else { failures.webEndManager = failures.webEndManager + 1; if (failures.webEndManager == 1) callback(null, 'fail'); else callback(null, 'success'); } }); console.log("one 3000"); }, userManager: function (callback) { request.get({ url: generalConfig.userManager }, function (error, response, body) { if (response) { failures.webEndManager = 0; callback(null, 'success'); } else { failures.webEndManager = failures.webEndManager + 1; if (failures.webEndManager == 1) callback(null, 'fail'); else callback(null, 'success'); } }); console.log("one 5001"); }, }, function (err, results) { // results is now equals to: {one: 'abc\n', two: 'xyz\n'} console.log(results); }); console.log('running a task every minute'); }); 和其他标志。