Category Archives: Computer - Page 2

OTA DVR Equipment Build

I’ve decided to drop cable / satellite, and create a DVR that will record programming from over the air. This first entry is just going to outline the what I wanted out of the DVR and what equipment I purchased and why. The main intention is for a DVR, and not a gaming system. In the chance that I did decide I want to go that route, I tried to purchase equipment so that I would only need to purchase a video card to allow it to play games.

Requirements

  • Quiet. Should not be audible when watching tv
  • Stream online content
  • DVR over the air content
  • Stream shows and movies from home file server (NFS or Samba)
  • Should be able to play multiple containers and formats (xvid, divx, mkv, H.264)
  • No keyboard and mouse should be required for use

Hardware Purchase

  • Case: nMEDIAPC HTPC 1000B
  • Power Supply: SeaSonic S12II 430B 430W
  • Motherboard: ASUS M4A785TD-M EVO
  • Processor: AMD Athlon II X2 250 Regor 3.0GHz
  • Memory: CORSAIR XMS3 4GB (2 x 2GB) DDR3 (PC3 10666)
  • Hard Drive: Seagate SV35.5 ST31000525SV 1TB
  • Tuner: Hauppauge WinTV-HVR-2250 Media Center Kit

Note: I also purchased the LCD that goes along with the case, but after having used it, I would not have purchased it. It is too difficult to read at a distance and it is poorly made. I thought it would be cool to have showing time and what was playing and recording, but I have to get up close to the tv to see it.

nMEDIAPC HTPC 1000B
I was looking for a good case that would fit my media center stand. This case had the identical shape of my current audio receiver and even matched it’s dimensions perfectly. There is a front panel on the front that hides one IEEE 1394 port, one e-SATA port, two HD Audio ports, one SDHC 2.0 Card Reader and three USB 2.0 ports. It does not come with a power supply. You can buy an optional lcd for the front, but as I mentioned before, I would skip on purchasing it. A Micro ATX will fit in it. It has 1 5.25″ Drive Bays and 4 3.5″ Drive Bays, but you will only probably be able to use 2 out of the 4 3.5″ Drive Bays due to things getting to tight and reducing air flow. It has 2 60mm Fans in the back and 1 90mm Fan on the side which are very quiet. I’m very pleased with this case and would highly recommend to others.

SeaSonic S12II 430B 430W
This power supply is enough power for what I need. It’s also very quiet and has excellent reviews. Unfortunately, it is not modular, but I had no problem bundling up the extra cables and putting them in one of the empty 3.5″ drive bays.

ASUS M4A785TD-M EVO
This seems to be a good motherboard. The reasons that I purchased this one in particular is that it is a Micro ATX form, allows for DDR3 memory, has both a PCI Express 2.0 x16 and PCI Express x1 slots, has a integrated ATI Radeon HD 4200 GPU with 128MB DDR3 1333 memory, has a HDMI output, and a S/PDIF Out optical out.

The reason that I wanted both a PCI Express 2.0 x16 and a PCI Express x1 slot is for the tuner card and a future video card upgrade if I choose to upgrade it to a gaming system. The HDMI out is self explanatory and I really wanted a S/PDIF optical out so that I could hook it up to my receiver.

I wanted a motherboard with the integrated ATI Radeon HD 4200 so that I could offload the video decoding of the H.264 to the video card from the CPU. With this video card, I can watch every mkv that I have with no stuttering and very little cpu usage. I also don’t have to worry about the additional heat and fan sound from having a video card in the machine, and also the price of having to buy a video card.

The only downside to this motherboard is the bios settings. It’s hard to get it just right to get in there and the bios menu leaves a lot of wanting. It does horrible for setting boot sequence since if you want to boot from usb, a bootable usb needs to be in there to set it to boot from it in the order and it only works for that particular device. Luckily, you only need to mess around with the menu once.

AMD Athlon II X2 250 Regor 3.0GHz
I bought this cpu for two reason: 1) 65 watt tdp and 2) price per performance.

