<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" >

<channel>
	<title>spiralbound.net &#187; unix</title>
	<atom:link href="http://spiralbound.net/tag/unix/feed" rel="self" type="application/rss+xml" />
	<link>http://spiralbound.net</link>
	<description>my digital notebook</description>
	<lastBuildDate>Sat, 24 Jul 2010 03:47:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>ZoneType.sh Version 2.0</title>
		<link>http://spiralbound.net/2010/01/26/zonetype-sh-version-2-0</link>
		<comments>http://spiralbound.net/2010/01/26/zonetype-sh-version-2-0#comments</comments>
		<pubDate>Tue, 26 Jan 2010 17:29:29 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[cfengine]]></category>
		<category><![CDATA[global zone]]></category>
		<category><![CDATA[local zone]]></category>
		<category><![CDATA[prtdiag]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[solaris 10]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[zonetype.sh]]></category>

		<guid isPermaLink="false">http://spiralbound.net/?p=1316</guid>
		<description><![CDATA[We just started supporting Solaris 10 in our VMware cluster so I had to update my zone type script to detect if the OS is running there. I&#8217;m not sure how I feel about depending on the output of ptrdiag since the interface is labeled &#8220;unstable&#8221;, but it works for now, and I really don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>We just started supporting Solaris 10 in our VMware cluster so I had to update <a href="http://spiralbound.net/2009/03/03/script-to-determine-solaris-10-zone-type">my zone type script</a> to detect if the OS is running there. I&#8217;m not sure how I feel about depending on the output of <strong>ptrdiag</strong> since the interface is labeled &#8220;unstable&#8221;, but it works for now, and I really don&#8217;t see Sun changing the first line of output where the system configuration is listed. Anyhow, when issued with the -v or &#8211;vmware flag, the script returns 0 if it&#8217;s running on the cluster and 1 if it is not.</p>
<p>Usage:</p>
<p># zonetype.sh -g or &#8211;global<br />
Return 0: The machine is a global zone with 1 or more local zones<br />
Return 1: The machine is not a global zone</p>
<p># zonetype.sh -l or &#8211;local<br />
Return 0: The machine is a local zone<br />
Return 1: The machine is not a not a local zone</p>
<p># zonetype.sh -v or &#8211;vmware<br />
Return 0: The machine is running on a VMware hypervisor<br />
Return 1: The machine is not running in VMware</p>
<pre>
#! /bin/bash
#
# When issued with the -g or --global flag, this script will return:
# 0 if the machine is a global zone and has one or more local zones.
# Otherwise, it will return 1
#
# When issued with the -l or --local flag, this script will return:
# 0 if if is a local zone and 1 if it is not
#
# When issued with the -v or --vmware flag, this script will return:
# 0 if it is a vmware host and 1 if not.
#

list=( `/usr/sbin/zoneadm list -civ | awk '{ print $1 }'`)

  case "$1" in
    -g|--global)
        # If the third element in our array is null, set it to 0
        if [ "${list[2]}" == ""  ]; then
        list[2]=0
        fi
        # This is a global zone only if it has one or more local zones.
        if [ ${list[1]} -eq 0 ] &#038;&#038; [ ${list[2]} -ge 1 ]; then
        # 1 is returned if we have a global and local zone,
        # otherwise, we return 0
                exit 0
            else
                exit 1
        fi
              ;;
    -l|--local)
        # If the second element in our array is = or > 1, it is a local zone.
        if [ ${list[1]} -ge 1 ]; then
        # Return 1 if this is a local zone, otherwise return 0.
                exit 0
            else
                exit 1
        fi

              ;;
   -v|--vmware)
        # Don't run our check on local zones... Prtdiag can't run there
        if [ ${list[1]} != 0 ]; then
                exit 1
           else
                vmhost=( `/usr/sbin/prtdiag | grep System | awk '{ print $5 }'`)
                if [ $vmhost == VMware ]; then
                        #If the host is running on the vmware cluster return 0,
                        # otherwise, return 1
                        exit 0
                else
                        exit 1
                fi
        fi
              ;;
        *)
        echo "Usage: /local/adm/zonetype.sh {-l | --local | -g | --global | -v | --vmware}"
        exit 1
  esac
