<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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" version="2.0">

<channel>
	<title>Sebastian's blog</title>
	
	<link>http://tomcat.ranta.info</link>
	<description />
	<pubDate>Wed, 29 Oct 2008 14:21:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/tomcat_" type="application/rss+xml" /><item>
		<title>HowTo: Install OpenGroupware.org on Ubuntu 8.04 amd64 server with LDAP support (part 4 of 4)</title>
		<link>http://tomcat.ranta.info/2008/10/28/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-4-of-4/</link>
		<comments>http://tomcat.ranta.info/2008/10/28/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-4-of-4/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 15:31:36 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://tomcat.ranta.info/?p=679</guid>
		<description><![CDATA[
First part: Build OpenGroupware.org
Second part: Database
Third part: LDAP

We got the core OpenGroupware application.
We got a database backend (PostgreSQL).
We got centralized user management (LDAP).
Now it&#8217;s time to finish it all with a basic startup script for ogo.
Open up an editor:
sudo nano /etc/init.d/ogo
And put in the following:
#!/bin/bash
APP=ogo-webui-1.1
PIDFILE=/var/run/ogo
case &#8220;${1:-&#8221;}&#8221; in
&#8217;start&#8217;)
su -c &#8220;source /usr/GNUstep/System/Library/Makefiles/GNUstep.sh &#38;&#38; $APP&#8221; ogo &#62;&#62;/var/log/ogo/stdout 2&#62;&#62;/var/log/ogo/stderr [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://tomcat.ranta.info/2008/09/13/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-1-of-3/">First part: Build OpenGroupware.org</a></li>
<li><a href="http://tomcat.ranta.info/2008/10/24/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-2-of-4/">Second part: Database</a></li>
<li><a href="http://tomcat.ranta.info/2008/10/27/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-3-of-4/">Third part: LDAP</a></li>
</ul>
<p>We got the core OpenGroupware application.<br />
We got a database backend (PostgreSQL).<br />
We got centralized user management (LDAP).</p>
<p>Now it&#8217;s time to finish it all with a basic startup script for ogo.</p>
<p>Open up an editor:</p>
<blockquote><p>sudo nano /etc/init.d/ogo</p></blockquote>
<p>And put in the following:</p>
<blockquote><p>#!/bin/bash</p>
<p>APP=ogo-webui-1.1<br />
PIDFILE=/var/run/ogo</p>
<p>case &#8220;${1:-&#8221;}&#8221; in<br />
&#8217;start&#8217;)<br />
su -c &#8220;source /usr/GNUstep/System/Library/Makefiles/GNUstep.sh &amp;&amp; $APP&#8221; ogo &gt;&gt;/var/log/ogo/stdout 2&gt;&gt;/var/log/ogo/stderr &amp;<br />
echo $! &gt; $PIDFILE<br />
;;<br />
&#8217;stop&#8217;)<br />
cat $PIDFILE | xargs kill<br />
;;<br />
&#8216;restart&#8217;)<br />
/etc/init.d/ogo stop<br />
/etc/init.d/ogo start<br />
;;<br />
*)      # no parameter specified<br />
echo &#8220;Usage: $SELF start|stop|restart|reload|force-reload|status&#8221;<br />
exit 1<br />
;;<br />
esac</p></blockquote>
<p>(This is probably not the best startup script, but I have really no experience with this, and it does the job.)</p>
<p>You also need to create a directory for log files:</p>
<blockquote><p>sudo mkdir /var/log/ogo</p></blockquote>
<p>The init script will write stdout and stderr of the ogo webui process to appropriately named files.</p>
<p>Time to add the init script to the boot process:</p>
<blockquote><p>sudo update-rc.d ogo defaults</p></blockquote>
<p>Now it will start automatically on boot and stop on shutdown. <img src='http://tomcat.ranta.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: center;"><a href="http://tomcat.ranta.info/extra-img/20081028_Bildschirmfoto-OpenGroupware.org - Mozilla Firefox.png"><img class="aligncenter" title="OpenGroupware startup screen" src="/extra-img/20081028_Bildschirmfoto-OpenGroupware.org - Mozilla Firefox.png" alt="" width="836" height="178" /></a></p>
<p>And that&#8217;s it for this HowTo series. If You have any questions, don&#8217;t hesitate to comment! Thanks for reading! <img src='http://tomcat.ranta.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://tomcat.ranta.info/2008/10/28/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-4-of-4/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HowTo: Install OpenGroupware.org on Ubuntu 8.04 amd64 server with LDAP support (part 3 of 4)</title>
		<link>http://tomcat.ranta.info/2008/10/27/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-3-of-4/</link>
		<comments>http://tomcat.ranta.info/2008/10/27/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-3-of-4/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 15:47:37 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://tomcat.ranta.info/?p=669</guid>
		<description><![CDATA[
First part: Build OpenGroupware.org
Second part: Database
Fourth part: Finish

We got OpenGroupware and its database running, but we still want OpenGroupware integrated with our central user management in LDAP. Of course, this is optional, but it&#8217;s what we did at my last place of work. This HowTo is focused on OpenGroupware, so I won&#8217;t go into the [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://tomcat.ranta.info/2008/09/13/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-1-of-3/">First part: Build OpenGroupware.org</a></li>
<li><a href="http://tomcat.ranta.info/2008/10/24/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-2-of-4/">Second part: Database</a></li>
<li><a href="http://tomcat.ranta.info/2008/10/28/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-4-of-4/">Fourth part: Finish</a></li>
</ul>
<p>We got <a href="http://www.opengroupware.org/">OpenGroupware</a> and its database running, but we still want OpenGroupware integrated with our central user management in <a href="http://www.openldap.org/">LDAP</a>. Of course, this is optional, but it&#8217;s what we did at my last place of work. This HowTo is focused on OpenGroupware, so I won&#8217;t go into the details of correctly setting up your LDAP database; Only the basics.</p>
<p>Install the LDAP database server (slapd) and an <a href="http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page">administrative interface</a>:</p>
<blockquote><p>sudo apt-get install slapd phpldapadmin</p></blockquote>
<p>Choose a good administrator password. Anyone with admin access to your LDAP can easily take over control over big parts of your security/authentication. Note that if you forget the password, you can reset it using a new password in /etc/ldap/slapd.conf.</p>
<p>The default PHP installation on Ubuntu doesn&#8217;t provide enough memory for phpLDAPadmin, so we&#8217;ll have to increase that. Edit /etc/php5/apache2/php.ini and find the line</p>
<blockquote><p>memory_limit = 16M</p></blockquote>
<p>Change it to</p>
<blockquote><p>memory_limit = 32M</p></blockquote>
<p>Save and exit. Restart Apache.</p>
<p>Now open http://&lt;yourserver&gt;/phpldapadmin. It should show phpLDAPadmin. Press &#8220;Login&#8230;&#8221; and use the chosen password with the &#8220;cn=admin,dc=&lt;yourdomain&gt;,dc=&lt;yourtld&gt;&#8221; login DN.</p>
<p>We first need a group for all users. Open the LDAP tree on the left side and create a new entry. Use &#8220;Organisational Unit&#8221; as template. Name it &#8220;Groups&#8221;.</p>
<p>Now you have a repository for user groups. On the right side in the &#8220;Groups&#8221; detail page, create a new nested entry. Use &#8220;Posix Group&#8221; and name it &#8220;Users&#8221;. (<strong>Caution</strong>: If you use the LDAP for Posix auth/Unix user management, the new group will clash with system groups because of its ID.) Leave the &#8220;Users&#8221; entry empty.</p>
<p>Next, in the LDAP tree on the left side, create a new &#8220;Organisational Unit&#8221; named &#8220;Users&#8221;, just the way you did with the &#8220;Groups&#8221;.</p>
<p>Now, create a new nested entry. Template is &#8220;User Account&#8221;. Type in some details into the yellow fields. (<strong>Caution</strong> again: If you use the LDAP for Posix auth/Unix user management, these new users might clash with existing unix shadow users.) Type in a password for the user!</p>
<p>Now we have a new user in the LDAP database. You can create more, if you like. These will be used (with the passwords) for your OpenGroupware installation. You can close phpLDAPadmin now.</p>
<p>In the terminal, do</p>
<blockquote><p>sudo su ogo<br />
source /usr/GNUstep/System/Library/Makefiles/GNUstep.sh<br />
Defaults write NSGlobalDomain LSAuthLDAPServer localhost<br />
Defaults write NSGlobalDomain LSAuthLDAPServerRoot \&#8221;dc=&lt;yourdomain&gt;,dc=&lt;yourtld&gt;\&#8221;</p></blockquote>
<p>Make sure the quotation marks are properly escaped in the last line so that the &#8220;Defaults&#8221; tool will get the whole thing quoted. You can check with</p>
<blockquote><p>Defaults read</p></blockquote>
<p>if your settings came through.</p>
<p>Now do</p>
<blockquote><p>ogo-webui-1.1</p></blockquote>
<p>and browse to http://&lt;yourserver&gt;/OpenGroupware. You should get a login screen and should be able to log in using the LDAP username/password combinations.</p>
<p>Success! <img src='http://tomcat.ranta.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>In the last part &#8212; following soon &#8212; we will create startup/shutdown scripts for your OpenGroupware installation.</p>
]]></content:encoded>
			<wfw:commentRss>http://tomcat.ranta.info/2008/10/27/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-3-of-4/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HowTo: Install OpenGroupware.org on Ubuntu 8.04 amd64 server with LDAP support (part 2 of 4)</title>
		<link>http://tomcat.ranta.info/2008/10/24/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-2-of-4/</link>
		<comments>http://tomcat.ranta.info/2008/10/24/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-2-of-4/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 10:57:23 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://tomcat.ranta.info/?p=660</guid>
		<description><![CDATA[
First part: Build OpenGroupware.org
Third part: LDAP

Fourth part: Finish

Having built the binaries for OpenGroupware.org, we now need a database. OpenGroupware.org uses PostgreSQL. Install that:
sudo apt-get install postgresql
Create the database:
sudo su - postgres
createdb OGo
createuser -A -D OGo
Reply to createuser that the new user will not be able to create new roles, as it&#8217;s unnecessary. &#8220;-A&#8221; creates a [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://tomcat.ranta.info/2008/09/13/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-1-of-3/">First part: Build OpenGroupware.org</a></li>
<li><a href="http://tomcat.ranta.info/2008/10/27/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-3-of-4/">Third part: LDAP<br />
</a></li>
<li><a href="http://tomcat.ranta.info/2008/10/28/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-4-of-4/">Fourth part: Finish</a></li>
</ul>
<p>Having built the binaries for <a href="http://www.opengroupware.org/">OpenGroupware.org</a>, we now need a database. OpenGroupware.org uses <a href="http://www.postgresql.org/">PostgreSQL</a>. Install that:</p>
<blockquote><p>sudo apt-get install postgresql</p></blockquote>
<p>Create the database:</p>
<blockquote><p>sudo su - postgres<br />
createdb OGo<br />
createuser -A -D OGo</p></blockquote>
<p>Reply to createuser that the new user will not be able to create new roles, as it&#8217;s unnecessary. &#8220;-A&#8221; creates a regular user (instead of a superuser). &#8220;-D&#8221; denies the new user the ability to create databases.</p>
<p>Quit from the postgres shell:</p>
<blockquote><p>exit</p></blockquote>
<p>Edit the file /etc/postgresql/8.3/main/pg_hba.conf:</p>
<blockquote><p>sudo nano /etc/postgresql/8.3/main/pg_hba.conf</p></blockquote>
<p>Add the following:</p>
<blockquote><p>host    OGo         OGo         127.0.0.1/32          trust</p></blockquote>
<p>before the line</p>
<blockquote><p>host    all         all         127.0.0.1/32          md5</p></blockquote>
<p>And then restart PostgreSQL:</p>
<blockquote><p>sudo invoke-rc.d postgresql-8.3 restart</p></blockquote>
<p>This way, anyone trying to connect to the database as user &#8220;OGo&#8221; will always get in. It works only from the local machine, so if you have control over your users, everything should be alright. (You should note though that any user logged into your machine can access the whole OGo database!)</p>
<p>Now we need to install the database schema:</p>
<blockquote><p>cd /usr/local/lib64/opengroupware.org-1.1/commands/OGo.model/Resources<br />
psql -h localhost OGo OGo<br />
\i pg-build-schema.psql<br />
\q</p></blockquote>
<p>Now we have to set up the database connection in OpenGroupware.org:</p>
<blockquote><p>sudo su - ogo<br />
source /usr/GNUstep/System/Library/Makefiles/GNUstep.sh<br />
Defaults write NSGlobalDomain LSConnectionDictionary &#8216;{databaseName = OGo; hostName = localhost; password = &#8220;&#8221;; port = 5432; userName = OGo}&#8217;<br />
Defaults write NSGlobalDomain LSAdaptor PostgreSQL<br />
/usr/local/sbin/ogo-webui-1.1</p></blockquote>
<p>You should now be able to access http://&lt;yourhost&gt;/OpenGroupware and be automatically logged in as root.</p>
<p>That&#8217;s it for the database setup!</p>
]]></content:encoded>
			<wfw:commentRss>http://tomcat.ranta.info/2008/10/24/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-2-of-4/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Global search in p300 file-sharing tool</title>
		<link>http://tomcat.ranta.info/2008/10/03/global-search-in-p300-file-sharing-tool/</link>
		<comments>http://tomcat.ranta.info/2008/10/03/global-search-in-p300-file-sharing-tool/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 11:02:04 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
		
		<category><![CDATA[p300]]></category>

		<guid isPermaLink="false">http://tomcat.ranta.info/?p=652</guid>
		<description><![CDATA[As you can see on guruz&#8217; blog, our beloved file-sharing tool for private networks and VPNs - &#8220;p300&#8221; - now has global search and a couple other new features. As the backend code for global search is coded by me, this release is really important for me. The search has been implemented by using the [...]]]></description>
			<content:encoded><![CDATA[<p>As you can see on <a href="http://blog.guruz.de/2008/10/03/version-876-of-p300-has-been-released/">guruz&#8217; blog</a>, our beloved <strong>file-sharing tool for private networks and VPNs</strong> - &#8220;<strong>p300</strong>&#8221; - now has <a href="http://blog.guruz.de/2008/09/23/first-impressions-of-the-p300-global-search-result-window/">global search</a> and a couple other new features. As the <strong>backend code</strong> for global search is coded by <strong>me</strong>, this release is really important for me. The search has been <strong>implemented</strong> by using the <a href="http://greenbytes.de/tech/webdav/draft-reschke-webdav-search-latest.html">WebDAV SEARCH Standard (draft)</a>.</p>
<p><strong>Download now</strong>: <a href="http://p300.eu">p300.eu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tomcat.ranta.info/2008/10/03/global-search-in-p300-file-sharing-tool/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HowTo: Clone your Ubuntu 8.04 installation for easy 8.10-upgrade tests</title>
		<link>http://tomcat.ranta.info/2008/10/03/howto-clone-your-ubuntu-804-installation-for-easy-810-upgrade-tests/</link>
		<comments>http://tomcat.ranta.info/2008/10/03/howto-clone-your-ubuntu-804-installation-for-easy-810-upgrade-tests/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 10:36:00 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://tomcat.ranta.info/?p=650</guid>
		<description><![CDATA[In about 27 days, the new Ubuntu 8.10 will be released. The beta has been released yesterday. I have some spare time, so I&#8217;m using it to do an upgrade test for my installation. I don&#8217;t want my main system to be changed (or destroyed), so I&#8217;m first cloning the Ubuntu 8.04 installation on my [...]]]></description>
			<content:encoded><![CDATA[<p>In about <strong>27 days</strong>, the new <strong><a href="http://www.ubuntu.com/">Ubuntu</a> </strong><strong>8.10</strong> will be <strong>released</strong>. The <a href="http://www.ubuntu.com/testing/intrepid/beta">beta</a> has been released yesterday. I have some spare time, so I&#8217;m using it to do an <strong>upgrade test</strong> for my installation. I don&#8217;t want my <strong>main system</strong> to be <strong>changed</strong> (or <strong>destroyed</strong>), so I&#8217;m first <strong>cloning</strong> the <a href="http://www.ubuntu.com/getubuntu">Ubuntu 8.04</a> installation on my laptop, then <strong>upgrading</strong> <strong>that</strong> <strong>clone</strong> to Ubuntu 8.10 beta.</p>
<p>There are <strong>two reasons</strong> why you&#8217;d want to do that:</p>
<ul>
<li><strong>Check</strong> for yourself if the upgrade will <strong>work out alright</strong> when 8.10 is released, by <strong>testing without much risk</strong>.</li>
<li><strong>Test</strong> the <strong>upgrade path</strong> on your system, <a href="https://launchpad.net/">filing bugs</a> if things don&#8217;t work out well, to <strong>improve Ubuntu</strong>. Which is what <strong>I want to do</strong>.</li>
</ul>
<p>I have used this <strong>clone/upgrade path</strong> in <strong>older releases</strong>, I&#8217;m pretty sure it will also work in the <strong>future</strong>. It should also work in <strong>other distributions</strong>.</p>
<p><strong>Disclaimer</strong>: I cannot be held responsible for <strong>any damage</strong> this HowTo may cause. You are <strong>on your own</strong>. Only follow the steps if you know the <strong>implications</strong> of following them. This is <strong>dangerous stuff</strong> and can <strong>destroy your data!</strong></p>
<p>First, <strong>backup all your data</strong> on your installation. If anything <strong>goes wrong</strong>, you need to have a <strong>safe place</strong> for your data! There are <strong>many ways</strong> to do that, I usually <a href="http://tomcat.ranta.info/2008/01/30/rsync-for-backups/">rsync to an external disk</a>.</p>
<p>I now <strong>delete everything</strong> that I don&#8217;t need for the test, but <strong>you don&#8217;t need to do that</strong>. It will make the process take <strong>less time</strong> though, because there&#8217;s <strong>less data</strong> to clone. <strong>DO NOT DELETE IMPORTANT DATA!</strong> I only delete music, photos, videos and documents, which are only <strong>1:1 copies</strong> of my workstation&#8217;s data anyway.</p>
<p><strong>Boot</strong> your system from an <strong>Ubuntu LiveCD</strong>. We&#8217;re going to <strong>partition</strong> and <strong>copy the partitions</strong> from there.</p>
<p>Now it gets a bit <strong>difficult</strong>. You need to <strong>create new partitions</strong> that can take at least the used amount of space in your old partitions. <strong>For example</strong>, my setup is:</p>
<ul>
<li>/dev/sda1: <strong>5 GB on /, 2.67 GB used</strong></li>
<li>/dev/sda2: <strong>2 GB swap</strong></li>
<li>/dev/sda3: <strong>142 GB on /home, 8.17 GB used</strong></li>
</ul>
<p><strong>Swap can be re-used</strong> in the new installation, but the other two have to be <strong>cloned</strong>. So in this case I <strong>resized sda3</strong> to have 15 GB of free space. Then I created (in the free space) a <strong>new extended partition</strong> (disks can only take 4 partitions, so I need this &#8220;<strong>partition container</strong>&#8220;) sda4. In this container, I created <strong>sda5 (5 GB, my new /)</strong> and <strong>sda6 (10 GB, my new /home)</strong>. If you are going to use the upgraded installation for more than just <strong>playing around</strong>, reserve more space. If you have only one partition, only create one clone partition. It really <strong>depends on your setup</strong>.</p>
<p>All of this can be done in <strong>Partition Editor</strong> which comes with every <strong>Ubuntu LiveCD</strong>.</p>
<p>After some time, the <strong>new partitions</strong> will be there. Don&#8217;t forget to <strong>write down your disk partitioning</strong>, or leave the Partition Editor open.</p>
<p>Open a <strong>terminal</strong>. <strong>Create directories</strong> for your partitions, but name them to resemble their function. It&#8217;s more foolproof like that. <img src='http://tomcat.ranta.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<blockquote><p>mkdir old_root old_home new_root new_home</p></blockquote>
<p>Now, <strong>mount</strong> all the partitions:</p>
<blockquote><p>sudo mount /dev/sda1 old_root/<br />
sudo mount /dev/sda3 old_home/<br />
sudo mount /dev/sda5 new_root/<br />
sudo mount /dev/sda6 new_home/</p></blockquote>
<p>That&#8217;s about it. Now we need to <strong>copy the stuff over</strong>, bascially <strong>cloning</strong> your installation:</p>
<blockquote><p>sudo cp -av old_root/* new_root/<br />
sudo cp -av old_home/* new_home/</p></blockquote>
<p>&#8220;-a&#8221; means it will <strong>preserve links</strong>, file <strong>mode/ownership/timestamps</strong>, and copy <strong>recursively</strong>. Make sure the partitions you copy this way don&#8217;t have any files like &#8220;<strong>.file</strong>&#8221; in them, or copy them over manually, because the &#8220;*&#8221; <strong>won&#8217;t match</strong> those.</p>
<p>Of course, the last 3 steps really <strong>depend on your setup</strong>. If you have more or less partitions, you need to adjust the commands, but you should <strong>get the idea</strong>.</p>
<p>Depending on the amount of data and speed of your disks/machine, this can take some time. <strong>Grab a coffee!</strong></p>
<p>When this is finished, you can <strong>unmount</strong> your <strong>old partitions</strong>, just to be safe:</p>
<blockquote><p>sudo umount old_root old_home</p></blockquote>
<p>First, we need to change the <strong>partition identifiers</strong> in the <strong>new installation</strong>:</p>
<blockquote><p>sudo chroot new_root<br />
nano /etc/fstab</p></blockquote>
<p>Here, you need to set the <strong>UUIDs</strong> of your <strong>new partitions</strong> instead of the <strong>old ones</strong>. <strong>Swap</strong> stays the same. You can find the UUIDs through</p>
<blockquote><p>sudo blkid</p></blockquote>
<p><strong>Save &amp; exit</strong> from nano.</p>
<p>We want to <strong>upgrade</strong> the new installation, so <strong>grub</strong> (the boot loader) needs to be configured to run from the <strong>new installation</strong>:</p>
<blockquote><p>nano /boot/grub/menu.lst</p></blockquote>
<p><strong>Copy and paste</strong> the list of boot options (title, root, kernel, initrd, quiet) - there should be <strong>3</strong>, depening on your setup - below the line &#8220;<strong>END OF DEBIAN AUTOMAGIC KERNELS LIST</strong>&#8220;. Add something like &#8220;<strong>(old installation)</strong>&#8221; to the end of the &#8220;title&#8221; lines, so they <strong>differ</strong> from the new installation. Now, find a <strong>line</strong> that says:</p>
<blockquote><p># kopt=root=UUID=&lt;text&gt; ro</p></blockquote>
<p>And set the UUID to be the <strong>UUID of your new root</strong> partition (found through blkid).</p>
<p>Find the line:</p>
<blockquote><p># groot=(hd0,0)</p></blockquote>
<p>and change it to</p>
<blockquote><p># groot=(hd0,4)</p></blockquote>
<p>(or whatever your new root partition is).</p>
<p>Now we need to <strong>regenerate</strong> the <strong>boot options</strong> list:</p>
<blockquote><p>update-grub</p></blockquote>
<p><strong>Ignore the errors</strong>. They are caused by the fact that the <strong>environment</strong> is <strong>mixed</strong> between the <strong>LiveCD</strong> and your <strong>installation root</strong>. Yet, the <strong>/boot/grub/menu.lst</strong> should now contain both your <strong>new</strong> as well as your <strong>old kernels</strong>. <strong>Exit</strong> from the chroot shell:</p>
<blockquote><p>exit</p></blockquote>
<p>In the regular <strong>LiveCD shell</strong>, we now need to <strong>install the new boot loader</strong>:</p>
<blockquote><p>sudo grub-install &#8211;root-directory=new_root/ /dev/sda</p></blockquote>
<p>(<strong>Depends on your setup</strong>, /dev/sda might be another disk.)</p>
<p>And <strong>that&#8217;s it</strong>. We should now be able to boot into the new or the old installation. <strong>Try it out</strong>! (Press <strong>Esc</strong> before Linux boot to open the <strong>grub boot loader option screen</strong>.) <strong>Verify</strong> by typing</p>
<blockquote><p>mount</p></blockquote>
<p>in a terminal that you are indeed using the <strong>correct partitions</strong> in each case (because of the <em>fstab</em> change).</p>
<p>You now have <strong>two</strong> <strong>identical copies</strong> of the same installation. They could also be used as a <strong>failover</strong> over something, in case you hack the wrong file in the original installation. <img src='http://tomcat.ranta.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>What I want to do is <strong>upgrade</strong> the installation to the current <strong>development version</strong>: <strong>Boot</strong> into the new installation. Open a <strong>terminal</strong>. Type:</p>
<blockquote><p>gksudo &#8212; update-manager -d</p></blockquote>
<p>(&#8221;&#8211;&#8221; is necessary so the &#8220;-d&#8221; won&#8217;t be mistaken for gksudo&#8217;s &#8220;debug&#8221; option.) You should now get a <strong>notification</strong> that there is a <strong>new version</strong> available. By pressing the button you <strong>start the upgrade</strong> process. Realize that this is really what you want and that you are <strong>mostly safe</strong> because you are running a <strong>cloned install</strong>, and press it.</p>
<p>And that&#8217;s it for this HowTo. <strong>Upgrade</strong>, <strong>file bugs</strong>, <strong>test</strong> the installation however you like. Your old system is <strong>safe</strong>. In a couple of days/weeks I&#8217;ll write a HowTo on how to <strong>remove the clone</strong> and get back to the <strong>old setup</strong> (basically, it&#8217;s &#8220;remove new partitions&#8221; and &#8220;grub-install &#8211;root-directory=old_root /dev/sda&#8221;).</p>
<p>If you have <strong>questions</strong>/<strong>suggestions</strong>/<strong>thanks</strong>, don&#8217;t hesitate to <strong>comment</strong>.</p>
<p><strong>Update:<br />
</strong>I often have the problem that &#8212; when resuming my 8.04/8.10 dualboot laptop from hibernation &#8212; I choose the wrong Ubuntu version in grub. It can&#8217;t resume and wipes out the hibernation image from the swap drive. This is bad. Here&#8217;s a small workaround:</p>
<p>Before doing &#8220;update-grub&#8221;, open /boot/grub/menu.lst and change the lines</p>
<blockquote><p>default 0<br />
savedefault=false</p></blockquote>
<p>to</p>
<blockquote><p>default saved<br />
savedefault=true</p></blockquote>
<p>(They are not really next to each other, this is only to shorten the text.)</p>
<p>Also, add &#8220;savedefault&#8221; to the regular boot option of your <em>old</em> installation, before or after &#8220;quiet&#8221;. With these options, grub will recognize which was the last Ubuntu version booted, and will automatically load it the next time, unless changed manually. When resuming from hibernation, it will always load the appropriate Ubuntu version.</p>
]]></content:encoded>
			<wfw:commentRss>http://tomcat.ranta.info/2008/10/03/howto-clone-your-ubuntu-804-installation-for-easy-810-upgrade-tests/feed/</wfw:commentRss>
		</item>
		<item>
		<title>First visit to the the Federal Employment Office</title>
		<link>http://tomcat.ranta.info/2008/09/26/first-visit-to-the-the-federal-employment-office/</link>
		<comments>http://tomcat.ranta.info/2008/09/26/first-visit-to-the-the-federal-employment-office/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 07:19:23 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
		
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://tomcat.ranta.info/?p=642</guid>
		<description><![CDATA[
This post is meant for people who want to know what it will be like to enter the Federal Employment Office for the first time. Of course, this will be a purely subjective story.
There are two good reasons to visit the office, even when you don&#8217;t have trouble to find work:

Get the status of &#8220;seeking [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 190px"><img title="Agentur für Arbeit (Federal Employment Office)" src="/extra-img/20080926_Arbeitsamt.jpg" alt="Agentur für Arbeit (Federal Employment Office)" width="180" height="120" /><p class="wp-caption-text">Agentur für Arbeit (Federal Employment Office)</p></div>
<p>This post is meant for people who want to know <strong>what it will be like</strong> to enter the <a href="http://www.arbeitsagentur.de/">Federal Employment Office</a> for the first time. Of course, this will be a purely <strong>subjective story</strong>.</p>
<p>There are <strong>two good reasons</strong> to visit the office, even when you don&#8217;t have trouble to find work:</p>
<ol>
<li>Get the status of &#8220;<strong>seeking work</strong>&#8221; so your <strong>pension won&#8217;t suffer</strong>. If you have one or more months between education and a job, this is the case. These months should be certified.</li>
<li><strong>Get job offers</strong>. Some companies look for employees via the office.</li>
</ol>
<p>First tip: <strong>Get up early</strong> and be there at opening time. As with any federal office, you have an advantage by coming at times of <strong>less traffic</strong>, like the <strong>early mornings</strong>.</p>
<p>What to bring:</p>
<ul>
<li>Personal <strong>ID card</strong></li>
<li><strong>Social security number</strong> (if you have one)</li>
<li><strong>Curriculum vitae</strong></li>
</ul>
<p>The receptionist will give you a <strong>sheet</strong> about your <strong>personal data</strong> to fill out and you&#8217;ll be transferred to the <strong>waiting room</strong>. If you haven&#8217;t finished filling in your details, one of the consultants will help you after they pick you up (which happened after <strong>one minute</strong> for me).</p>
<p>The sheet is about your <strong>life</strong>, your <strong>social situation</strong>, <strong>military service</strong>, <strong>side jobs</strong>, <strong>disabilities</strong>. The consultant was really nice and <strong>explained anything</strong> I wanted to know about the questions. This is where you&#8217;ll also need the <strong>ID card</strong> and <strong>social security number</strong>. The consultant then <strong>copied</strong> my <strong>curriculum vitae</strong>. Hint: <strong>Electronic copies</strong> are useless, I brought one, but she couldn&#8217;t accept it.</p>
<p>Then she&#8217;ll input the data into your computer file. At the same time, you fill out another <strong>paper sheet</strong> about your <strong>past</strong>, <strong>current</strong> and <strong>future employment(s)</strong>. This is mostly data that you would research when looking for a job:</p>
<ul>
<li><strong>Area of work</strong>, past and desired</li>
<li><strong>Status</strong> of current <strong>job search</strong> (companies names + status, but you can just give the number of job applications you sent out)</li>
<li>Job <strong>start date</strong>, <strong>salary</strong> (past and desired)</li>
<li>Ability to <strong>travel</strong> and/or <strong>move</strong>, <strong>commuting</strong>, details like distance and/or time</li>
<li><strong>Working skills</strong>, <strong>computer skills</strong>, <strong>personal skills</strong> with one of four qualities between excellent and bad</li>
</ul>
<p>After that she will give you an <strong>appointment</strong> for a <strong>counseling interview</strong>, but also details on how to cancel the appointment if you <strong>already have a job offer</strong>. The <strong>important thing</strong> is that only the consultant of that interview can <strong>certify</strong> you were looking for a job! <strong>If you cancel</strong>, you need to strongly point out that you need the certificate.</p>
<p>She gave me a <strong>brochure</strong> about what the office can offer me for getting a job, like <strong>financial aid</strong> for moving homes.</p>
<p>I asked about <strong>health insurance</strong>, because that would cost about half my salary currently. Unfortunately, as I already suspected, you only get <strong>free health insurance</strong> by the office if you receive <strong>unemployment benefits</strong>. Without any full time work, there are no unemployment benefits, so that leaves <strong>social welfare</strong>. If you have enough money to cope I suggest not to apply for this.</p>
<p>The whole process took a little more than <strong>half an hour</strong>.</p>
<p>If you have any <strong>questions</strong> concerning my visit, please leave a <strong>comment</strong> or <strong>contact me</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tomcat.ranta.info/2008/09/26/first-visit-to-the-the-federal-employment-office/feed/</wfw:commentRss>
		</item>
		<item>
		<title>party_playlist</title>
		<link>http://tomcat.ranta.info/2008/09/20/party_playlist/</link>
		<comments>http://tomcat.ranta.info/2008/09/20/party_playlist/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 12:16:06 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://tomcat.ranta.info/?p=640</guid>
		<description><![CDATA[And another one of my small apps is finished.
When you have a party at your house, it&#8217;s sometimes difficult to find out what music people would like to listen to. But we got this great last.fm network, right? Why not use this information to create a special party playlist? And that&#8217;s what my code does.
Find [...]]]></description>
			<content:encoded><![CDATA[<p>And another one of my <strong>small apps</strong> is finished.</p>
<p>When you have a <strong>party at your house</strong>, it&#8217;s sometimes difficult to find out what <strong>music</strong> people would like to <strong>listen</strong> to. But we got this great <a href="http://last.fm">last.fm</a> network, right? Why not <strong>use this information</strong> to create a special <strong>party playlist</strong>? And that&#8217;s what my code does.</p>
<p>Find more information on the app&#8217;s site: <a href="https://content.no-ip.org/KnightsWiki/wiki.pl?PartyPlaylist">party_playlist</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tomcat.ranta.info/2008/09/20/party_playlist/feed/</wfw:commentRss>
		</item>
		<item>
		<title>movie_collage</title>
		<link>http://tomcat.ranta.info/2008/09/18/movie_collage/</link>
		<comments>http://tomcat.ranta.info/2008/09/18/movie_collage/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 19:12:01 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://tomcat.ranta.info/?p=638</guid>
		<description><![CDATA[
Maybe (or maybe not) you know that situation: You&#8217;re with friends, have a laptop full of movies (all legally purchased of course), but you can&#8217;t decide what to watch. Of course you have an ugly file list, and maybe a file manager preview but it&#8217;s just all now very usable, because it&#8217;s not intuitive.
Wouldn&#8217;t it [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 330px"><img title="Screenshot of movie_collage" src="/extra-img/20080918_Screenshot.png" alt="Screenshot of movie_collage" width="320" height="200" /><p class="wp-caption-text">Screenshot of movie_collage</p></div>
<p>Maybe (or maybe not) you know that <strong>situation</strong>: You&#8217;re <strong>with friends</strong>, have a laptop <strong>full of movies</strong> (all <strong>legally purchased</strong> of course), but you can&#8217;t <strong>decide what to watch</strong>. Of course you have an <strong>ugly file list</strong>, and maybe a <strong>file manager preview</strong> but it&#8217;s just all now very usable, because it&#8217;s <strong>not intuitive</strong>.</p>
<p>Wouldn&#8217;t it be so much <strong>better</strong> to browse your movies like you would in a <strong>video rental store</strong>? <strong>Choosing a movie by cover</strong>?</p>
<p>That&#8217;s now possible with <strong>movie_collage</strong>. In the most basic explanation, this little Python script will take a <strong>list of movies</strong>, <strong>download proper names</strong> and <strong>movie posters</strong> for them automatically, and arrange them in <strong>movie poster collages</strong>, as seen in the <strong>screenshot</strong>.</p>
<p>You can get <strong>more information</strong> about it from the <a href="https://content.no-ip.org/opensource/movie_collage/movie_collage/README">README</a>. The <strong>download</strong> is on <a href="https://content.no-ip.org/KnightsWiki/wiki.pl?MovieCollage">its wiki page</a>.</p>
<p>Of course the whole app is <strong>extensible</strong>, and <strong>free software</strong>. You can write your own movie list sources or movie poster downloaders (for <strong>Google Images</strong>, <strong>Wikipedia</strong>?) easily. <strong>Have fun</strong> playing with it, and <strong>drop me a line</strong> if you have problems, or if you like it. <img src='http://tomcat.ranta.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://tomcat.ranta.info/2008/09/18/movie_collage/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Two tiny projects</title>
		<link>http://tomcat.ranta.info/2008/09/17/two-tiny-projects/</link>
		<comments>http://tomcat.ranta.info/2008/09/17/two-tiny-projects/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 20:02:04 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://tomcat.ranta.info/?p=634</guid>
		<description><![CDATA[I have an evening with friends coming up, so I&#8217;m starting two new tiny software projects.

An app that will read my movie collection, find images for the various movies, and draw a collage of it so that people can choose more easily.
An app that will read several Last.fm profiles and then create a rhythmbox playlist [...]]]></description>
			<content:encoded><![CDATA[<p>I have an <strong>evening with friends</strong> coming up, so I&#8217;m starting two new tiny software projects.</p>
<ol>
<li>An app that will read my <strong>movie collection</strong>, find <a href="http://www.imdb.com/">images for the various movies</a>, and draw a <strong>collage</strong> of it so that people can choose more easily.</li>
<li>An app that will read several <strong><a href="http://www.lastfm.de/home">Last.fm</a> profiles</strong> and then create a <strong><a href="http://www.gnome.org/projects/rhythmbox/">rhythmbox</a> playlist</strong> suitable for everyone.</li>
</ol>
<p>These might prove to be <strong>very interesting projects</strong>. I&#8217;ll try to keep it all <strong>open</strong> (concerning interfaces) so that others can <strong>build open the code</strong>, which will be <strong>freely available</strong> of course.</p>
]]></content:encoded>
			<wfw:commentRss>http://tomcat.ranta.info/2008/09/17/two-tiny-projects/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HowTo: Install OpenGroupware.org on Ubuntu 8.04 amd64 server with LDAP support (part 1 of 4)</title>
		<link>http://tomcat.ranta.info/2008/09/13/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-1-of-3/</link>
		<comments>http://tomcat.ranta.info/2008/09/13/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-1-of-3/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 15:42:56 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://tomcat.ranta.info/?p=629</guid>
		<description><![CDATA[
Second part: Database
Third part: LDAP
Fourth part: Finish

First some notes.
The installation and compile notes on opengroupware.org are either

not relevant (wrong distro, wrong architecture) or
outdated (current release is 1.1.7, compile notes still talk about 1.0beta)

Also, there are a lot of pitfalls when compiling such a huge project.
I had to install OpenGroupware.org on a company machine, so why [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://tomcat.ranta.info/2008/10/24/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-2-of-4/">Second part: Database</a></li>
<li><a href="http://tomcat.ranta.info/2008/10/27/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-3-of-4/">Third part: LDAP</a></li>
<li><a href="http://tomcat.ranta.info/2008/10/28/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-4-of-4/">Fourth part: Finish</a></li>
</ul>
<p><strong>First</strong> some notes.<br />
The <strong>installation</strong> and <strong>compile notes</strong> on <a href="http://www.opengroupware.org">opengroupware.org</a> are either</p>
<ul>
<li><strong>not relevant</strong> (wrong distro, wrong architecture) or</li>
<li><strong>outdated</strong> (current release is 1.1.7, compile notes still talk about 1.0beta)</li>
</ul>
<p>Also, there are a lot of <strong>pitfalls</strong> when compiling such a huge project.</p>
<p>I had to install OpenGroupware.org on a <strong>company machine</strong>, so why not <strong>document the process</strong>?</p>
<p>I&#8217;m <strong>not</strong> the perfect sysadmin and I&#8217;ve not written many guides, so I&#8217;m sorry if there&#8217;s something <strong>missing</strong> or if I don&#8217;t do stuff as they &#8220;<strong>should be done</strong>&#8220;. You can always <strong>leave comments</strong> and I might follow up on them.</p>
<p>This is the <strong>first part</strong>, where I will <strong>compile &amp; install OpenGroupware.org</strong>.<br />
The <strong>second part</strong> will be the <strong>database setup &amp; creation</strong>.<br />
The <strong>third part</strong> will cover <strong>LDAP connectivity</strong>.</p>
<p>Make sure you <strong>don&#8217;t forget any commands</strong>, because the source is so <strong>fragile</strong> it might not compile anymore <strong>after adding a prior dependency</strong>.</p>
<p><strong>Install subversion, build-essential &amp; gobjc</strong>. Necessary to retrieve &amp; compile the latest OGo release.</p>
<blockquote><p>sudo apt-get install subversion build-essential gobjc-4.2</p></blockquote>
<p><strong>Create a new &#8220;ogo&#8221; directory</strong> in your home directory. This is where we will put the code and compile stuff.</p>
<blockquote><p>mkdir ogo<br />
cd ogo</p></blockquote>
<p><strong>Check out the SOPE 4.7.1 &amp; OGo 1.1.5 source code</strong>:</p>
<blockquote><p>svn co http://svn.opengroupware.org/SOPE/releases/4.7.1-fwd/<br />
svn co http://svn.opengroupware.org/OpenGroupware.org/releases/1.1.5-moveon/</p></blockquote>
<p><strong>Build gnustep-make</strong>. This is needed as a basis for both SOPE and OGo. Do not install gnustep-make or gnustep-make-ogo from the package archives, they won&#8217;t work with the new versions of SOPE and OGo.</p>
<blockquote><p>cd ~/ogo/4.7.1-fwd/gnustep-make<br />
./configure &#8211;with-library-combo=gnu-fd-nil<br />
make<br />
sudo make install</p></blockquote>
<p>Your GNUstep environment is now in <strong>/usr/GNUstep</strong>.</p>
<p>Install the optional libraries for SOPE: <strong>xml2, ldap, ssl, pq, sqlite3, mysqlclient</strong>.</p>
<blockquote><p>sudo apt-get install libxml2-dev libldap2-dev libssl-dev libpq-dev libsqlite3-dev libmysqlclient15-dev</p></blockquote>
<p><strong>Compile libFoundation</strong>. This is a basis library for objective C development. There is a package for this, but the package had some problems with OGo when it was compiled.</p>
<blockquote><p>cd ~/ogo/4.7.1-fwd/libFoundation<br />
source /usr/GNUstep/System/Library/Makefiles/GNUstep.sh<br />
./configure<br />
make<br />
sudo make install</p></blockquote>
<p>libFoundation is now in <strong>/usr/GNUstep/System/Libraries/Resources</strong>.</p>
<p>Now <strong>compile &amp; install SOPE</strong>.</p>
<blockquote><p>cd ~/ogo/4.7.1-fwd<br />
./configure<br />
make<br />
sudo mkdir /usr/local/lib64<br />
sudo make install</p></blockquote>
<p>It&#8217;ll all be installed under <strong>/usr/local</strong>.</p>
<p>Now build <strong>OpenGroupware</strong>.</p>
<blockquote><p>cd ~/ogo/1.1.5-moveon<br />
./configure<br />
make<br />
sudo make install</p></blockquote>
<p>So far I have not found a way to compile in <strong>PDA support</strong> (<strong>libpisock</strong>), because the Ubuntu-supplied one does not work with OGo 1.1.5, and compiling it myself didn&#8217;t work out.</p>
<p>OGo uses <strong>non-default library paths (/usr/local/lib64)</strong>, these need to be added to the library search path of the system.</p>
<blockquote><p>sudo nano /etc/ld.so.conf.d/x86_64-linux-gnu.conf</p></blockquote>
<p><strong>Add /usr/local/lib64 at the end of the file</strong>, save and exit. Now run</p>
<blockquote><p>sudo ldconfig</p></blockquote>
<p>to <strong>reload the config</strong>.</p>
<p>The <strong>Apache connector</strong> is missing. Install the <strong>apache2 development headers</strong> and build <strong>ngobjweb</strong> with:</p>
<blockquote><p>sudo apt-get install apache2-prefork-dev <em>(depends on your version of apache&#8230; threaded or prefork)</em><br />
cd ~/ogo/4.7.1-fwd/sope-appserver/mod_ngobjweb<br />
sed -i s/ap_http_method/ap_http_scheme/ handler.c<br />
make<br />
sudo make install</p></blockquote>
<p>Now we need the <strong>theme resource files</strong> of OpenGroupware:</p>
<blockquote><p>cd /usr/local/share/opengroupware.org-1.1<br />
sudo rm templates translations<br />
sudo cp -r ~/ogo/1.1.5-moveon/Themes/WebServerResources/ ./www<br />
sudo cp -r ~/ogo/1.1.5-moveon/WebUI/Templates ./templates<br />
sudo cp -r ~/ogo/1.1.5-moveon/WebUI/Resources ./translations</p></blockquote>
<p>HowTos on <strong>setting up an apache2 serve</strong>r can be found anywhere, so I won&#8217;t go into details. <strong>After</strong> it is installed:</p>
<blockquote><p>cd /etc/apache2/conf.d<br />
sudo nano ngobjweb</p></blockquote>
<p>The file should <strong>look like this</strong>:</p>
<blockquote><p>LoadModule ngobjweb_module /usr/GNUstep/System/Library/WOAdaptors/Apache/mod_ngobjweb.so</p>
<p>&lt;LocationMatch &#8220;^/OpenGroupware*&#8221;&gt;<br />
SetHandler ngobjweb-adaptor<br />
SetAppPort 20000<br />
&lt;/LocationMatch&gt;</p>
<p>Alias /OpenGroupware11.woa/WebServerResources/ \<br />
/usr/local/share/opengroupware.org-1.1/www/</p></blockquote>
<p><strong>Save &amp; exit</strong>.</p>
<p>You should now <strong>create a user</strong> that will be used to run OpenGroupware.</p>
<blockquote><p>sudo adduser &#8211;system &#8211;shell /bin/bash ogo<br />
sudo su ogo<br />
source /usr/GNUstep/System/Library/Makefiles/GNUstep.sh<br />
ogo-webui-1.1</p></blockquote>
<p><strong>And that&#8217;s it</strong>. By going to <strong>$YOUR_WEBSERVER/OpenGroupware</strong>, you should see the <strong>OpenGroupware page</strong> (with graphics hopefully) showing an <strong>error</strong> that the <strong>database is missing</strong>. But for that, see <strong>part 2</strong>, coming soon.</p>
<p><strong>Update:<br />
</strong>1.1.7 was throwing segfaults when accessing project files. This does not happen with 1.1.5, so the above has been changed. Generally, the instructions work for both versions.</p>
<p><strong>Update 2:</strong><br />
Sorry, something else missing.</p>
<p>As your regular user, do:</p>
<blockquote><p>sudo mkdir /var/lib/ogo<br />
sudo chown ogo.nogroup /var/lib/ogo<br />
sudo chmod 700 /var/lib/ogo<br />
sudo su ogo<br />
source /usr/GNUstep/System/Library/Makefiles/GNUstep.sh<br />
Defaults write NSGlobalDomain LSAttachmentPath /var/lib/ogo</p></blockquote>
<p>The directory /var/lib/ogo will then serve as file database for OpenGroupware.</p>
]]></content:encoded>
			<wfw:commentRss>http://tomcat.ranta.info/2008/09/13/howto-install-opengroupwareorg-on-ubuntu-804-amd64-server-with-ldap-support-part-1-of-3/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
