<?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/"
	>

<channel>
	<title>The Alabama Geek</title>
	<atom:link href="http://www.theneelyfamily.net/grady/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.theneelyfamily.net/grady/blog</link>
	<description>Geeky stuff from a down-home boy.</description>
	<lastBuildDate>Tue, 06 Jul 2010 23:49:31 +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>Adding filetypes to Safari&#8217;s &#8220;Safe List&#8221;</title>
		<link>http://www.theneelyfamily.net/grady/blog/2009/08/12/adding-filetypes-to-safaris-safe-list/</link>
		<comments>http://www.theneelyfamily.net/grady/blog/2009/08/12/adding-filetypes-to-safaris-safe-list/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 14:25:20 +0000</pubDate>
		<dc:creator>grady</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.theneelyfamily.net/grady/blog/?p=75</guid>
		<description><![CDATA[Ever wanted to have Safari open a filetype after downloading? Well I was constantly downloading Word files at work and then having to navigate to my Downloads folder to open the file. I wanted Safari to behave *gasp* like IE in this regard. This seemed like an unnecessary step and and a disruption of my [...]]]></description>
			<content:encoded><![CDATA[<p>Ever wanted to have Safari open a filetype after downloading?</p>
<p>Well I was constantly downloading Word files at work and then having to navigate to my Downloads folder to open the file.  I wanted Safari to behave *gasp* like IE in this regard.  This seemed like an unnecessary step and and a disruption of my personal workflow, security concerns aside.</p>
<p>So if you are ok with the Security ramifications and want to do this, read on.</p>
<p>Navigate to your ~/Library/Preferences directory.  Open, or create the following file, com.apple.DownloadAssessment.plist.</p>
<p>Add the following, i.e. to allow Safari to open a .doc file after it downloads:</p>
<p>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />
&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;<br />
&lt;plist version=&quot;1.0&quot;&gt;<br />
&lt;dict&gt;<br />
	&lt;key&gt;LSRiskCategorySafe&lt;/key&gt;<br />
	&lt;dict&gt;<br />
		&lt;key&gt;LSRiskCategoryExtensions&lt;/key&gt;<br />
		&lt;array&gt;<br />
<strong>			&lt;string&gt;doc&lt;/string&gt;</strong><br />
		&lt;/array&gt;<br />
	&lt;/dict&gt;<br />
&lt;/dict&gt;<br />
&lt;/plist&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theneelyfamily.net/grady/blog/2009/08/12/adding-filetypes-to-safaris-safe-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiling FreeRADIUS on Solaris 10</title>
		<link>http://www.theneelyfamily.net/grady/blog/2009/07/31/compiling-freeradius-on-solaris-10/</link>
		<comments>http://www.theneelyfamily.net/grady/blog/2009/07/31/compiling-freeradius-on-solaris-10/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 19:04:14 +0000</pubDate>
		<dc:creator>grady</dc:creator>
				<category><![CDATA[freeradius]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://www.theneelyfamily.net/grady/blog/?p=73</guid>
		<description><![CDATA[First off you have to configure Solaris 10 as a dev platform if it is not already: 1. Go to sunfreeware.com and download the latest gcc package and any dependent packages. 2. type &#8220;pkgadd -d gcc-package-name&#8221; 3. If you&#8217;re using bash as your shell, just add the following lines into your ~/.bashrc file, or modify [...]]]></description>
			<content:encoded><![CDATA[<p>First off you have to configure Solaris 10 as a dev platform if it is not already:</p>
<p>1. Go to sunfreeware.com and download the latest gcc package and any dependent packages.<br />
2. type &#8220;pkgadd -d gcc-package-name&#8221;<br />
3. If you&#8217;re using bash as your shell, just add the following lines into your ~/.bashrc file, or modify any existing lines to include those shown. You should of course, adjust these paths to your system &#8211; but for most situations, these will be appropriate:</p>
<p>export PATH=/usr/local/bin:/usr/ccs/bin:$PATH<br />
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib<br />
export MANPATH=/usr/local/man:$MANPATH<br />
export CPPFLAGS=&#8221;-I/usr/openwin/share/include/X11/extensions -I/usr/openwin/include&#8221;</p>
<p>4. Download the freeradius tarball.<br />
5. Untar/unzip the file.<br />
6. cd freeradius source directory<br />
7. ./configure<br />
8. ./make<br />
9 ./make install</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theneelyfamily.net/grady/blog/2009/07/31/compiling-freeradius-on-solaris-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delete Files Older than X Days</title>
		<link>http://www.theneelyfamily.net/grady/blog/2009/05/05/delete-files-older-than-x-days/</link>
		<comments>http://www.theneelyfamily.net/grady/blog/2009/05/05/delete-files-older-than-x-days/#comments</comments>
		<pubDate>Tue, 05 May 2009 15:29:29 +0000</pubDate>
		<dc:creator>grady</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.theneelyfamily.net/grady/blog/2009/05/05/delete-files-older-than-x-days/</guid>
		<description><![CDATA[The find utility on linux allows you to pass in a bunch of interesting arguments, including one to execute another command on each file. We&#8217;ll use this in order to figure out what files are older than a certain number of days, and then use the rm command to delete them. Command Syntax &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;find /path/to/files* [...]]]></description>
			<content:encoded><![CDATA[<p>The find utility on linux allows you to pass in a bunch of interesting arguments, including one to execute another command on each file. We&#8217;ll use this in order to figure out what files are older than a certain number of days, and then use the rm command to delete them.</p>
<p><strong>Command Syntax </strong><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;find /path/to/files* -mtime +5 -exec rm {} \;</p>
<p>Note that there are spaces between rm, {}, and \;</p>
<p><strong>Explanation:</strong></p>
<ul style="list-style-type: disc">
<li>The first argument is the path to the files. This can be a path, a directory, or a wildcard as in the example above. I would recommend using the full path, and make sure that you run the command without the exec rm to make sure you are getting the right results. </li>
<li>The second argument, -mtime, is used to specify the number of days old that the file is. If you enter +5, it will find files older than 5 days. </li>
<li>The third argument, -exec, allows you to pass in a command such as rm. The {} \; at the end is required to end the command.This should work on Ubuntu, Suse, Redhat, or pretty much any version of linux.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.theneelyfamily.net/grady/blog/2009/05/05/delete-files-older-than-x-days/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH Escape Sequences</title>
		<link>http://www.theneelyfamily.net/grady/blog/2009/05/05/ssh-escape-sequences/</link>
		<comments>http://www.theneelyfamily.net/grady/blog/2009/05/05/ssh-escape-sequences/#comments</comments>
		<pubDate>Tue, 05 May 2009 15:24:39 +0000</pubDate>
		<dc:creator>grady</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.theneelyfamily.net/grady/blog/2009/05/05/ssh-escape-sequences/</guid>
		<description><![CDATA[Yes, SSH has an escape sequence, much like telnet’s strl-] sequence. Remember those times when you, say, restart a daemon, go to log out of the server, but are left hanging? SSH escape sequence! It’s tunable in /etc/ssh/ssh_config on the client-side, and of course in your ~/.ssh/config, but by default, the EscapeChar is the ~ [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, SSH has an escape sequence, much like telnet’s strl-] sequence. Remember those times when you, say, restart a daemon, go to log out of the server, but are left hanging? SSH escape sequence!</p>
<p>It’s tunable in /etc/ssh/ssh_config on the client-side, and of course in your ~/.ssh/config, but by default, the <span style="color: rgb(0,24,234); text-decoration: underline;">EscapeChar</span> is the ~ key. So, if you ssh into a box. and type:<br />
~?<br />
 You’ll be presented with this list:</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Supported escape sequences:<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;~. &#8211; terminate connection<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;~B &#8211; send a BREAK to the remote system<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;~C &#8211; open a command line<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;~R &#8211; Request rekey (SSH protocol 2 only)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;~^Z &#8211; suspend ssh<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;~#  - list forwarded connections<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;~&amp; - background ssh (when waiting for connections to terminate)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;~? &#8211; this message<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;~~ &#8211; send the escape character by typing it twice <strong>(Note that escapes are only recognized immediately after newline.)<br />
</strong><br />
You can use ~. to kill the connection&#8230; or ~^Z to suspend it.</p>
<p>A particularly interesting one is the command line option, or “~C”. With that, you can get an ssh command line, with the following options:</p>
<ul style="list-style-type: disc">
<li>-Lport:host:hostport    Request local forward </li>
<li>-Rport:host:hostport    Request remote forward </li>
<li>-KRhostport             Cancel remote forward</li>
</ul>
<p> That is, you can forward ports using your existing SSH connection, rather than starting up a new one. Cool!<br />
 Another helpful way out of “locked” terminals is screen’s ctrl-a ctrl-k <span style="font-size: 20pt;">☺</span> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.theneelyfamily.net/grady/blog/2009/05/05/ssh-escape-sequences/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO: Reset a lost OS X password</title>
		<link>http://www.theneelyfamily.net/grady/blog/2009/05/05/howto-reset-a-lost-os-x-password/</link>
		<comments>http://www.theneelyfamily.net/grady/blog/2009/05/05/howto-reset-a-lost-os-x-password/#comments</comments>
		<pubDate>Tue, 05 May 2009 15:12:47 +0000</pubDate>
		<dc:creator>grady</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.theneelyfamily.net/grady/blog/2009/05/05/howto-reset-a-lost-os-x-password/</guid>
		<description><![CDATA[I&#8217;ve you&#8217;ve forgotten your Mac&#8217;s admin account password, don&#8217;t worry. Assuming you haven&#8217;t locked out OpenFirmware, it&#8217;s a pretty simple task to change your password back to something you know. Here&#8217;s how: Hold Apple+S when booting to enter single user mode #sh /etc/rc #passwd yourusername #reboot If you can&#8217;t recall your user name, you can [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve you&#8217;ve forgotten your Mac&#8217;s admin account password, don&#8217;t worry. Assuming you haven&#8217;t locked out OpenFirmware, it&#8217;s a pretty simple task to change your password back to something you know.<br />
Here&#8217;s how:</p>
<ul style="list-style-type: disc">
<li>Hold Apple+S when booting to enter single user mode</li>
<li>#sh /etc/rc</li>
<li>#passwd yourusername</li>
<li>#reboot</li>
</ul>
<p>If you can&#8217;t recall your user name, you can either look in the /Users folder (the directories are named by user), or run &#8220;niutil -list . /users&#8221;.<br />
Also, on older systems the /etc/rc script isn&#8217;t available, apparently. If that second step fails, try mounting and starting the base services manually:</p>
<ul style="list-style-type: disc">
<li>#/sbin/fsck -y</li>
<li>#/sbin/mount -uw /</li>
<li>#/sbin/SystemStarter</li>
</ul>
<p>I&#8217;ve had to do this a couple of times for friends when they&#8217;ve bought a second hand machine, and once when I had a momentary brain lapse and forgot my own password. Works like a charm, though you&#8217;ll loose any passwords stored in your keychain.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theneelyfamily.net/grady/blog/2009/05/05/howto-reset-a-lost-os-x-password/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install Debian Etch on a Sun Ultra 2/10/60</title>
		<link>http://www.theneelyfamily.net/grady/blog/2009/01/29/how-to-install-debian-etch-on-a-sun-ultra-21060/</link>
		<comments>http://www.theneelyfamily.net/grady/blog/2009/01/29/how-to-install-debian-etch-on-a-sun-ultra-21060/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 23:43:48 +0000</pubDate>
		<dc:creator>grady</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://www.theneelyfamily.net/grady/blog/?p=62</guid>
		<description><![CDATA[Well I got an Ultra 10 and an Ultra 60 and wanted to &#8220;rehab&#8221; them with a little linux love. So after a little digging I discovered that Debian has the best support for UltraSPARC III processors. So I quickly burned a Debian 4.0 (Etch) CD for SPARCs and put in in the drive to [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">Well I got an Ultra 10 and an Ultra 60 and wanted to &#8220;rehab&#8221; them with a little linux love. So after a little digging I discovered that Debian has the best support for UltraSPARC III processors.</p>
<p style="clear: both">So I quickly burned a Debian 4.0 (Etch) CD for SPARCs and put in in the drive to do the install. But I would get an illegal instruction error everytime. Turns out, you need to make sure the OpenBoot ROM version is 3.31. Mine was 3.23 on the Ultras. So here is how to update the ROM in a nutshell (you need a working Solaris install):</p>
<ul style="clear: both">
<li>Download the 106455-11 patch from sunsolve. The patch readme is <a href="http://sunsolve.sun.com/search/document.do?assetkey=1-21-106455-11-1" title="Patch Readme" target="_blank">here</a>.</li>
<li>Run the following command from the shell:<br />#<em>/usr/sbin/prtconf -V</em></li>
<li>If your version is less than 3.31, continue.</li>
<li>As root, copy the latest &#8220;flash-update&#8221; files from the directory containing the patch to the root directory as follows: <br /><em># cp flash*latest / <br /># chmod 755 /flash-update*</em></li>
<li>As root, exit the OS such that the system returns to the PROM&#8217;s &#8220;ok&#8221; prompt: <br /><em># halt ok</em></li>
<li>Power off the system.</li>
<li>Here&#8217;s where it gets fun, now unplug your Ultra from the AC. </li>
<li>Open the case. The case is normally secured with one screw and a small block that prevents the cover from sliding off.</li>
<li>Locate jumper J2703, for my Ultra 60, it was under the power supply so I had to slide the power supply out to access it. Ouch!</li>
<li>Move the jumper from pins 1-2 to pins 2-3. This write-enables the PROM.</li>
<li>Power on the system.</li>
<li>Wait for the PROM&#8217;s banner to appear, and then:<br /> Use the Stop-A keys (or Break key, if running from a serial line) to abort the auto-boot sequence.</li>
<li>The system should now display the PROM monitor&#8217;s &#8220;ok&#8221; prompt. Now boot the Flash update utility as given below: <br /><strong>CAUTION:</strong> Do not boot/run revisions lower than the latest unless you are absolutely sure that that is what you want to do! <strong><br /></strong><em>ok boot disk /flash-update-Ultra60-latest</em></li>
<li>Answer the questions as prompted by the utility. <br />+++++++++++++++++++++ example Flash update follows ++++++++++++++++++++++++<br /> ++++++++ Note that this is an example only. Much of the information ++++++ ++++++++ which is displayed by your system will be different from ++++++ ++++++++ what is shown below. ++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<p>Standalone Flash PROM Update Utility, Rev. 2.5 <br /> Ultra(tm) 1 <br /> Ultra(tm) 2 <br /> Ultra(tm) 5/10 <br /> Ultra(tm) 30 <br /> Ultra(tm) 60 / E220R <br /> Ultra(tm) 80 / E420R <br /> Ultra(tm) Enterprise(tm) 250 <br /> Ultra(tm) Enterprise(tm) 450 </p>
<p>This utility allows you to interactively update the firmware revisions in specific system Flash PROM components.</p>
<p> Type h for help, q to quit, Return or Enter to continue: </p>
<p>Every precaution should be taken to prevent the loss of system power during the Flash PROM programming process! </p>
<p>Type h for help, q to quit, Return or Enter to continue: </p>
<p>Firmware Release(s) Firmware Release(s) <br />Currently Existing in the System Available for Installation / Install? <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- OBP 3.1.2 1996/03/28 17:08 OBP 3.1.5 1996/08/27 16:13 no <br />POST 3.1.4 1996/04/09 03:23 POST 3.1.5 1996/06/28 11:54 no </p>
<p>Type sa if you wish to select all available firmware releases for installation. Type h for help, quit to exit, or cont to continue: sa </p>
<p>Firmware Release(s) Firmware Release(s) <br />Currently Existing in the System Available for Installation / Install? <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- OBP 3.1.2 1996/03/28 17:08 OBP 3.1.5 1996/08/27 16:13 YES <br />POST 3.1.4 1996/04/09 03:23 POST 3.1.5 1996/06/28 11:54 YES</p>
<p> Type sa if you wish to select all available firmware releases for installation. Type h for help, quit to exit, or cont to continue: cont </p>
<p>The Flash programming process is about to begin. Type h for help, q to quit, Return or Enter to continue: </p>
<p>Erasing the top half of the Flash PROM. <br />Programming OBP into the top half of the Flash PROM. <br />Verifying OBP in the top half of the Flash PROM. <br />Erasing the bottom half of the Flash PROM. <br />Programming OBP into the bottom half of Flash PROM. <br />Verifying OBP in the bottom half of the Flash PROM. <br />Erasing the top half of the Flash PROM. <br />Programming POST into the top half of Flash PROM. <br />Verifying POST in the top half of the Flash PROM. <br />Programming was successful. Resetting &#8230; <br />Restoring previous NVRAM environment settings&#8230;<br /> #power-cycles = 10 auto-boot? = false security-#badlogins = 0 <br />OK Resetting &#8230; </li>
</ul>
<p>Once your PROM is up-to-date, you can install Debian by following the direction on the SPARC Debian CD. 
<div>Boot the CD from the OK prompt by issuing a <em>boot cdrom</em> command. You can get back to the OK prompt by issuing a Stop-A keyboard command. That should be all there is to it!</div>
<div>
</div>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.theneelyfamily.net/grady/blog/2009/01/29/how-to-install-debian-etch-on-a-sun-ultra-21060/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiling netatalk on OpenSolaris</title>
		<link>http://www.theneelyfamily.net/grady/blog/2008/09/17/compiling-netatalk-on-opensolaris/</link>
		<comments>http://www.theneelyfamily.net/grady/blog/2008/09/17/compiling-netatalk-on-opensolaris/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 02:01:53 +0000</pubDate>
		<dc:creator>grady</dc:creator>
				<category><![CDATA[netatalk]]></category>
		<category><![CDATA[opensolaris]]></category>

		<guid isPermaLink="false">http://www.theneelyfamily.net/grady/blog/?p=62</guid>
		<description><![CDATA[If you want to serve AFP (Apple Filing Protocol) shares from an OpenSolaris box you need to install netatalk. However, it doesn&#8217;t seem to get maintained any more (I&#8217;m writing this in June 2008) and the code doesn&#8217;t compile cleanly on OpenSolaris. These instructions talk about getting netatalk 2.0.3 to compile on OpenSolaris 2008.5. We [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to serve AFP (Apple Filing Protocol) shares from an OpenSolaris box you need to install netatalk. However, it doesn&#8217;t seem to get maintained any more (I&#8217;m writing this in June 2008) and the code doesn&#8217;t compile cleanly on OpenSolaris. These instructions talk about getting netatalk 2.0.3 to compile on OpenSolaris 2008.5.</p>
<p>We need to do install two packages: the Berkeley DB and netatalk. I decided to use BDB 4.2.x because netatalk talks about supporting only 4.1.x and 4.2.x and because I wanted to reuse existing data from my former Linux server.<br />
Preparations</p>
<p>These instructions assume you are a user that can call pfexec to get root access. I use a directory $HOME/src in which I will compile everything. So, let&#8217;s first create that directory:</p>
<p>mkdir -p $HOME/src</p>
<p>We will install our stuff into the /usr/local tree because that&#8217;s exactly what this directory tree is for: stuff compiled and installed by the admin. If not already done you need to add /usr/local/lib to the dynamic linker search path:</p>
<p>pfexec crle -u -l /usr/local/lib<br />
Install the Berkeley DB</p>
<p>Of course you need to download the BDB first. Grab version 4.2.52 with AES support.</p>
<p>These are the steps to compile and install the BDB:</p>
<p>* cd $HOME/src<br />
* Unpack the BDB:<br />
gzcat /path/to/db-4.2.52.tar.gz | tar xf -<br />
* The BDB doesn&#8217;t want to get compiled in its source directory, we need a separate directory:<br />
mkdir -p $HOME/src/db-build<br />
cd $HOME/src/db-build<br />
* Now let&#8217;s run configure. Normally configure already defaults to /usr/local, but not the one from BDB so we need to explicit about it:<br />
../db-4.2.52/dist/configure &#8211;prefix=/usr/local<br />
* Compile it:<br />
make<br />
* Install it:<br />
pfexec make install</p>
<p>While compiling, it can happen that you see the following error message:</p>
<p>cc -o .libs/db_archive .libs/db_archive.o .libs/util_sig.o ./.libs/libdb-4.2.so@ -R/usr/local/lib<br />
ld: fatal: file ./.libs/libdb-4.2.so@: open failed: No such file or directory<br />
ld: fatal: File processing errors. No output written to .libs/db_archive</p>
<p>If so, you need to fix libtool: edit the file libtool and search for the comment &#8220;test EBCDIC or ASCII&#8221;. Replace the line &#8220;A) # EBCDIC based system&#8221; with &#8220;foo)&#8221; and save. Then run &#8220;make&#8221; again.<br />
Install netatalk</p>
<p>Now it&#8217;s time for netatalk. Download it from SourceForge.</p>
<p>* Go to the source directory:<br />
cd $HOME/src<br />
* Unpack netatalk:<br />
bzcat /path/to/netatalk-2.0.3.tar.bz2 | tar xf -<br />
* Next, we need to edit some files to make it to compile correctly.<br />
o In etc/atalkd/main.c line 14, etc/papd/main.c line 17 and etc/papd/lp.c line 57 replace &#8220;#if defined( sun ) &amp;&amp; defined( __svr4__ )&#8221; with &#8220;#if 0&#8243; so that the correct include line is active (#include ).<br />
o The DDP kernel module won&#8217;t load correctly (and isn&#8217;t necessary anyway). It also doesn&#8217;t compile correctly without some patching, so we make sure it doesn&#8217;t get compiled in the first place. Edit sys/Makefile.in and remove the &#8220;solaris&#8221; from line 214 which reads &#8220;SUBDIRS = netatalk generic solaris netbsd sunos ultrix&#8221;.<br />
* Run configure. We need to disable the DDP (Datagram Delivery Protocol, an AppleTalk network protocol) since the necessary kernel module won&#8217;t load and it&#8217;s not used by modern Macs anyway:<br />
./configure &#8211;disable-ddp<br />
* We&#8217;re ready to compile:<br />
make<br />
* If everything worked alright (which it should) then install (you need root privileges, so we use pfexec):<br />
pfexec make install</p>
<p>That&#8217;s it ! Note that while everything got installed into /usr/local and the configuration files are thus in /usr/local/etc/netatalk the boot (rc) script got installed correctly in /etc/init.d. So to start the daemon you need to call &#8220;/etc/init.d/atalk start&#8221; and to stop it &#8220;/etc/init.d/atalk stop&#8221;. For instruction on how to configure netatalk, see netatalk&#8217;s online documentation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theneelyfamily.net/grady/blog/2008/09/17/compiling-netatalk-on-opensolaris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compare two directories using diff</title>
		<link>http://www.theneelyfamily.net/grady/blog/2008/04/23/compare-two-directories-using-diff/</link>
		<comments>http://www.theneelyfamily.net/grady/blog/2008/04/23/compare-two-directories-using-diff/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 03:31:03 +0000</pubDate>
		<dc:creator>grady</dc:creator>
				<category><![CDATA[diff]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://www.theneelyfamily.net/grady/blog/?p=60</guid>
		<description><![CDATA[As mentioned in other hints, diff can not only compare two files, it can, by using the -r option, walk entire directory trees, recursively checking differences between subdirectories and files that occur at comparable points in each tree. The trick is to use the -q option to suppress line-by-line comparisons in files that differ: diff [...]]]></description>
			<content:encoded><![CDATA[<p>As mentioned in other hints, diff can not only compare two files, it can, by using the -r option, walk entire directory trees, recursively checking differences between subdirectories and files that occur at comparable points in each tree. The trick is to use the -q option to suppress line-by-line comparisons in files that differ:</p>
<p>diff -rq dirA dirB</p>
<p>This command will provide a nice list of files that occur in dirA but not in dirB, files that occur in dirB, but not in dirA, and files that differ between dirA and dirB. Pipe the output through grep to remove mention of uninteresting files, and sort to tidy it up, e.g.:</p>
<p>diff -qr dirA dirB | grep -v -e &#8216;DS_Store&#8217; -e &#8216;Thumbs&#8217; | sort > diffs.txt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theneelyfamily.net/grady/blog/2008/04/23/compare-two-directories-using-diff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tar and gzip when you do not have the -z tar switch</title>
		<link>http://www.theneelyfamily.net/grady/blog/2008/04/23/tar-and-gzip-when-you-do-not-have-the-z-tar-switch-2/</link>
		<comments>http://www.theneelyfamily.net/grady/blog/2008/04/23/tar-and-gzip-when-you-do-not-have-the-z-tar-switch-2/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 02:21:38 +0000</pubDate>
		<dc:creator>grady</dc:creator>
				<category><![CDATA[gzip]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[tar]]></category>

		<guid isPermaLink="false">http://www.theneelyfamily.net/grady/blog/?p=58</guid>
		<description><![CDATA[Sometimes tar does not have the -z switch depending on the system os you are on. In those cases, you can still do the tar.gz all in one command by using the format: tar cvf &#8211; the_path_or_filelist &#124; gzip > your.tar.gz]]></description>
			<content:encoded><![CDATA[<p>Sometimes tar does not have the -z switch depending on the system os you are on.  In those cases, you can still do the tar.gz all in one command by using the format:</p>
<p>tar cvf &#8211; the_path_or_filelist | gzip > your.tar.gz</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theneelyfamily.net/grady/blog/2008/04/23/tar-and-gzip-when-you-do-not-have-the-z-tar-switch-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Probing DNS for Active Directory Services</title>
		<link>http://www.theneelyfamily.net/grady/blog/2008/04/23/probing-dns-for-active-directory-services-2/</link>
		<comments>http://www.theneelyfamily.net/grady/blog/2008/04/23/probing-dns-for-active-directory-services-2/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 02:20:50 +0000</pubDate>
		<dc:creator>grady</dc:creator>
				<category><![CDATA[active directory]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://www.theneelyfamily.net/grady/blog/?p=57</guid>
		<description><![CDATA[_ldap._tcp.pdc._msdcs. Domain This provides the address of the Windows NT PDC for the domain. _ldap._tcp.pdc._msdcs. DomainTree Resolves the addresses of global catalog servers in the domain. _ldap._tcp. site .sites.writable._msdcs. Domain Provides list of domain controllers based on sites. _ldap._tcp.writable._msdcs. Domain Enumerates list of domain controllers that have the writable copies of the Active Directory data [...]]]></description>
			<content:encoded><![CDATA[<p>_ldap._tcp.pdc._msdcs. Domain<br />
This provides the address of the Windows NT PDC for the domain.</p>
<p>_ldap._tcp.pdc._msdcs. DomainTree<br />
Resolves the addresses of global catalog servers in the domain.</p>
<p>_ldap._tcp. site .sites.writable._msdcs. Domain<br />
Provides list of domain controllers based on sites.</p>
<p>_ldap._tcp.writable._msdcs. Domain<br />
Enumerates list of domain controllers that have the writable copies of the Active Directory data store.</p>
<p>_ldap._tcp. GUID .domains._msdcs. DomainTree<br />
Entry used by MS Windows clients to locate machines using the global unique identifier.</p>
<p>_ldap._tcp. Site .gc._msdcs. DomainTree<br />
Used by Microsoft Windows clients to locate the site configuration-dependent global catalog server.</p>
<p>Specific entries used by Microsoft clients to locate essential services for an example domain called quenya.org include:</p>
<p>_kerberos._udp.quenya.org Used to contact the KDC server via UDP. This entry must list port 88 for each KDC.</p>
<p>_kpasswd._udp.quenya.org Used to locate the kpasswd server when a user password change must be processed. This record must list port 464 on the master KDC.</p>
<p>_kerberos._tcp.quenya.org Used to locate the KDC server via TCP. This entry must list port 88 for each KDC.</p>
<p>_ldap._tcp.quenya.org Used to locate the LDAP service on the PDC. This record must list port 389 for the PDC.</p>
<p>_kpasswd._tcp.quenya.org Used to locate the kpasswd server to permit user password changes to be processed. This must list port 464.</p>
<p>_gc._tcp.quenya.org Used to locate the global catalog server for the top of the domain. This must list port 3268.</p>
<p>The following records are also used by the Windows domain member client to locate vital services on the Windows ADS domain controllers.</p>
<p>_ldap._tcp.pdc._msdcs.quenya.org</p>
<p>_ldap.gc._msdcs.quenya.org</p>
<p>_ldap.default-first-site-name._sites.gc._msdcs.quenya.org</p>
<p>_ldap.{SecID}.domains._msdcs.quenya.org</p>
<p>_ldap._tcp.dc._msdcs.quenya.org</p>
<p>_kerberos._tcp.dc._msdcs.quenya.org</p>
<p>_ldap.default-first-site-name._sites.dc._msdcs.quenya.org</p>
<p>_kerberos.default-first-site-name._sites.dc._msdcs.queyna.org</p>
<p>SecID._msdcs.quenya.org</p>
<p>Presence of the correct DNS entries can be validated by executing:</p>
<p>root#  dig @frodo -t any _ldap._tcp.dc._msdcs.quenya.org</p>
<p>; <lt;>> DiG 9.2.2 <lt;>> @frodo -t any _ldap._tcp.dc._msdcs.quenya.org<br />
;; global options:  printcmd<br />
;; Got answer:<br />
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3072<br />
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2</p>
<p>;; QUESTION SECTION:<br />
;_ldap._tcp.dc._msdcs.quenya.org. IN        ANY</p>
<p>;; ANSWER SECTION:<br />
_ldap._tcp.dc._msdcs.quenya.org. 600 IN SRV 0 100 389 frodo.quenya.org.<br />
_ldap._tcp.dc._msdcs.quenya.org. 600 IN SRV 0 100 389 noldor.quenya.org.</p>
<p>;; ADDITIONAL SECTION:<br />
frodo.quenya.org.  3600  IN      A       10.1.1.16<br />
noldor.quenya.org. 1200  IN      A       10.1.1.17</p>
<p>;; Query time: 0 msec<br />
;; SERVER: frodo#53(10.1.1.16)<br />
;; WHEN: Wed Oct  7 14:39:31 2004<br />
;; MSG SIZE  rcvd: 171</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theneelyfamily.net/grady/blog/2008/04/23/probing-dns-for-active-directory-services-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