I could have bought a much nicer processor that runs cooler and faster, but then it would have increased the cost of the dvr quiet a lot. This is a dual core processor, for when I’m running multiple things at once, which every computer is doing anymore. It handles everything wonderfully and without stutter. It’s also powerful enough for doing the tv re-encoding and if I want to use it for playing video games in the future. The 65 watt tdp means that it uses less power and runs cooler. The fan that comes with it is very quiet also.

CORSAIR XMS3 4GB (2 x 2GB) DDR3 (PC3 10666)
Since DDR3 is dropping in price and is getting close to the cost of DDR2, I decided to go the faster route and get DDR3. There is no special reason I bought the CORSAIR, it was just on a very good sale when I found it. I decided to go with 4 gigs, because I planned on having multiple programs running at the same time and heard that if I wanted to run Boxee, that it was a memory hog.

Seagate SV35.5 ST31000525SV 1TB
I figured a one tb drive would be more than enough to use as a dvr, since I wouldn’t be storing anymore besides recorded tv shows on it. I made sure to stick with a drive that is 7200 RPM, even though the green drives (5400 RPM) run cooler and with less power consumption. In my mind, recording two shows at once while watching another show would probably tax a 5400 drive a little too much and have some stuttering. This drive had good reviews and was designed to be used for security cameras, which matches very closely to what I’m going to be using it for. In use, this drive is super quiet and I have no complaints with it at all. Beyond that, the reason I picked this one out of the other recommended DVR drives is that it was on sale.

Hauppauge WinTV-HVR-2250 Media Center Kit
I chose this card after viewing my friends DVR that had it in there. It just has wonderful picture. That card fits a PCI-Express x1 slot. The card is a dual tuner, which means you can either watch 1 show and record another or record two shows at once. The “Media Center Kit” edition comes with a remote and ir receiver.

Triple Booting Windows 7, OS X (Chameleon), and Ubuntu 9.10 (Grub2)

So wouldn’t you know it, my video card died and I decided to get around to installing Windows 7 and Ubuntu 9.10 at the same time.  Of course, installing Windows 7 took over the booter, then installing Ubuntu 9.10 took over the booter and did a great job at identifying Windows 7 and OS X.  In fact, it did too good identifying OS X.

The new version of grub2 is able to work directly with OS X to start it up natively.  Unfortunately,  I like to try to not patch OS X as much as possibly, so I use Chameleon, which grub2 was bypassing.  I don’t know what a beautiful solution is, but I do know what a working solution is.

OS with Loaders:

  • Windows 7 (Default Boot Loader)
  • Ubuntu 9.10 (Grub2)
  • OS X 10.5.6 (Chameleon 2.0-RC4)

The first step is to install OS X however you usually do it.  Once it is installed, I chose to upgrade to the latest version of Chameleon for some of the additional video card identification that it was able to provide.  All that requires is downloading from the link above and following the directions.  Before you reboot, copy the boot0 file to removable media.

The next step is to install Windows 7.  Once this is done, Windows has now taken over the boot system and you can no longer start OS X.

Finally, it is time to install Ubuntu 9.10.   Once the install has finished, it has taken over the boot screen and you will see entries for Ubuntu, Windows, and OS X.  The only issue is, if you try to start OS X, it will bypass Chameleon and start the kernel directly.

To fix this issue, make the directory /boot/chameleon and then copy the boot0 from the removable media into that directory.  Then add or update the OS X section to the following:

menuentry "Mac OS X Chameleon (on /dev/sda2)" {
        insmod hfsplus
        set root=(hd0,2)
        parttool (hd0,2) boot+
        search –no-floppy –fs-uuid –set 88e76bb6d81f12fb
        chainloader (hd0,4)/boot/chameleon/boot0
}

The “88e76bb6d81f12fb” is the uuid of the partition. You can find the uuid by:

# user@teh-lunix:~$ ls -l /dev/disk/by-uuid/

OS X and Truemobile 1940 Issues Fixed

I currently picked up a $21 Dell Truemobile 1490 wireless card to put in my MSI Wind instead of the Realtek that’s in it. It install just fine, I got it working in Windows and Linux with no issues, but OS X was another story.

