MongoDB RPM软件包(由官方repo.mongodb.org存储库提供,版本3.4.1)在软件包升级时自动无条件地重启服务器。此行为硬编码到postun处理程序:
UUID.randomUUID()
这是一种不方便且危险的行为,尤其是在使用配置管理工具设置服务器时。例如,我想先运行一个完整的Ansible手册来设置我的服务器,然后逐个手动重启MongoDB,以完全控制情况。
有没有办法改变或禁用它?可能是其他MongoDB软件包吗?或者一些模糊的yum / rpm命令选项来禁用scriptlet?
我知道我可以切换到简单的.tar.gz安装,但这是最后的选择。
答案 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');
});
和其他标志。