</pre>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2010/01/26/zonetype-sh-version-2-0/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UNIX &#8211; Find Files that Changed Within Time Window</title>
		<link>http://spiralbound.net/2009/11/02/unix-find-files-that-changed-within-time-window</link>
		<comments>http://spiralbound.net/2009/11/02/unix-find-files-that-changed-within-time-window#comments</comments>
		<pubDate>Mon, 02 Nov 2009 18:57:56 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[newer]]></category>
		<category><![CDATA[posix]]></category>
		<category><![CDATA[touch]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://spiralbound.net/?p=373</guid>
		<description><![CDATA[Every so often us lowly UNIX admins find ourselves needing to search a file system for files that have been created or changed within a certain time window. In other words, those files that are newer than time &#8220;X&#8221;, but not newer than time &#8220;Y&#8221;. There are a number of ways to accomplish this, but [...]]]></description>
			<content:encoded><![CDATA[<p>Every so often us lowly UNIX admins find ourselves needing to search a file system for files that have been created or changed within a certain time window. In other words, those files that are newer than time &#8220;X&#8221;, but not newer than time &#8220;Y&#8221;. There are a number of ways to accomplish this, but my preferred method is to create two reference files to indicate the beginning and end of my window and use the &#8220;-newer&#8221; and &#8220;! -newer&#8221; flags to search for files that changed within that window.<br />
<code><br />
# touch -amt 200910260000 /tmp/starttime<br />
# touch -amt 200910262359 /tmp/endtime<br />
# find / -type f -newer /tmp/starttime -a ! -newer /tmp/endtime<br />
</code><br />
The guys at  virtuelvis.com <a href="http://virtuelvis.com/archives/2008/10/finding-files-modified-on-a-certain-date">point out</a> that it is more elegant to accomplish this without creating two files, but their solution does not work with operating systems that use strict <a href="http://en.wikipedia.org/wiki/POSIX">POSIX</a> compliant &#8220;find&#8221; implementations, making it of little use in some cases. For the curious, here is their example:<br />
<code><br />
# find . -type f -newermt 2009-10-26 ! -newermt 2009-10-27<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2009/11/02/unix-find-files-that-changed-within-time-window/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy 1234567890&#8242;th Second UNIX!</title>
		<link>http://spiralbound.net/2009/01/27/happy-1234567890-second-unix</link>
		<comments>http://spiralbound.net/2009/01/27/happy-1234567890-second-unix#comments</comments>
		<pubDate>Tue, 27 Jan 2009 19:31:24 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[1234567890]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[epoch]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[UNIX time]]></category>
		<category><![CDATA[UTC]]></category>

		<guid isPermaLink="false">http://spiralbound.net/?p=1144</guid>
		<description><![CDATA[Today, Friday February 13, at 3:31 PM (PST), the UNIX time will read exactly 1234567890. So exacly what is all this excitement about UNIX being able to count to 10? Surely, the operating system that is slowly but steadily putting Microsoft out of business must be able to do that. Well, it&#8217;s actually the UNIX [...]]]></description>
			<content:encoded><![CDATA[<p>Today, Friday February 13, at 3:31 PM (PST), the UNIX time will read exactly 1234567890. So exacly what is all this excitement about UNIX being able to count to 10? Surely, the operating system that is slowly but steadily <a href="http://www.talkibie.com/technology/606/">putting Microsoft out of business</a> must be able to do that. Well, it&#8217;s actually the UNIX time stamp, and what has all of us nerds talking is really just the fact that the numbers have never lined up in sequence like this before.</p>
<p>So what the heck is this UNIX time anyhow? Well, simply put, it&#8217;s actually the exact number of seconds since the the Unix epoch. This was 00:00:00 UTC on January 1, 1970.</p>
<p>From <a href="http://en.wikipedia.org/wiki/Unix_time">Wikipedia</a>:</p>
<blockquote><p>
It is not a linear representation of time nor a true representation of UTC (though it is frequently mistaken for both) as the times it represents are UTC but it has no way of representing UTC leap seconds (e.g. 1998-12-31 23:59:60).
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2009/01/27/happy-1234567890-second-unix/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://spiralbound.net/wp-content/uploads/2009/01/gijoe-firealarm.mpg" length="1179652" type="video/mpeg" />
<enclosure url="http://spiralbound.net/wp-content/uploads/2009/01/deep6-11.mpg" length="1472516" type="video/mpeg" />
<enclosure url="http://spiralbound.net/wp-content/uploads/2009/01/gijoe-porksand.mpg" length="1947652" type="video/mpeg" />
<enclosure url="http://spiralbound.net/wp-content/uploads/2009/01/gijoebodymassage.mov" length="1074176" type="video/quicktime" />
<enclosure url="http://spiralbound.net/wp-content/uploads/2009/01/gijoe-reggae.mov" length="1801785" type="video/quicktime" />
<enclosure url="http://spiralbound.net/wp-content/uploads/2009/01/deep6-1.mpg" length="1472516" type="video/mpeg" />
		</item>
		<item>
		<title>Install Solaris Package in Alternate Base Directory</title>
		<link>http://spiralbound.net/2008/12/28/install-solaris-package-in-alternate-base-directory</link>
		<comments>http://spiralbound.net/2008/12/28/install-solaris-package-in-alternate-base-directory#comments</comments>
		<pubDate>Sun, 28 Dec 2008 23:25:59 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[admin]]></category>
		<category><![CDATA[admin file]]></category>
		<category><![CDATA[basedir]]></category>
		<category><![CDATA[defaults]]></category>
		<category><![CDATA[packages]]></category>
		<category><![CDATA[pkgadd]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://spiralbound.net/?p=376</guid>
		<description><![CDATA[Unless you specify a different administrative file, the pkgadd command reads &#8220;/var/sadm/install/admin/default&#8221;, which specifies the base directory as &#8220;/opt&#8221;. Do not change the settings in this file, but rather create a custom admin file and enter an alternate &#8220;basedir&#8221; directive if you want to install your package into a different directory. We are going to [...]]]></description>
			<content:encoded><![CDATA[<p>Unless you specify a different administrative file, the pkgadd command reads &#8220;/var/sadm/install/admin/default&#8221;, which specifies the base directory as &#8220;/opt&#8221;. Do not change the settings in this file, but rather create a custom admin file and enter an alternate &#8220;basedir&#8221; directive if you want to install your package into a different directory. We are going to install our package into &#8220;/var/applications&#8221;, and call our custom admin file &#8220;custom&#8221;.</p>
<p>First, create and edit &#8220;/var/sadm/install/admin/custom&#8221;, adding a line similar to this:<br />
basedir=/var/applications/$PKGINST</p>
<p>Next, issue the pkgadd command with the &#8220;-a&#8221; flag to call you alternative admin file:</p>
<p>pkgadd -d device -a custom PackageName</p>
<p>This really comes in handy when your customers want to retain control over their packages, but you don&#8217;t want to give them access to write packages into the system area. More detailed instructions can be found <a href="http://snap.nlc.dcccd.edu/reference/sysadmin/julian/ch13/286-288.html">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2008/12/28/install-solaris-package-in-alternate-base-directory/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strange X11 Forwarding Problem</title>
		<link>http://spiralbound.net/2007/12/17/strange-x11-forwarding-problem</link>
		<comments>http://spiralbound.net/2007/12/17/strange-x11-forwarding-problem#comments</comments>
		<pubDate>Mon, 17 Dec 2007 20:33:43 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[display]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[forward]]></category>
		<category><![CDATA[full]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[rejected]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[wrong authentication]]></category>
		<category><![CDATA[X11]]></category>
		<category><![CDATA[XWindows]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2007/12/17/strange-x11-forwarding-problem</guid>
		<description><![CDATA[I started getting this error: X11 connection rejected because of wrong authentication when trying to forward X11 applications from a Linux server to my Mac. I had been forwarding the display on this server for years, so I was a little unsure what could be causing it. In the end, it turned out that I [...]]]></description>
			<content:encoded><![CDATA[<p>I started getting this error:<br />
<code>X11 connection rejected because of wrong authentication</code><br />
when trying to forward X11 applications from a Linux server to my Mac. I had been forwarding the display on this server for years, so I was a little unsure what could be causing it. In the end, it turned out that I had filled up /var, and X11 could not write to &#8220;/var/log/XFree86.0.log&#8221;. It was an easy fix, but the error was certainly no help.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2007/12/17/strange-x11-forwarding-problem/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP and Sed for String Substitution</title>
		<link>http://spiralbound.net/2007/12/12/php-and-sed-for-string-substitution</link>
		<comments>http://spiralbound.net/2007/12/12/php-and-sed-for-string-substitution#comments</comments>
		<pubDate>Wed, 12 Dec 2007 19:17:51 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[spaces]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[str_replace]]></category>
		<category><![CDATA[substitution]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[unix find]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2007/12/12/php-and-sed-for-string-substitution</guid>
		<description><![CDATA[I needed to replace a string in several thousand files scattered all over the filesystem on one of our servers. I used find to create a list of files that needed to be changed, along with their complete path and called it "list.txt". It looked something like this: /path/to/file/one/fileone.html /path/to/file/two/filetwo.php /path/to/file/three/filethree.htm /path/to/directory with spaces/filefour.txt and [...]]]></description>
			<content:encoded><![CDATA[<p>I needed to replace a string in several thousand files scattered all over the filesystem on one of our servers. I used find to create a list of files that needed to be changed, along with their complete path and called it "list.txt". It looked something like this:</p>
<p><code><br />
/path/to/file/one/fileone.html<br />
/path/to/file/two/filetwo.php<br />
/path/to/file/three/filethree.htm<br />
/path/to/directory with spaces/filefour.txt<br />
and so on...<br />
</code></p>
<p>I worked out the "sed" command to do the in place editing, and <a href="http://nosheep.net">Zach</a> helped me whip up a quick PHP script to read the contents of "list.txt" into an array and iterate through it. He was also nice enough to show me how to use "str_replace" to escape any annoying spaces that happened to find their way into the names of directories.</p>
<div class="igBar"><span id="lphp-2"><a href="#" onclick="javascript:showPlainTxt('php-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-2">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$files</span>=<a href="http://www.php.net/file"><span style="color:#000066;">file</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'list.txt'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">foreach</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$files</span> <span style="color:#616100;">as</span> <span style="color:#0000FF;">$file</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$command</span>=<span style="color:#FF0000;">'/bin/sed -i <span style="color:#000099; font-weight:bold;">\'</span>s/old-string/new-string/g<span style="color:#000099; font-weight:bold;">\'</span> '</span>.<a href="http://www.php.net/str_replace"><span style="color:#000066;">str_replace</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">' '</span>,<span style="color:#FF0000;">'<span style="color:#000099; font-weight:bold;">\ </span>'</span>,<span style="color:#0000FF;">$file</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/exec"><span style="color:#000066;">exec</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$command</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>It's a handy little script that I'm sure I will find a use for later, so I thought I would put it up here.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2007/12/12/php-and-sed-for-string-substitution/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mac OSX 10.5 Upgrade</title>
		<link>http://spiralbound.net/2007/10/26/mac-osx-105-upgrade</link>
		<comments>http://spiralbound.net/2007/10/26/mac-osx-105-upgrade#comments</comments>
		<pubDate>Fri, 26 Oct 2007 21:08:00 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[cover flow]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[filesystem snapshots]]></category>
		<category><![CDATA[launcher]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac mini]]></category>
		<category><![CDATA[MacOS 10.5]]></category>
		<category><![CDATA[mative]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[spaces]]></category>
		<category><![CDATA[stacks]]></category>
		<category><![CDATA[time machine]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[upgrade process]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2007/10/26/mac-osx-105-upgrade/</guid>
		<description><![CDATA[I've just finished upgrading my Mac Mini to OSX 10.5, and I have to say, the upgrade could not be simpler. While it did take slightly over an hour to complete, there were fewer than 10 clicks throughout the entire upgrade process, so I can't imagine how anyone could mung it up. The one detail [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tkqlhce.com/click-2406739-10507577" target="_top"><br />
<img src="http://www.lduhtrp.net/image-2406739-10507577" style="border: solid 0px #000000; margin: 4px 10px 0px 0px;" align="left" width="125" height="125" alt="Apple Online Store" border="0"/></a>I've just finished upgrading my <a href="http://www.tkqlhce.com/click-2406739-10479806" target="_top">Mac Mini</a> to OSX 10.5, and I have to say, the upgrade could not be simpler. While it did take slightly over an hour to complete, there were fewer than 10 clicks throughout the entire upgrade process, so I can't imagine how anyone could mung it up. The one detail that I found a little strange was the lack of any indication that the installer was going to perform an "upgrade" install rather than a "fresh" install. <a href="http://nosheep.net">Zach</a> simply took it on faith, but I insisted on clicking the "Details" button just to be certain.</p>
<p>The OS itself is quite nice, although it is a bit strange to get used to the finder looking like iTunes. Stacks is a great idea, but part of me wishes it behaved more like a launcher-type application than a different interface to folders. Who knows though. Maybe after using them, I will come to appreciate the feature a lot more.</p>
<p>One thing that I am very glad to see is "Spaces". Basically virtual desktops, X Windows has had this feature since the very beginning, but it is just now becoming native in Mac OS. Granted, there has almost always been external applications that handle this, but it's nice to see it wrapped in.</p>
<p>There is a lot of buzz about the "Cover Flow" features that have been added to the finder. I have to admit that it is extremely aesthetically cool and very very slick. How much I use it in my day to day life remains to be seen, but it will be nice to browse documents visually without having to depend only on the title to find them.</p>
<p>Time machine, basically well integrated filesystem snapshots, seems like it will be a wonderful addition, but I have not had the chance to use it yet because I don't have an external fire wire drive. It's on my shopping list though, so I will be enabling it just as soon as I have the gear to make it run.</p>
<p>All and all, I think it's an outstanding upgrade, and well worth the money. Give it a shot... You won't be sorry.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2007/10/26/mac-osx-105-upgrade/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recovering From a Corrupt NetInfo Database on OSX.4</title>
		<link>http://spiralbound.net/2007/10/01/recovering-from-a-corrupt-netinfo-database-on-osx4</link>
		<comments>http://spiralbound.net/2007/10/01/recovering-from-a-corrupt-netinfo-database-on-osx4#comments</comments>
		<pubDate>Mon, 01 Oct 2007 17:42:06 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[accounts]]></category>
		<category><![CDATA[corrupt]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[local.nidb]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[NetInfo]]></category>
		<category><![CDATA[NetInfo database]]></category>
		<category><![CDATA[network.nidb]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[recover]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[single user]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[users]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2007/10/01/recovering-from-a-corrupt-netinfo-database-on-osx4/</guid>
		<description><![CDATA[I managed to corrupt my NetInfo database on an OS 10.4 server a few weeks ago by not cleanly unmounting the drive after booting from DVD and resetting the admin password. Long story short, this left me with no users on the system at all. With no users, I could not log in to create [...]]]></description>
			<content:encoded><![CDATA[<p>I managed to corrupt my <a href="http://en.wikipedia.org/wiki/NetInfo">NetInfo</a> database on an OS 10.4 server a few weeks ago by not cleanly unmounting the drive after booting from DVD and resetting the admin password. Long story short, this left me with no users on the system at all. With no users, I could not log in to create one, so I had to blow away the NetInfo database and restore it to factory defaults. This should only be done when you only have a small number of users, and don't mind having to re-create them. Only the user account information is deleted, and the user directory is retained, but you will have to manually add any users you may have back into the system through the GUI, making sure that the new "user" references the old "user's" account directory.</p>
<p>If you have more than just one or two users, you should use the procedure to recover from one of your NetInfo database backups. A backup of your this database is made at 3:15 every day so long as the computer is running. It is stored in "/var/backups/", and <a href="http://docs.info.apple.com/article.html?artnum=107210">here</a> are some instructions on how to recover it from it. If, however, you don't care about re-adding users, and simply want to get into your system quickly, or if you don't have a backup to restore from, here is how you can do it:</p>
<p>BEWARE: <strong>THIS WILL COMPLETELY ERASE ALL USER ACCOUNT INFORMATION FROM THE SYSTEM!!!</strong> You are warned.</p>
<p>1) Start by booting your Mac into single user mode. To do this, hold down both the "Apple" and the "s" keys as the system boots.</p>
<p>2) The system will have mounted the "/" filesystem read-only to protect against data loss. To get "/" mounted read-write, we have to run two commands:</p>
<p><code># /sbin/fsck -fy</code></p>
<p><code># /sbin/mount -uw /</code></p>
<p>3) Now "/" is mounted read-write, so we can start with the real work. First, rename your existing NetInfo database to something else so the OS will not see it on the way up:</p>
<p><code># mv /var/db/netinfo/local.nidb /var/db/netinfo/local.nidb.bad</code></p>
<p><code># mv /var/db/netinfo/network.nidb /var/db/netinfo/network.nidb.bad</code></p>
<p>4) Next, remove the ".AppleSetupDone" file so the OS will kick you back into the installer upon boot and you can recreate your users.</p>
<p><code># rm /var/db/.AppleSetupDone</code></p>
<p>5) Finally, reboot your system and recreate your users, making sure they are pointed towards their existing account directories.</p>
<p><code># reboot</code></p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2007/10/01/recovering-from-a-corrupt-netinfo-database-on-osx4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone Hacked; No Longer Bound to AT&amp;T</title>
		<link>http://spiralbound.net/2007/08/27/iphone-hacked-no-longer-bound-to-att</link>
		<comments>http://spiralbound.net/2007/08/27/iphone-hacked-no-longer-bound-to-att#comments</comments>
		<pubDate>Mon, 27 Aug 2007 15:09:19 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[Highlights]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[at&t]]></category>
		<category><![CDATA[commands]]></category>
		<category><![CDATA[george hotz]]></category>
		<category><![CDATA[hacked iPhone]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[steve jobs]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2007/08/27/iphone-hacked-no-longer-bound-to-att/</guid>
		<description><![CDATA[George Hotz, along with a team of hackers have come up with a method to break the chains binding the iPhone to AT&#038;T, allowing it to be used with any carrier. The complete method can be found here on George's blog. It does take some soldering skills and a bit of familiarity with UNIX and [...]]]></description>
			<content:encoded><![CDATA[<p>George Hotz, along with a team of hackers have come up with a method to break the chains binding the iPhone to AT&#038;T, allowing it to be used with any carrier. The <a href="http://iphonejtag.blogspot.com/2007/08/step-1.html">complete method can be found here on George's blog</a>. It does take some soldering skills and a bit of familiarity with UNIX and modem commands it should be pretty easily accomplished by most techies who have some tinkering under their belts.</p>
<p>Even though I still feel the iPhone is too expensive, and that it <a href="http://spiralbound.net/2007/07/24/the-iphone-is-still-not-quite-there/">is lacking in some basic features</a>, this might just be the thing that gets me to buy one. After all, I love hacking hardware!</p>
<p>I heard an interview with Hots on the way home from work Friday. When asked to respond to internet rumors that former phreaker <a href="http://www.npr.org/templates/story/story.php?storyId=13935744">Steve Jobs was mad at him</a>, he said "I want Steve to call me up. Let's he and I have a man to man about it." It was wonderful! If Steve Jobs can't remember his days hacking the phone system and respect Hots and the team for their accomplishments, he truly has lost touch with what hacking is all about.</p>
<p>Wonderful job guys! Congratulations.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2007/08/27/iphone-hacked-no-longer-bound-to-att/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RHEL useradd Syntax</title>
		<link>http://spiralbound.net/2007/07/25/rhel-useradd-syntax</link>
		<comments>http://spiralbound.net/2007/07/25/rhel-useradd-syntax#comments</comments>
		<pubDate>Wed, 25 Jul 2007 21:13:43 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[add user]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[computerr]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[remember]]></category>
		<category><![CDATA[rhel]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[syntax]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[useradd]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2007/07/25/rhel-useradd-syntax/</guid>
		<description><![CDATA[Unlike other flavors of UNIX, RHEL does not have a command like adduser which walks you through the process step-by-step, so you have to remember the four flags useradd requires, and in what order it expects to receive them. Since I don't manually add users unless I'm installing a new server, I don't run the [...]]]></description>
			<content:encoded><![CDATA[<p>Unlike other flavors of UNIX, RHEL does not have a command like adduser which walks you through the process step-by-step, so you have to remember the four flags useradd requires, and in what order it expects to receive them. Since I don't manually add users unless I'm installing a new server, I don't run the command enough to remember the syntax... It's basically the same as it is on <a href="http://spiralbound.net/2005/09/08/solaris-useradd-syntax/">Solaris</a>.</p>
<p><code>useradd -g group -c 'User Name' -d /path/to/home/directory -s /bin/bash username</code></p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2007/07/25/rhel-useradd-syntax/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Example LINUX init Script</title>
		<link>http://spiralbound.net/2007/07/23/example-linux-init-script</link>
		<comments>http://spiralbound.net/2007/07/23/example-linux-init-script#comments</comments>
		<pubDate>Mon, 23 Jul 2007 21:22:21 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[chkconfig]]></category>
		<category><![CDATA[init]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[runlevel]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2007/07/23/example-linux-init-script/</guid>
		<description><![CDATA[From time to time, people want me to create LINUX init scripts for them. I usually just take an existing one for another service and change it up to work for my new application, but most of them have become so long these days that I end up having to hack out a ton of [...]]]></description>
			<content:encoded><![CDATA[<p>From time to time, people want me to create LINUX init scripts for them. I usually just take an existing one for another service and change it up to work for my new application, but most of them have become so long these days that I end up having to hack out a ton of code just to reduce them down to the very basic script I need. I decided to create this very simple template so I wouldn't have to keep trimming down the more complex scripts that one tends to find in <code>/etc/init.d</code> these days.</p>
<p>This script is <a href="http://spiralbound.net/2006/11/15/controlling-services-with-chkconfig/">chkconfig</a> compatible, so call it the name of your new service and put it in <code>/etc/init.d</code></p>
<p>The <code>chkconfig: 235</code> section indicates the the default runlevels. For instance, if we called this script <code>/etc/init.d/new-service</code> and ran <code>chkconfig new-service on</code>, it would be active in runlevels 2,3 and 5.</p>
<p>The <code>98</code> and <code>55</code> numbers indicate the order of startup and kill. This means that using this tag, the startup symbolic link would be named <code>S98new-service</code> and the symbolic link to kill the process would be named <code>K55new-service</code>.</p>
<p>#### SNIP ####<br />
<code>
<pre>
#! /bin/sh
# Basic support for IRIX style chkconfig
###
# chkconfig: 235 98 55
# description: Manages the services you are controlling with the chkconfig command
###

case "$1" in
  start)
        echo -n "Starting new-service"
        #To run it as root:
        /path/to/command/to/start/new-service
        #Or to run it as some other user:
        /bin/su - username -c /path/to/command/to/start/new-service
        echo "."
        ;;
  stop)
        echo -n "Stopping new-service"
        #To run it as root:
        /path/to/command/to/stop/new-service
        #Or to run it as some other user:
        /bin/su - username -c /path/to/command/to/stop/new-service
        echo "."
        ;;

  *)
        echo "Usage: /sbin/service new-service {start|stop}"
        exit 1
esac

exit 0
</pre>
<p></code><br />
#### /SNIP ####</p>
<p>Obviously change all instances of "new-service" to the name of your actual service... Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2007/07/23/example-linux-init-script/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bash For loop Example</title>
		<link>http://spiralbound.net/2007/07/23/bash-for-loop-example</link>
		<comments>http://spiralbound.net/2007/07/23/bash-for-loop-example#comments</comments>
		<pubDate>Mon, 23 Jul 2007 19:45:11 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[csh]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2007/07/23/bash-for-loop-example/</guid>
		<description><![CDATA[I'm always forgetting the syntax to make "for" loops in Bash. I guess it serves me right for using foreach most of my UNIX life instead. Anyhow, I know I will have to come back here to find it, so I thought I would write put up this quick example with the hope that it [...]]]></description>
			<content:encoded><![CDATA[<p>I'm always forgetting the syntax to make "for" loops in Bash. I guess it serves me right for using <a href="http://spiralbound.net/2006/01/17/foreach-example-in-tcsh/">foreach</a> most of my UNIX life instead. Anyhow, I know I will have to come back here to find it, so I thought I would write put up this quick example with the hope that it will be useful to others as well.</p>
<p><code>for i in $(seq 1 100); do echo -n "file${i} "; touch file${i} 2>&#038;1; done</code></p>
<p>The the above for loop will create 100 files (called file1, file2, etc.).</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2007/07/23/bash-for-loop-example/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Blank Window When SSH Forwarding X11 Sessions</title>
		<link>http://spiralbound.net/2007/07/16/blank-window-when-ssh-forwarding-x11-sessions</link>
		<comments>http://spiralbound.net/2007/07/16/blank-window-when-ssh-forwarding-x11-sessions#comments</comments>
		<pubDate>Mon, 16 Jul 2007 16:00:30 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[blank screen]]></category>
		<category><![CDATA[display]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Swing]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssh forwarding]]></category>
		<category><![CDATA[SSH X11 forwarding]]></category>
		<category><![CDATA[sshd_config]]></category>
		<category><![CDATA[ssh_config]]></category>
		<category><![CDATA[Swing]]></category>
		<category><![CDATA[tunnel]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[X11]]></category>
		<category><![CDATA[X11 forwarding]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2007/07/16/blank-window-when-ssh-forwarding-x11-sessions/</guid>
		<description><![CDATA[There are a number of applications running on our servers that have GUI's that I need to display on the Mac in my office. While the traditional method of exporting the server-side display to my desktop works, it is inherently insecure because the entire session, including any passwords that may be sent are all transmitted [...]]]></description>
			<content:encoded><![CDATA[<p>There are a number of applications running on our servers that have GUI's that I need to display on the Mac in my office. While the traditional method of exporting the server-side display to my desktop works, it is inherently insecure because the entire session, including any passwords that may be sent are all transmitted in clear-text.</p>
<p>Better to use SSH X11 forwarding. This way the entire session is encrypted and nobody can snoop your passwords. The process of using SSH X11 Forwarding goes something like this:</p>
<p>On the server-side (the machine from which you want to forward the display, make sure this line is in your <code>/etc/ssh/sshd_config</code> file:</p>
<p><code>X11Forwarding yes</code></p>
<p>If you had to add it, restart the sshd service.</p>
<p><code>/sbin/service sshd restart</code></p>
<p>Now, from the client-side (the machine on which you want to display the forwarded X11 application) connect to the server-side machine with the -X flag. Like so:</p>
<p><code>ssh -X username@remoteserver</code></p>
<p>Now you should be able to start X applications and have them display on your client machine through an ssh tunnel. If you are like me, however, some Java applications will not display correctly. Instead of popping up a window with the full application in it, I would only see a totally useless blank window. This frustrated me for months until I found <a href="http://www.kraftek.com/blog/index.php?/archives/112-Veritas-vea-java-swing-window-displaying-incorrectly-in-a-ssh-X11Forwarded-session.html">this article at kraftek.com</a> that details how to resolve the problem.</p>
<p>It turns out that all you have to do is put this line in the <code>ssh_config</code> file on your client-side:</p>
<p><code>ForwardX11Trusted yes</code></p>
<p>After logging out and back into the server-side machine, everything worked perfectly.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2007/07/16/blank-window-when-ssh-forwarding-x11-sessions/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting ntpd to work correctly on RHEL</title>
		<link>http://spiralbound.net/2006/12/19/getting-ntpd-to-work-correctly-on-rhel</link>
		<comments>http://spiralbound.net/2006/12/19/getting-ntpd-to-work-correctly-on-rhel#comments</comments>
		<pubDate>Tue, 19 Dec 2006 14:46:14 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[atomic clock]]></category>
		<category><![CDATA[chkconfig]]></category>
		<category><![CDATA[clock]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[internet time server]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ntpd]]></category>
		<category><![CDATA[ntpdate]]></category>
		<category><![CDATA[red hat]]></category>
		<category><![CDATA[rhel]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[system clock]]></category>
		<category><![CDATA[systems administration]]></category>
		<category><![CDATA[time of day]]></category>
		<category><![CDATA[time server]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[xntpd]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2006/12/19/getting-ntpd-to-work-correctly-on-rhel/</guid>
		<description><![CDATA[When many new servers are delivered from the factory, the system clock is way off. Most UNIX systems run "ntpd" to keep the time in sync with internet time servers, which are, in turn synchronized against an atomic clock. This results in a system time that is very very close to the "actual" time of [...]]]></description>
			<content:encoded><![CDATA[<p>When many new servers are delivered from the factory, the system clock is way off. Most UNIX systems run "ntpd" to keep the time in sync with internet time servers, which are, in turn synchronized against an atomic clock. This results in a system time that is very very close to the "actual" time of day. The downside, however, is that even a properly configured "ntpd" will not synchronize the system clock if it is too far out of sync with the time server. To remedy this, we first have to run "ntpdate" to get the system clock close to the correct time, and then enable "ntpd" to keep it there. </p>
<p>The first thing we have to do is "ntpd" to free up the port for "ntpdate":</p>
<p><code>
<pre>[root@server /]# /sbin/service ntpd stop
Shutting down ntpd:                                        [  OK  ]
</pre>
<p></code></p>
<p>This frees up the port for ntpdate. Next we run:</p>
<p>[root@server /]# /usr/sbin/ntpdate time.apple.com</p>
<p>Now the time should be set correctly. We then change the default time servers to something like the following in /etc/ntp.conf:</p>
<p><code># --- OUR TIMESERVERS -----<br />
time-a.timefreq.bldrdoc.gov<br />
time-b.timefreq.bldrdoc.gov<br />
time-c.timefreq.bldrdoc.gov<br />
</code></p>
<p>We can use any time server we want, but I like these and find them to be reliable.</p>
<p>Finally, start backup up your "ntpd" service, and your all set to go.</p>
<p><code>
<pre>[root@server /]# /sbin/service ntpd start
Starting ntpd:                                        [  OK  ]
</pre>
<p></code></p>
<p>Remember to use "<a href="http://spiralbound.net/2006/11/15/controlling-services-with-chkconfig/">chkconfig</a>" to make sure "ntpd" is enabled to come up when the system starts.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2006/12/19/getting-ntpd-to-work-correctly-on-rhel/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installing OpenGroupWare 1.1.5 on RHEL 3</title>
		<link>http://spiralbound.net/2006/12/15/installing-opengroupware-115-on-rhel-3</link>
		<comments>http://spiralbound.net/2006/12/15/installing-opengroupware-115-on-rhel-3#comments</comments>
		<pubDate>Fri, 15 Dec 2006 19:08:15 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cal]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gpl]]></category>
		<category><![CDATA[groupware]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[httpd]]></category>
		<category><![CDATA[ical]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[install software]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[ldif]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[microsoft alternative]]></category>
		<category><![CDATA[ms outlook]]></category>
		<category><![CDATA[open ladap]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[opengroupware]]></category>
		<category><![CDATA[opengroupware.org]]></category>
		<category><![CDATA[openldap]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php_postgresql]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[rhel]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[skyrix]]></category>
		<category><![CDATA[syadmin]]></category>
		<category><![CDATA[systems administration]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2006/12/15/installing-opengroupware-115-on-rhel-3/</guid>
		<description><![CDATA[OpenGroupWare is an open source groupware package intended as an alternative to proprietary applications such as Exchange and PostPath. It is fairly robust in its feature set, and even integrates well with MS Outlook. Its strongest points, in my opinion are that it does not depend in any way on Active Directory, and that it [...]]]></description>
			<content:encoded><![CDATA[<p>OpenGroupWare is an open source groupware package intended as an alternative to proprietary applications such as <a href="http://lee.org/blog/archives/category/product-recommendations/">Exchange</a> and <a href="http://www.postpath.com/">PostPath</a>. It is fairly robust in its feature set, and even integrates well with <a href="http://chris.pirillo.com/2005/09/21/the-why-outlook-2003-sucks-challenge/">MS Outlook</a>.</p>
<p>Its strongest points, in my opinion are that it does not depend in any way on Active Directory, and  that it integrates well with open source standards like <a href="http://www.openldap.org/">Open LDAP</a> and <a href="http://www.washington.edu/imap/">University of Washington IMAP</a>. Its downsides are that the documentation is sparse and scattered, that is is backed with <a href="http://www.postgresql.org/">PostgreSQL</a> rather than <a href="http://mysql.org/">MySQL</a>, and that the package is bundled into a TON of RPM's.</p>
<p>I have not tried installing it from source, though I suspect that it would not be much more work than using the RPM's. Anyhow, if you want to install it for yourself, here are some quick scripts to help you, as well as some quick cookbook instructions. I installed it on RHEL 3 Workstation, though I suspect that it would work most Linux distributions.</p>
<p>The first thing we have to do is install the foundation for OpenGroupWare From the RHEL CD's or <a href="https://www.redhat.com/apps/download/">Website</a>:</p>
<p>Install apache<br />
Install PostgreSQL<br />
Install PostgreSQL-devel<br />
Install php<br />
Install php_PostgreSQL</p>
<p>Next, run the following commands to get the database and webserver started:<br />
<code><br />
# /sbin/chkconfig httpd on<br />
# /sbin/chkconfig postgresql on<br />
# /sbin/service postgresql start<br />
# /sbin/service httpd start<br />
</code><br />
Sendmail should already be installed and running, but if not, you will have to install it as well.</p>
<p>OK, so I said before that there are a TON of RPM's that you will have to install. These can be found at the <a href="http://www.opengroupware.org/en/install/index.html">OpenGroupWare website</a>. Get them however you want, but if you have "wget" installed, you can use my script to fetch everything you need. You can omit the "devel" packages if you don't want to install the source code.</p>
<div class="igBar"><span id="lhtml-5"><a href="#" onclick="javascript:showPlainTxt('html-5'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-5">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">###### SNIP #######</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">#!/bin/sh</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">#GetOpenGroupWare.sh</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-gnustep_make-1.10.0-0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-xml-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-xml-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/ThirdParty/libfoundation11-1.1.3-r155.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/ThirdParty/libfoundation11-devel-1.1.3-r155.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-core-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-core-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-appserver-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-appserver-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-gdl1-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-gdl1-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-ldap-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-ldap-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-ldap-tools-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-mime-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-mime-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-logic-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-logic-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-logic-tools-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-docapi-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-docapi-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-docapi-db-project-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-docapi-db-project-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-docapi-fs-project-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-docapi-fs-project-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-core-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-core-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-app-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-environment-1.1.5-0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-ical-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-ical-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/sope-4.5.8-sixtyfour/sope45-gdl1-postgresql-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/mod_ngobjweb-2.0.46-r1323.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-database-setup-1.1.5-0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-pda-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-pda-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-theme-blue-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-theme-default-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-theme-kde-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-theme-ooo-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-theme-orange-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-tools-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-calendar-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-contact-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-mailer-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-mailer-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-news-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-project-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-basque-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-de-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-dk-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-en-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-es-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-fr-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-hu-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-it-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-jp-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-nl-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-no-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-pl-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-pt-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-ptbr-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-resource-sk-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-webui-task-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-xmlrpcd-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-zidestore-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-zidestore-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">wget http://download.opengroupware.org/nightly/packages/rhel3/releases/opengroupware-1.1.5-moveon/ogo-meta-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">###### /SNIP ####### </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Ok, so now we have a directory filled up wit RPM's. Many of these have a lot of dependancies, so the order of install is important. The script below has them in the correct order, so you can either use it as a reference to install them yourself, or just save the script in the directory that has all your RPM's and run it. Your choice.</p>
<div class="igBar"><span id="lhtml-6"><a href="#" onclick="javascript:showPlainTxt('html-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-6">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">###### SNIP #######</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># InstallOpenGroupware.sh</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">#!/sbin/sh</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-gnustep_make-1.10.0-0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-xml-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-xml-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh libfoundation11-1.1.3-r155.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh libfoundation11-devel-1.1.3-r155.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-core-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-core-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-mime-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-mime-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-appserver-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-appserver-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-gdl1-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-gdl1-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-ldap-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-ldap-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-ldap-tools-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-logic-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-logic-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-logic-tools-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-docapi-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-docapi-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-docapi-db-project-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-docapi-db-project-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-docapi-fs-project-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-docapi-fs-project-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-core-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-app-1.1.5-r1717.0.i386.rpm ogo-theme-default-1.1.5-r1717.0.i386.rpm ogo-webui-resource-en-1.1.5-r1717.0.i386.rpm ogo-webui-resource-de-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-environment-1.1.5-0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-ical-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-ical-devel-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh sope45-gdl1-postgresql-4.5.8-r1321.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh mod_ngobjweb-2.0.46-r1323.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-database-setup-1.1.5-0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-pda-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-pda-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-theme-blue-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-theme-kde-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-theme-ooo-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-theme-orange-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-tools-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-calendar-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-contact-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-core-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-mailer-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-mailer-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-news-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-project-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-basque-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-dk-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-es-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-fr-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-hu-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-it-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-jp-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-nl-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-no-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-pl-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-pt-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-ptbr-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-resource-sk-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-webui-task-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-xmlrpcd-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-zidestore-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-zidestore-devel-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">rpm -Uvh ogo-meta-1.1.5-r1717.0.i386.rpm</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">###### /SNIP ####### </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Some things to note about the install.</p>
<p>These all have to be done on one line or "rpm" will complain that it can's resolve dependancies:<br />
rpm -Uvh ogo-webui-app-1.1.5-r1717.0.i386.rpm ogo-theme-default-1.1.5-r1717.0.i386.rpm ogo-webui-resource-en-1.1.5-r1717.0.i386.rpm ogo-webui-resource-de-1.1.5-r1717.0.i386.rpm</p>
<p>ogo-database-setup-1.1.5-0.i386.rpm sets up your PostgreSQL database and database user for you. The output should look something like this:</p>
<pre><code style="font-size:0.9em;">
Preparing...                     ########################################### [100%]
1:ogo-database-setup             ########################################### [100%]
PostgreSQL seems to be already initialized
and I can see it running:
PIDS used: 3456 3458 3459
We're on PostgreSQL 7 (7.4)
checking /var/lib/pgsql/data/postgresql.conf
need to patch /var/lib/pgsql/data/postgresql.conf for 7.4
backup current one to /var/lib/pgsql/data/postgresql.conf.20061213-153319
checking /var/lib/pgsql/data/pg_hba.conf
need to patch /var/lib/pgsql/data/pg_hba.conf for 7.4
backup current one to /var/lib/pgsql/data/pg_hba.conf.20061213-153319
The changes we've made require that we restart PostgreSQL...
Stopping postgresql service:    [  OK  ]
Starting postgresql service:      [  OK  ]
OK! PostgreSQL runs again: (3909 3911 3912)
creating database user: OGo
creating the database itself: OGo
we've successfully created both the user OGo and the raw database OGo
we'll now fill the database with the scheme itself
checking the logfile created during scheme rollin...
/tmp/database_setup_psql.sh.20061213-153319.log
removing log - not needed anymore
</code></pre>
<p>OK... Now everything is installed, and if you run the following command:</p>
<p># /sbin/chkconfig --list | grep ogo</p>
<p>You should see the following output:</p>
<p><code>
<pre>
ogo-zidestore   0:off   1:off   2:on    3:on    4:on    5:on    6:off
ogo-webui       0:off   1:off   2:on    3:on    4:on    5:on    6:off
ogo-xmlrpcd     0:off   1:off   2:on    3:on    4:on    5:on    6:off
ogo-nhsd        0:off   1:off   2:on    3:on    4:on    5:on    6:off
</pre>
<p></code></p>
<p>Now, let's fire up these services:</p>
<p><code><br />
# /sbin/service ogo-zidestore start<br />
# /sbin/service ogo-webui start<br />
# /sbin/service ogo-xmlrpcd start<br />
# /sbin/service ogo-nhsd start<br />
</code><br />
Everything should be up and running now, so you can grab a web browser and go to the following RUL:</p>
<p>http://server.domain.com/OpenGroupware</p>
<p>You will be logged in as the root user, so make sure to change the password.</p>
<p>If you are using this system as a stand-alone server, you are pretty much all set. We needed to <a href="http://gentoo-wiki.com/HOWTO_OpenGroupware.org_with_OpenLDAP">authenticate it against our central LDAP</a>, and point it towards our IMAP server though, so I added the following lines to "/var/lib/opengroupware.org/.libFoundation/DefaultsNSGlobalDomain.plist":</p>
<p><code><br />
LSAuthLDAPServer = "ldapserver.domain.com";<br />
LSAuthLDAPServerRoot = "dc=mydomain,dc=com";<br />
imap_host = "imapserver.domain.com";<br />
UseSkyrixLoginForImap = YES;<br />
</code></p>
<p>Make sure to put these lines at the end of the file, but before the closing braces.</p>
<p>The file should look something like this:</p>
<p><code>
<pre>
###### SNIP #######
{
"skyrix_id" = "server.domain.com";
LSConnectionDictionary = {
  databaseName = OGo;
  hostName = "127.0.0.1";
  password = "";
  port = 5432;
  userName = OGo;
};
  LSNewsImagesPath = "/var/lib/opengroupware.org/news";
  LSNewsImagesUrl = "/ArticleImages";
  Languages = (
  English
);
  TimeZoneName = GMT;
  WOHttpAllowHost = (
  localhost,
  "127.0.0.1",
  "localhost.localdomain"
);
  LSAuthLDAPServer = "ldapserver.domain.com";
  LSAuthLDAPServerRoot = "dc=domain,dc=com";
  imap_host = "imapserver.domain.com";
  UseSkyrixLoginForImap = YES;
}
###### /SNIP #######
</pre>
<p></code></p>
<p>Since the system won't let you authenticate the "root" user against the local database if your are using LDAP, you have to create a root user on your central LDAP.</p>
<p>Create an LDIF file called root.ldif like so:</p>
<p><code>
<pre>
###### SNIP #######
dn: uid=root,ou=People,dc=mydomain,dc=com
objectClass: organizationalPerson
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
uid: root
uidNumber: 0
gidNumber: 0
sn: Root
cn: Root
homeDirectory: /root
loginShell: /bin/bash
gecos: Root
###### /SNIP #######
</pre>
<p></code></p>
<p>Finally, run the following command to add the root user:</p>
<p><code><br />
ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W -f root.ldif"<br />
</code></p>
<p>You should now be authenticating against your central LDAP server. Have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2006/12/15/installing-opengroupware-115-on-rhel-3/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Setting Up The Automounter Service on RHEL</title>
		<link>http://spiralbound.net/2006/12/06/setting-up-the-automounter-service-on-rhel</link>
		<comments>http://spiralbound.net/2006/12/06/setting-up-the-automounter-service-on-rhel#comments</comments>
		<pubDate>Wed, 06 Dec 2006 16:23:27 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[auto.master]]></category>
		<category><![CDATA[auto.misc]]></category>
		<category><![CDATA[autofs]]></category>
		<category><![CDATA[automountd]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[chkconfig]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[intr]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mount options]]></category>
		<category><![CDATA[mountd]]></category>
		<category><![CDATA[mounts]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[nfs]]></category>
		<category><![CDATA[options]]></category>
		<category><![CDATA[overhead]]></category>
		<category><![CDATA[rhel]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[soft]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2006/12/06/setting-up-the-automounter-service-on-rhel/</guid>
		<description><![CDATA[Mounting filesystems in RHEL is pretty straightforward and easy. Occasionally, however, you will not want the filesystem to remain mounted all the time, but rather to automatically mount for a set period of time only when it is needed. Because of networking overhead, and the general unreliability of networks, NFS mounts are a good example [...]]]></description>
			<content:encoded><![CDATA[<p>Mounting filesystems in RHEL is pretty straightforward and easy. Occasionally, however, you will not want the filesystem to remain mounted all the time, but rather to automatically mount for a set period of time  only when it is needed. Because of networking overhead, and the general unreliability of networks, NFS mounts are a good example of when this can be especially useful.</p>
<p>In order to manage the automatic mounting and unmounting of filesystems on RHEL, we use the Automounter service. Here is how.</p>
<p>First, The main configuration file is "/etc/auto.master". It should look something like this:<br />
<code>
<pre>
#
# $Id: auto.master,v 1.3 2003/09/29 08:22:35 raven Exp $
#
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).
#/misc  /etc/auto.misc --timeout=60
#/misc  /etc/auto.misc
#/net   /etc/auto.net
</pre>
<p></code><br />
Let's assume that we want to set up an NFS mount on "/misc/backups". We would first create an entry in this file that looks something like this:</p>
<p><code>
<pre>/misc   /etc/auto.misc --timeout=120</pre>
<p></code><br />
This tells the autofs service that we want to use it to manage mounts from within "/misc", that the configuration file is "/etc/auto.misc", and that it should disconnect after 2 minuets of inactivity.</p>
<p>Now, let's edit the "/etc/auto.misc" file. The file has three columns: the mount point from within the /misc directory, the options for mounting the filesystem, and the filesystem to be mounted. It also includes the remote server's name since we are using NFS. It should look something like this when you are done:</p>
<p><code>
<pre>
#
# $Id: auto.misc,v 1.2 2003/09/29 08:22:35 raven Exp $
#
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# Details may be found in the autofs(5) manpage

cd              -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
backups         -rw,soft,intr remoteservername:/path/to/nfs/export

# the following entries are samples to pique your imagination
#linux          -ro,soft,intr           ftp.example.org:/pub/linux
#boot           -fstype=ext2            :/dev/hda1
#floppy         -fstype=auto            :/dev/fd0
#floppy         -fstype=ext2            :/dev/fd0
#e2floppy       -fstype=ext2            :/dev/fd0
#jaz            -fstype=ext2            :/dev/sdc1
#removable      -fstype=ext2            :/dev/hdd
</pre>
<p></code><br />
Next, we create the directory for the mount point in /misc:</p>
<p><code># mkdir /misc/backups</code></p>
<p>And finally we restart the autofs service:</p>
<p><code># service autofs restart</code></p>
<p>That should pretty much do it. If you don't have autofs configured to start up, <a href="http://spiralbound.net/2006/11/15/controlling-services-with-chkconfig/">you can use chkconfig to enable it</a>. "/misc/backups" will now be mounted whenever a user or process attempts to access data on it, and it will be automatically disconnected after 120 seconds of inactivity. Last, but not least, you can always confirm that it is running with the "service" command:</p>
<p><code># service autofs status</code></p>
<p>As always, change the details to match your own requirements.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2006/12/06/setting-up-the-automounter-service-on-rhel/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Using Sort to List Directories by Size</title>
		<link>http://spiralbound.net/2006/11/27/using-sort-to-list-directories-by-size</link>
		<comments>http://spiralbound.net/2006/11/27/using-sort-to-list-directories-by-size#comments</comments>
		<pubDate>Mon, 27 Nov 2006 16:37:52 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[commands]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[directory]]></category>
		<category><![CDATA[directory sizes]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[foreach]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[quota]]></category>
		<category><![CDATA[repquota]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[size]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[users]]></category>

		<guid isPermaLink="false">http://spiralbound.net/2006/11/27/using-sort-to-list-directories-by-size/</guid>
		<description><![CDATA[If you manage a UNIX system with a large number of directories that vary in size, chances are that you've needed to figure out which ones are using up the most disk space. Of course if the directories are user accounts, the best way to do this is to enable quotas and use the "repquota" [...]]]></description>
			<content:encoded><![CDATA[<p>If you manage a UNIX system with a large number of directories that vary in size, chances are that you've needed to figure out which ones are using up the most disk space. Of course if the directories are user accounts, the best way to do this is to enable quotas and use the "repquota" command. If you just have a bunch of directories, however, you can easily figure out which ones are largest by giving the correct arguments to "du" and "sort". Here is how:</p>
<p><code>du -sk * | sort +0nr</code></p>
<p>This will display the size of all directories and sort them from largest to smallest. If you want to sort them from smallest to largest, simply remove the "r".</p>
<p><code>du -sk * | sort +0n</code></p>
<p>If you have nested directories, you will need to <a href="http://spiralbound.net/2006/01/17/foreach-example-in-tcsh/">incorporate foreach</a> to recurse through and get all the directory names.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2006/11/27/using-sort-to-list-directories-by-size/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Macintosh Finder Copy to Samba Share Problem</title>
		<link>http://spiralbound.net/2005/09/22/macintosh-finder-copy-to-samba-share-problem</link>
		<comments>http://spiralbound.net/2005/09/22/macintosh-finder-copy-to-samba-share-problem#comments</comments>
		<pubDate>Thu, 22 Sep 2005 17:18:22 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[apple finder]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[file copy]]></category>
		<category><![CDATA[finder]]></category>
		<category><![CDATA[finder copy]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[locking]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac finder]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[macintosh]]></category>
		<category><![CDATA[macintosh finder]]></category>
		<category><![CDATA[nfs]]></category>
		<category><![CDATA[nfs locking]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[posix]]></category>
		<category><![CDATA[posix locking]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[samba share]]></category>
		<category><![CDATA[samba upgrade]]></category>
		<category><![CDATA[smb.conf]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[unix nfs]]></category>

		<guid isPermaLink="false">http://spiralbound.net/?p=88</guid>
		<description><![CDATA[With the last Samba upgrade, we started having problems copying files to our Samba share from the Mac OSX finder.When attempting the copy we received an error reading: "The operation cannot be completed because you do not have sufficient privileges for some of the items." There were no permissions issues, which was substantiated by our [...]]]></description>
			<content:encoded><![CDATA[<p>With the last Samba upgrade, we started having problems copying files to our Samba share from the Mac OSX finder.When attempting the copy we received an error reading: <span style="text-decoration:underline;"><strong>"The operation cannot be completed because you do not have sufficient privileges for some of the items."</strong></span></p>
<p>There were no permissions issues, which was substantiated by our unhindered ability to do UNIX copies to the same share, and the smb.conf file had not changed. After searching the groups and finding nothing of use, I set up a test environment with all the same versions and settings, and replicated the error.</p>
<p>Because the Samba share is mounted over NFS on the server, and because the Mac Finder creates that annoying place holder file before actually copying the real file, I suspected that the problem had something to do with file locking. With this in mind, I systematically turned off all Samba locks one by one until I found the ones that worked.</p>
<div id="attachment_897" class="wp-caption aligncenter" style="width: 410px"><a href="http://spiralbound.net/wp-content/uploads/2005/09/maccopyerror.jpg"><img src="http://spiralbound.net/wp-content/uploads/2005/09/maccopyerror.jpg" alt="Finder Copy Error" title="maccopyerror" width="400" height="110" class="size-full wp-image-897" /></a><p class="wp-caption-text">Finder Copy Error</p></div>
<p><strong>IMPORTANT NOTE:</strong> <span style="text-decoration:underline;">The Samba share point in this environment is mounted over NFS on the server. The error did not occur when the Samba share point was on a filesystem local to the server.</span></p>
<p>Here is what our share looked like before making the changes:</p>
<p>[your-directive]<br />
read only = no<br />
preserve case = yes<br />
short preserve case = yes<br />
csc policy = disable<br />
share modes = no<br />
level2 oplocks = no</p>
<p>Adding either of the two following directives resolved the problem:</p>
<p>locking = no<br />
posix locking = no</p>
<p>Either one would have worked, but we ultimately decided to turn off posix locking because we wanted Samba to continue locking files for Windows connections, but stop locking them over NFS. Below is our share after making the change:</p>
<p>[your-share]<br />
read only = no<br />
preserve case = yes<br />
short preserve case = yes<br />
csc policy = disable<br />
share modes = no<br />
posix locking = no<br />
level2 oplocks = no</p>
<p>The <a href="http://www.samba.org/samba/docs/man/smb.conf.5.html">smb.conf man page</a> has the following to say about posix locking:</p>
<blockquote><p>posix locking<br />
The smbd daemon maintains an database of file locks obtained by SMB clients. The default behavior is to map this internal database to POSIX locks. This means that file locks obtained by SMB clients are consistent with those seen by POSIX compliant applications accessing the files via a non-SMB method (e.g. NFS or local file access). You should never need to disable this parameter.</p>
<p>Default: posix locking = yes</p></blockquote>
<p>The <a href="http://www.samba.org/samba/docs/man/smb.conf.5.html">smb.conf man page</a> has the following to say about locking:</p>
<blockquote><p>locking<br />
This controls whether or not locking will be performed by the server in response to lock requests from the client.</p>
<p>If locking = no, all lock and unlock requests will appear to succeed and all lock queries will report that the file in question is available for locking.</p>
<p>If locking = yes, real locking will be performed by the server.</p>
<p>This option may be useful for read-only filesystems which may not need locking (such as CDROM drives), although setting this parameter of no is not really recommended even in this case.<br />
Be careful about disabling locking either globally or in a specific service, as lack of locking may result in data corruption. You should never need to set this parameter.</p>
<p>No default</p></blockquote>
<p>Hopefully this is helpful. If anyone has anything to add, please post a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2005/09/22/macintosh-finder-copy-to-samba-share-problem/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Quick and Easy Apache Password Protection</title>
		<link>http://spiralbound.net/2005/08/03/quick-and-easy-apache-password-protection</link>
		<comments>http://spiralbound.net/2005/08/03/quick-and-easy-apache-password-protection#comments</comments>
		<pubDate>Wed, 03 Aug 2005 14:05:23 +0000</pubDate>
		<dc:creator>cliff</dc:creator>
				<category><![CDATA[Data and Technology]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[htpasswd]]></category>
		<category><![CDATA[passwd]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://spiralbound.net/?p=53</guid>
		<description><![CDATA[Here is a quick and easy HOWTO for setting up .htaccess password protection on web-accessable directories. It's really easy, but it's always nice to have the syntax right at your fingertips. First, find your way into the directory you want to protect. % cd /path/to/secure/directory Next, create a file in this directory called ".htaccess" and [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a quick and easy HOWTO for setting up .htaccess password protection on web-accessable directories. It's really easy, but it's always nice to have the syntax right at your fingertips.</p>
<p>First, find your way into the directory you want to protect.</p>
<p><strong>% cd /path/to/secure/directory</strong></p>
<p>Next, create a file in this directory called ".htaccess" and insert the following lines:</p>
<p><code><br />
AuthUserFile /path/to/secure/directory/.htpasswd<br />
AuthGroupFile /dev/null<br />
AuthName "Secure Document"<br />
AuthType Basic</p>
<p>&lt;LIMIT GET PUT POST&gt;<br />
require user username<br />
&lt;/LIMIT&gt;<br />
</code></p>
<p>Remember to change "/path/to/secure/directory" to your path, and "username" to the the username you want. You can use any username you wish, and it does not need to exist as a UNIX user.</p>
<p>Now we can create the username and password. The following command does this by creating a file called ".htpasswd" with the username and encrypted password inside.</p>
<p><strong>% /path/to/apache/install/bin/htpasswd -c .htpasswd username<br />
</strong><br />
Again, remember to change "username" to the username you have chosen, and enter the password twice when prompted.</p>
<p>Finally, we just have to make sure these two files are readable, and we are all done.</p>
<p><strong>% chmod 755 .htaccess</strong><br />
<strong>% chmod 755 .htpasswd</strong></p>
<p>This directory and all subdirectories will now prompt for this username and password whenever they are browsed to.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiralbound.net/2005/08/03/quick-and-easy-apache-password-protection/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