It wouldn’t connect to a wireless network at all by itself. On the menu bar it wouldn’t show any wireless networks. It did show “AirPort: Not configured”. If I opened the network preferences, it would show up as Ethernet 2 off. I would have to turn it back on each time I rebooted. I would then have to select the drop down box to pick a network because it still wouldn’t show any networks in the menu bar (and the menu bar would still say not configured). I could join my network and get an IP address, but the menu bar icon would not show any bars at all. It would be right next to the access point and I could surf the net just fine though.

Thanks to a post at InsanelyMac, I was able to finally fix this issue.

  1. Open Network Preferences
  2. Remove all devices except Firewire by highlighting the device and then clicking on the minus sign below the device list
  3. Reboot the machine
  4. Open Network Preferences
  5. Click the plus sign under the device list and select AirPort
  6. Click Apply

Since doing that, my menu bar works, networks are connected to automatically, even after reboots.

MSI Wind and Triple Booting

So I just purchased an MSI Wind from Microcenter and have already removed all the OS’ from it. I’m planning on installing Windows XP, Mac OS X, and Ubuntu Linux. Like most of my laptops, things are just plug and play to get it working, so I have a page to help me remember how I did it at: http://james.jamesandkristin.net/setting-up-msi-wind-to-triple-boot-windows-mac-os-x-linux

So far it looks like it’s perfect for what we need. A nice little laptop that will fit in Kristin’s purse and that will fit in little safes on vacation. Luckily my friend had a usb to ide adapter, so I didn’t have to purchase an external hard drive. I had looked into making a usb boot disks for all three os’s and even looked at using netboot to install. Netboot would have been cool, but I don’t have that much time to get it setup for all three OS’s.

One important note, you need to install Windows XP before anything else.

Using regex on Syslog-ng to save to specific file locations

I had the problem of taking an external syslog feed (through UDP or TCP) that came from multiple devices and then separating them into folders that identified the feeds by customers / device type / host. The one thing I had on my side was that the hostname of the devices were broken up into three parts to help me get this information.

In the old Syslog-ng (1.6.x), there was not a way to regex out this information and then use it in the destination section. Each time we had a new combination, it required writing additional lines with additional regexs. Started to really feel it on performance. With the new branch of syslog-ng (2.0.x), this feature is now available.

You can use up to 256 different $NNN ($1 … $256) macros, but you can only use one regexp expression. This will be done using a filter.

Here’s a full example of what I had done then. What I wanted to do is put the line in a specific file based on part of the hostname. For example:

Hostname: subdomain.domain.tld
Save the log files for that device at:
/logs/$TLD/$DOMAIN/$SUBDOMAIN/$R_YEAR-$R_MONTH-$R_DAY.log

WHERE $TLD is the tld of the hostname, $DOMAIN is the domain from the hostname, and $SUBDOMAIN is the subdomain from the hostname.

I would like to be able to regex this information out of the hostname to use in the destination.

To accomplish this, I was able to use this configuration:

filter f_filter { host(“^([0-9a-zA-Z\-]+)\.([0-9a-zA-Z\-]+)\.([0-9a-zA-Z\-]+)$”); };
destination f_logs { file(“/logs/$3/$2/$1/$YEAR-$MONTH-$DAY.log”); };
log {
     source(external);
     filter(f_filter);
     destination(f_logs);
     flags(final);
};

Solaris 8 Disk Fail During Reboot

I had a disk fail while rebooting a solaris 8 machine. I had a RAID 1 setup with two disks using Disk Suite. The first drive in the boot order was the drive that failed. Since it failed during the reboot, when Solaris started back up, it started in single user mode. It gave the error:
Insufficient metadvice database replicas located

Here is some of the information that I found out:

root@server / # metastat
d0: Mirror
Submirror 0: d10
State: Needs maintenance
Submirror 1: d20
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 33002848 blocks

d10: Submirror of d0
State: Needs maintenance
Invoke: metareplace d0 c0t0d0s0
Size: 33002848 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c0t0d0s0 0 No Maintenance

d20: Submirror of d0
State: Okay
Size: 33002848 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c0t1d0s0 0 No Okay

d1: Mirror
Submirror 0: d11
State: Needs maintenance
Submirror 1: d21
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 2101552 blocks

d11: Submirror of d1
State: Needs maintenance
Invoke: metareplace d1 c0t0d0s1
Size: 2101552 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c0t0d0s1 0 No Maintenance

