sudo: sorry, you must have a tty to run sudo

sudo: sorry, you must have a tty to run sudo

We’re using an old version of Upstart, on Centos, to manage stopping and starting our Node.js daemons, and one of the things the script does, like any good deamon, is change the user of the deamon process from root to something more applicable, security and all that 😉

The scripts look a little like this

!upstart
description "Amazing Node.js Daemon"
author "idimmu"
start on runlevel [2345]
stop on shutdown
env PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
env NAME="amazing-daemon"
script
export HOME="/root"
cd /opt/idimmu/$NAME
echo $$ > /var/run/$NAME.pid
exec sudo -u idimmu /usr/bin/node /opt/idimmu/$NAME/server.js >> /var/log/$NAME/stdout.log 2>&1
end script
pre-start script
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (upstart) Starting $NAME" >> /var/log/$NAME/stdout.log
end script
pre-stop script
rm /var/run/$NAME.pid
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (upstart) Stopping $NAME" >> /var/log/$NAME/stdout.log
end script

Which is nice, as it means we can use Upstart to stop/start/status deamons really nicely. The equivalent init.d script looked really horrible.

Installing OpenSIPS on Redhat Enterprise Linux 5

We’ve got to set up a SIP Registrar for a fantastic new project that one of our clients recently announced 😉 on RHEL5 so we’re going to trial OpenSIPS, backed with MySQL to see how it performs.

There’s a RHEL5 repository mirror here https://centos.leurent.eu/ that I’ve mirrored locally. If you don’t know how to create your own repositories you can read about that here.

First off I installed the opensips-mysql.x86_64 package to guarantee we pull in OpenSIPS as well as it’s MySQL dependencies.

List Contents Of An RPM Package

Often when building RedHat RPM packages I want to make sure that the package built correctly and all the files are present before I actually install the RPM, but I do keep forgetting the command to do this, so here it is for prosperity!

<br /> rpm -qlp<br />

e.g.

<br /> root@build:/usr/src/redhat/SPECS# rpm -qlp ../RPMS/noarch/servicemap-0.16-1.noarch.rpm<br /> /var/www/html/servicemap<br /> /var/www/html/servicemap/amq.png<br /> /var/www/html/servicemap/amqfail.png<br /> /var/www/html/servicemap/amqreportingprov1prov1.png<br /> /var/www/html/servicemap/amqreportingprov1prov2.png<br /> /var/www/html/servicemap/amqreportingprov2prov1.png<br /> /var/www/html/servicemap/amqreportingprov2prov2.png<br /> /var/www/html/servicemap/amqsdrprov1prov1.png<br /> /var/www/html/servicemap/amqsdrprov1prov2.png<br /> /var/www/html/servicemap/amqsdrprov2prov1.png<br /> /var/www/html/servicemap/amqsdrprov2prov2.png<br /> /var/www/html/servicemap/amqslee1fail.png<br /> /var/www/html/servicemap/amqslee1prov1.png<br /> /var/www/html/servicemap/amqslee1prov2.png<br /> /var/www/html/servicemap/amqslee2fail.png<br /> /var/www/html/servicemap/amqslee2prov1.png<br /> /var/www/html/servicemap/amqslee2prov2.png<br /> /var/www/html/servicemap/amqvqeprov1prov1.png<br /> /var/www/html/servicemap/amqvqeprov1prov2.png<br /> /var/www/html/servicemap/amqvqeprov2prov1.png<br /> /var/www/html/servicemap/amqvqeprov2prov2.png<br /> /var/www/html/servicemap/amqwebserviceprov1prov1.png<br /> /var/www/html/servicemap/amqwebserviceprov1prov2.png<br /> /var/www/html/servicemap/amqwebserviceprov2prov1.png<br /> /var/www/html/servicemap/amqwebserviceprov2prov2.png<br /> /var/www/html/servicemap/checks.php<br /> /var/www/html/servicemap/config.php<br /> /var/www/html/servicemap/hash.png<br /> /var/www/html/servicemap/index.php<br /> /var/www/html/servicemap/nagios.php<br /> /var/www/html/servicemap/script.php<br /> /var/www/html/servicemap/sleevipactivenotok.png<br /> /var/www/html/servicemap/style.php<br /> /var/www/html/servicemap/ttprov1.png<br /> /var/www/html/servicemap/ttprov1prov2.png<br /> /var/www/html/servicemap/ttprov2.png<br /> /var/www/html/servicemap/ttprov2prov1.png<br /> /var/www/html/servicemap/ttprovfail.png<br /> /var/www/html/servicemap/ttslee1.png<br /> /var/www/html/servicemap/ttslee1slee2.png<br /> /var/www/html/servicemap/ttslee2.png<br /> /var/www/html/servicemap/ttsleefail.png<br /> /var/www/html/servicemap/ttvipactivenotok.png<br /> /var/www/html/servicemap/ttvipactiveok.png<br />

Error: Could not open command file ‘/var/log/nagios/rw/nagios.cmd’ for update! on RedHat

I’m currently setting up some new clusters under RedHat and each cluster is getting it’s own Nagios instance, trying to use the web based management interface however threw and error.

I’ve seen this error before on Ubuntu and was getting it again under RedHat. Of course I revisited my Ubuntu solution and realised that it didn’t help at all, due to using dpkg overrides, also the situation was very different!

<br /> root@nagios:/var/log/nagios/rw# ls -al<br /> total 8<br /> drwxrwxr-x 2 nagios apache 4096 Oct 30 13:37 .<br /> drwxrwxr-x 5 nagios apache 4096 Oct 30 13:40 ..<br />

Creating A Local and HTTP RedHat Yum Repository

We’re rolling out a RedHat platform for a major product delivery to a client in the next couple of weeks, which is a great chance for me to build a fresh platform using all the skills I’ve acquired and actually do things properly (TM).

We’re using RedHat Enterprise Linux 5 because this is a very critical deployment and we want an Operating System that is certified to both our hardware and software applications, something that unfortunately Ubuntu does not deliver.

rpmdb: Lock table is out of available locker

I had a crazy weird bug today whilst running Puppet on one of our CentOS boxes where no packages were being installed. A quick investigation with yum yielded the following scenario!

Id I tried to use yum as root or with sudo it gave the following error ..

<br /> [idimmu@server ~]$ sudo yum check-update<br /> rpmdb: Lock table is out of available locker entries<br /> error: db4 error(22) from db->close: Invalid argument<br /> error: cannot open Providename index using db3 - Cannot allocate memory (12)<br /> Repository update is listed more than once in the configuration<br /> Repository base is listed more than once in the configuration<br /> Setting up repositories<br /> https://www.mirrorservice.org/sites/mirror.centos.org/Null/updates/i386/repodata/repomd.xml: [Errno 14] HTTP Error 404: Not Found<br /> Trying other mirror.<br /> Cannot open/read repomd.xml file for repository: update<br /> failure: repodata/repomd.xml from update: [Errno 256] No more mirrors to try.<br /> Error: failure: repodata/repomd.xml from update: [Errno 256] No more mirrors to try.<br />