d21: Submirror of d1
State: Okay
Size: 2101552 blocks
Stripe 0:
Device Start Block Dbase State Hot Spare
c0t1d0s1 0 No Okay

root@server / # metastat -p
d0 -m d10 d20 1
d10 1 1 c0t0d0s0
d20 1 1 c0t1d0s0
d1 -m d11 d21 1
d11 1 1 c0t0d0s1
d21 1 1 c0t1d0s1
root@server / # metadb -i
flags first blk block count
M p unknown unknown /dev/dsk/c0t0d0s3
M p unknown unknown /dev/dsk/c0t0d0s3
M p unknown unknown /dev/dsk/c0t0d0s4
M p unknown unknown /dev/dsk/c0t0d0s4
a m p lu 16 1034 /dev/dsk/c0t1d0s3
a p l 1050 1034 /dev/dsk/c0t1d0s3
a p l 16 1034 /dev/dsk/c0t1d0s4
a p l 1050 1034 /dev/dsk/c0t1d0s4

To fix this, do the following:

1. When you are booted into single user mode, delete any metadevice state database replicas that were on the ‘bad’ disk. This disk does not even have to been in to do this, but it needs to be done. So I had to do the following for my system:
# metadb -d /dev/dsk/c0t0d0s3
# metadb -d /dev/dsk/c0t0d0s4

2. Make sure that the metadevices have been deleted.
# metadb -i

3. Pull the ‘bad’ disk out and leave the bay empty. Reboot the machine.

4. At this point, you should be in normal boot sequence and get you into a running system, with only one disk in the RAID.

5. Put the replacement disk in the bay.

6. Partition the new disk. Easiest way to do this is to copy the partition table from the working disk.
# dd if=/dev/rdsk/c0t1d0s2 of=/dev/rdsk/c0t0d0s2 count=16

7. Recreate the metadevice state database replicas on the new disk. I had to do the following:
# metadb -a -f -c /dev/dsk/c0t0d0s3
# metadb -a -f -c /dev/dsk/c0t0d0s4

8. Setup the disks so that they are back in the submirrors:
# metareplace –e d0 c0t0d0s0
# metareplace –e d1 c0t0d0s1

At that point, you should have everything up and running. You can use ‘metastat’ to watch the disks sync up.

SNMP on Solaris 10

I’ve been doing installs of Solaris 10 and then needing to set them up with SNMP. The first thing I noticed is that the system is running snmpd and not snmpdx. There is still an init.d file for snmpdx, init.snmpdx, and configuration files, so at first this confused me. After looking around the web, I found that Solaris 10 is moving to using snmpd (Net-SNMP) instead of the solstice version.

Finding that information out, I was able to determine that the configuration files for snmpd are located in /etc/sma/snmp/. To setup snmpd information, just modify the snmpd.conf and everything will work.

You can start and stop it form /etc/init.d/init.sma and it is started from /etc/rc3.d/S82initsma.

Upgrading Service Desk on Solaris

There was a Service Desk upgrade that I was involved in this weekend.  My job was to upgrade the Service Desk software on our Solaris servers.  The upgrade was simple enough, but when I went to upgrade the database I ran into issues.  To upgrade the database, you need to run a graphical GUI which requires the ability to forward X11 to the local machine through ssh.  I had checked and made sure my ssh client had that enabled and that Ming was running correctly.  I had to use Ming through windows because when I’m in linux the window doesn’t show up correctly.

When I went to upgrade the database, the program errored with the following message:

 Service Desk Message: Error: Cannot read the dictionary, can not find labels.rep and messages.rep, put this in \repo\locales\1033

I wasn’t able to find anything in google that could explain the issue, so I had to figure out what the cryptic message meant.  I had checked to see if the files were actually there or not and they were.  In the end, I determined that I forgot to make sure that sshd had X11 forwarding enabled.  Turned on X11 forwarding through sshd and the program ran correctly.  So in the end, that message basically meant that it couldn’t forward the X11 traffic to my laptop.

Crypt::SSLeay on Solaris 10

I had to do some development in perl that requied scrubbing a HTTPS page.  I ran into an issue when I moved the script from the laptop to the production solaris server that it was not able to process the HTTPS page.  Digging down a little deeper, I realized I never installed one of the required SSL modules for perl to allow libwww modules to connect to https pages.

You could actually use either Crypt::SSLeay or IO::Socket::SSL (which also required Net::SSLeay).  I decided to install them all to be on the safe side.  Net::SSLeay and IO::Socket::SSL had no problems, but when I tried to make Crypt::SSLeay, I ran into an issue.

When I tried to make the Makefile, I did the following:

root@appsrv /opt/downloads/cpan/Crypt-SSLeay-0.55 # perl Makefile.PL
Skipping testcover target, ExtUtils::MakeMaker::Coverage not found
=======================================================
Only one OpenSSL installation found at /usr/local/ssl
Consider running ‘perl Makefile.PL –default’ the next
time Crypt::SSLeay is upgraded to select this directory
automatically thereby avoiding the following prompt.
=======================================================
Which SSL install path do you want to use? [/usr/local/ssl]

BUILD INFORMATION
================================================
ssl library: OpenSSL 0.9.8 in /usr/local/ssl
ssl header:  openssl/ssl.h
libraries:   -L/usr/local/ssl/lib -lssl -lcrypto -lgcc
include dir: -I/usr/local/ssl/include/openssl
================================================
WARNING: LICENSE is not a known parameter.
‘LICENSE’ is not a known MakeMaker parameter name.
Writing Makefile for Crypt::SSLeay
The test suite can attempt to connect to public servers
to ensure that the code is working properly. If you are
behind a strict firewall or have no network connectivity,
these tests may fail (through no fault of the code).

Do you want to run the live tests (y/N) ? [N]
root@appsrv /opt/downloads/cpan/Crypt-SSLeay-0.55 # make
gcc -B/usr/ccs/bin/ -c  -I/usr/local/ssl/include/openssl -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O   -DVERSION=\"0.55\" -DXS_VERSION=\"0.55\" -fPIC "-I/usr/local/lib/perl5/5.8.7/sun4-solaris/CORE"   SSLeay.c
In file included from SSLeay.xs:25:
crypt_ssleay_version.h:1:25: openssl/ssl.h: No such file or directory
crypt_ssleay_version.h:2:28: openssl/crypto.h: No such file or directory
crypt_ssleay_version.h:3:25: openssl/err.h: No such file or directory
crypt_ssleay_version.h:4:26: openssl/rand.h: No such file or directory
crypt_ssleay_version.h:5:28: openssl/pkcs12.h: No such file or directory
SSLeay.xs:43: error: syntax error before ‘*’ token
SSLeay.xs: In function `InfoCallback’:
SSLeay.xs:48: error: `where’ undeclared (first use in this function)
SSLeay.xs:48: error: (Each undeclared identifier is reported only once
SSLeay.xs:48: error: for each function it appears in.)
SSLeay.xs:48: error: `SSL_ST_MASK’ undeclared (first use in this function)
SSLeay.xs:50: error: `SSL_ST_CONNECT’ undeclared (first use in this function)
SSLeay.xs:52: error: `SSL_ST_ACCEPT’ undeclared (first use in this function)
SSLeay.xs:57: error: `SSL_CB_LOOP’ undeclared (first use in this function)
SSLeay.xs:58: error: `s’ undeclared (first use in this function)
SSLeay.xs:60: error: `SSL_CB_ALERT’ undeclared (first use in this function)
SSLeay.xs:61: error: `SSL_CB_READ’ undeclared (first use in this function)
SSLeay.xs:63: error: `ret’ undeclared (first use in this function)
SSLeay.xs:66: error: `SSL_CB_EXIT’ undeclared (first use in this function)
SSLeay.c: In function `XS_Crypt__SSLeay__CTX_new’:
SSLeay.c:118: error: `SSL_CTX’ undeclared (first use in this function)
SSLeay.c:118: error: `RETVAL’ undeclared (first use in this function)
SSLeay.xs:102: error: `ctx’ undeclared (first use in this function)
SSLeay.xs:135: error: `SSL_OP_ALL’ undeclared (first use in this function)
SSLeay.xs:137: error: `SSL_VERIFY_NONE’ undeclared (first use in this function)
SSLeay.c: In function `XS_Crypt__SSLeay__CTX_free’:
SSLeay.c:172: error: `SSL_CTX’ undeclared (first use in this function)
SSLeay.c:172: error: `ctx’ undeclared (first use in this function)
SSLeay.c:176: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__CTX_set_cipher_list’:
SSLeay.c:193: error: `SSL_CTX’ undeclared (first use in this function)
SSLeay.c:193: error: `ctx’ undeclared (first use in this function)
SSLeay.c:200: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__CTX_use_certificate_file’:
SSLeay.c:218: error: `SSL_CTX’ undeclared (first use in this function)
SSLeay.c:218: error: `ctx’ undeclared (first use in this function)
SSLeay.c:226: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__CTX_use_PrivateKey_file’:
SSLeay.c:244: error: `SSL_CTX’ undeclared (first use in this function)
SSLeay.c:244: error: `ctx’ undeclared (first use in this function)
SSLeay.c:252: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__CTX_use_pkcs12_file’:
SSLeay.c:270: error: `SSL_CTX’ undeclared (first use in this function)
SSLeay.c:270: error: `ctx’ undeclared (first use in this function)
SSLeay.xs:170: error: `EVP_PKEY’ undeclared (first use in this function)
SSLeay.xs:170: error: `pkey’ undeclared (first use in this function)
SSLeay.xs:171: error: `X509′ undeclared (first use in this function)
SSLeay.xs:171: error: `cert’ undeclared (first use in this function)
SSLeay.xs:172: error: `ca’ undeclared (first use in this function)
SSLeay.xs:173: error: `PKCS12′ undeclared (first use in this function)
SSLeay.xs:173: error: `p12′ undeclared (first use in this function)
SSLeay.c:285: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__CTX_check_private_key’:
SSLeay.c:321: error: `SSL_CTX’ undeclared (first use in this function)
SSLeay.c:321: error: `ctx’ undeclared (first use in this function)
SSLeay.c:327: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__CTX_set_verify’:
SSLeay.c:345: error: `SSL_CTX’ undeclared (first use in this function)
SSLeay.c:345: error: `ctx’ undeclared (first use in this function)
SSLeay.c:354: error: syntax error before ‘)’ token
SSLeay.xs:212: error: `SSL_VERIFY_NONE’ undeclared (first use in this function)
SSLeay.xs:217: error: `SSL_VERIFY_PEER’ undeclared (first use in this function)
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_new’:
SSLeay.c:386: error: `SSL_CTX’ undeclared (first use in this function)
SSLeay.c:386: error: `ctx’ undeclared (first use in this function)
SSLeay.xs:231: error: `SSL’ undeclared (first use in this function)
SSLeay.xs:231: error: `ssl’ undeclared (first use in this function)
SSLeay.c:391: error: `RETVAL’ undeclared (first use in this function)
SSLeay.c:395: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_free’:
SSLeay.c:440: error: `SSL’ undeclared (first use in this function)
SSLeay.c:440: error: `ssl’ undeclared (first use in this function)
SSLeay.c:444: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_set_fd’:
SSLeay.c:461: error: `SSL’ undeclared (first use in this function)
SSLeay.c:461: error: `ssl’ undeclared (first use in this function)
SSLeay.c:468: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_connect’:
SSLeay.c:486: error: `SSL’ undeclared (first use in this function)
SSLeay.c:486: error: `ssl’ undeclared (first use in this function)
SSLeay.c:492: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_accept’:
SSLeay.c:510: error: `SSL’ undeclared (first use in this function)
SSLeay.c:510: error: `ssl’ undeclared (first use in this function)
SSLeay.c:516: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_write’:
SSLeay.c:534: error: `SSL’ undeclared (first use in this function)
SSLeay.c:534: error: `ssl’ undeclared (first use in this function)
SSLeay.c:546: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_read’:
SSLeay.c:590: error: `SSL’ undeclared (first use in this function)
SSLeay.c:590: error: `ssl’ undeclared (first use in this function)
SSLeay.c:603: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_get_peer_certificate’:
SSLeay.c:655: error: `SSL’ undeclared (first use in this function)
SSLeay.c:655: error: `ssl’ undeclared (first use in this function)
SSLeay.c:656: error: `X509′ undeclared (first use in this function)
SSLeay.c:656: error: `RETVAL’ undeclared (first use in this function)
SSLeay.c:660: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_get_verify_result’:
SSLeay.c:679: error: `SSL’ undeclared (first use in this function)
SSLeay.c:679: error: `ssl’ undeclared (first use in this function)
SSLeay.c:684: error: syntax error before ‘)’ token
SSLeay.xs:373: error: `X509_V_OK’ undeclared (first use in this function)
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_get_shared_ciphers’:
SSLeay.c:704: error: `SSL’ undeclared (first use in this function)
SSLeay.c:704: error: `ssl’ undeclared (first use in this function)
SSLeay.c:713: error: syntax error before ‘)’ token
SSLeay.xs:383: warning: assignment makes pointer from integer without a cast
SSLeay.c: In function `XS_Crypt__SSLeay__Conn_get_cipher’:
SSLeay.c:732: error: `SSL’ undeclared (first use in this function)
SSLeay.c:732: error: `ssl’ undeclared (first use in this function)
SSLeay.c:738: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__X509_free’:
SSLeay.c:757: error: `X509′ undeclared (first use in this function)
SSLeay.c:757: error: `cert’ undeclared (first use in this function)
SSLeay.c:761: error: syntax error before ‘)’ token
SSLeay.c: In function `XS_Crypt__SSLeay__X509_subject_name’:
SSLeay.c:778: error: `X509′ undeclared (first use in this function)
SSLeay.c:778: error: `cert’ undeclared (first use in this function)
SSLeay.c:786: error: syntax error before ‘)’ token
SSLeay.xs:407: warning: assignment makes pointer from integer without a cast
SSLeay.c: In function `XS_Crypt__SSLeay__X509_issuer_name’:
SSLeay.c:808: error: `X509′ undeclared (first use in this function)
SSLeay.c:808: error: `cert’ undeclared (first use in this function)
SSLeay.c:816: error: syntax error before ‘)’ token
SSLeay.xs:419: warning: assignment makes pointer from integer without a cast
SSLeay.c: In function `XS_Crypt__SSLeay__X509_get_notBeforeString’:
SSLeay.c:838: error: `X509′ undeclared (first use in this function)
SSLeay.c:838: error: `cert’ undeclared (first use in this function)
SSLeay.c:844: error: syntax error before ‘)’ token
SSLeay.xs:429: error: invalid type argument of `->’
SSLeay.c: In function `XS_Crypt__SSLeay__X509_get_notAfterString’:
SSLeay.c:863: error: `X509′ undeclared (first use in this function)
SSLeay.c:863: error: `cert’ undeclared (first use in this function)
SSLeay.c:869: error: syntax error before ‘)’ token
SSLeay.xs:437: error: invalid type argument of `->’
make: *** [SSLeay.o] Error 1
root@appsrv /opt/downloads/cpan/Crypt-SSLeay-0.55 #

I checked and made sure that the LD_LIBRARY_PATH had the openssl libraries in it, which it did.  I then went into the generated Makefile and changed line 147 from

INC = -I/usr/local/ssl/include/openssl

to

 INC = -I/usr/local/ssl/include

Which fixed the problem.  I was then able to make and install the module. 

Gentoo Linux on a Sun Enterprise 250 Sparc

Well, there was a machine at work that was so old and unpatched that it needed to have a new OS installed on it before we could get the required software running correctly.  We contemplated a few different OS’: FreeBSD, Gentoo Linux, Solaris 9, and Solaris 10.  In the end we tried FreeBSD first.  We downloaded the latest stable release, but the system would hang trying to load the kernel.  We then tried Solaris 10. After 20 minutes into the install, we decided we would rather try Gentoo Linux.  This was the first time I’ve really dealt with installing an OS on a sparc machine, let alone linux on it.  It was a very unique feat.  In the end, I was able to get it up and running and stable!!!  I even have a software raid 1 running on all the partitions except for the boot partition.  I’m still trying to get the software raid 1 to work on the boot partition correctly, but have not figured it out yet.