Wednesday, September 22, 2010

Silent Installation and Uninstallation using setup.exe - Installshield

Silent installation and uninstall is a necessary requirement of automation process. In our organization we have a build dependency where one build is (c-sharp) dependent on installation of another build (C client build). Here we need to install a build package generated using installed silently and uninstall it once build completes.

Since InstallShield generated "setup.exe", there is an easy way to do silent installation. But I found the available solutions to silent uninstall is not working well for our product. Anyways I will give my findings.

Silent Installation
 - First create a InstallShield silent response file(setup.iss). This file will record the actions which we do while installing
      setup.exe -r
   It will create setup.iss file in Windows folder. i.e C:\WINNT in my case.
   Also you can use "-f1" option to create .iss file of your choice.
   For Ex: setup.exe -r -f1"C:\win32vc8\setup_inst.iss"
- Now Install with silent option (-s or /s)
   setup.exe -s
        or
   setup.exe -s -f1"C:\win32vc8\setup_inst.iss"
   If everything go well, then application will be installed and can be accessed from Program files.
- Trouble shooting errors
  Look setup.log file and make sure "ResultCode=0". By default setup.log file will be created at location where setup.exe is located. We can change this default location be providing alternative path with -f2 option.
  What various non-zero ResultCode value means?
   0 Success
   -1 General error
   -2 Invalid mode
   -3 Required data not found in the Setup.iss file
   -4 Not enough memory available
   -5 File does not exist
   -6 Cannot write to the response file
   -7 Unable to write to the log file
   -8 Invalid path to the InstallShield Silent response file
   -9 Not a valid list type (string or number)
   -10 Data type is invalid
   -11 Unknown error during setup
   -12 Dialogs are out of order
   -51 Cannot create the specified folder
   -52 Cannot access the specified file or folder
   -53 Invalid option selected


Interactive Uninstall from command line.
setup.exe /uninst

Silent Uninstall.  This is what worked for me.
Two ways
1) Using a Response File
   To run an uninstallation using a response file:
  1. Prepare a response file for the uninstallation (.iss) by running Setup.exe with the /r argument: Setup.exe /r
  2. Locate the Setup.iss file generated in the Windows folder and copy it to the desired location.
  3. Type the following at the command line (items in Italics represent data that is specific to your product's uninstallation): IDriver.exe /M{Your Product GUID} /s /f1"<FULLY qualified path>\YourResponseFile.iss"
Note: The /f1 parameter is necessary only if the Setup.iss file is located in a different directory than the Setup.exe file.

2) Simple Uninstallation
If you do not want to follow the script logic and want to uninstall the product, you can use the following command line:
IDriver.exe /M{Your Product GUID} /uninst
The /uninst parameter causes a forced uninstallation without opening the script. It rolls back the system changes made during the installation, including those from the MSI package and any InstallShield scripting.
Note: For both of these uninstallation options, the /M argument is case sensitive.
Note: By default, the file "IDriver.exe" is located in the following path: C:\Program Files\Common Files\InstallShield\Driver\\Intel 32.


 This approach silently removed the application entry from Windows registry ( regedit). But it didn't remove the installed files.

If you wish to create Response file manually, here is the link for instructions http://kb.flexerasoftware.com/doc/Helpnet/installshield12helplib/CreatetheResponseFile.htm

Wednesday, September 1, 2010

Error while starting hudson as a service on Windows

Error

Installing a service
[hudson] $ C:\hudson\hudson.exe install
WMI.WmiException: StatusServiceExists
   at WMI.WmiRoot.BaseHandler.CheckError(ManagementBaseObject result)
   at WMI.WmiRoot.ClassHandler.Invoke(Object proxy, MethodInfo method, Object[] args)
   at WMI.Win32ServicesProxy.Create(String , String , String , ServiceType , ErrorControl , StartMode , Boolean , String[] )
   at winsw.WrapperService.Run(String[] args)
   at winsw.WrapperService.Main(String[] args)

Few words about windows service

What is windows service?
it's a program that runs invisibly in the background. But can't the same thing be said for a number of programs that run in the background such as anti-virus programs. Yes, but the real difference is that services load and start running whether or not anyone logs into the computer, unlike a program that is launched from the Startup Folder under All Programs. 

Two ways to view Services
1) Typing msconfig.exe in the Run box accessed via the Start Menu, followed by clicking the Services tab. If you want a quick visual of which items are running or stopped, this is fine, but the information is limited. 
2) launch services.msc from the Run option on the Start Menu.


How To Delete A Service? 
  • Start | Run and type cmd in the Open: line. Click OK.
  • Type: sc delete service-name
  • Reboot the system
 How To Create A Service?
  • Start | Run and type cmd in the Open: line. Click OK.
  • Type: sc create service-name
  • Reboot the system

Tuesday, April 6, 2010

0509-036 Cannot load program p4 because of the following errors

Here is the full description of error ............
bash-3.00# p4 info
exec(): 0509-036 Cannot load program p4 because of the following errors:
        0509-111   The s_scnptr or s_size field of the
                  .loader section header is invalid.
        0509-194 Examine file headers with the 'dump -ohv' command.

I got this error when I invoke perforce client (p4) from an IBM AIX 5.2 machine.

Whats going wrong here?
We installed p4 client of IBM AIX 5.3 on IBM AIX 5.2 machine

Resolution: Install proper p4 client for AIX 5.2 machine, which is available in Perforce archive
Direct link: http://www.perforce.com/downloads/perforce/r05.1/bin.aix43/p4

or
http://www.perforce.com/perforce/downloads/unixlist.html   browse to "IBM AIX 4.3 for PPC"

Friday, February 26, 2010

How to configure DNS in Solaris and AIX?

It is very simple.
Solaris
1) Create /etc/resolv.conf file with your DNS server entries
    Ex:
    bash-2.05$ cat /etc/resolv.conf
                      nameserver 10.999.9.999      #First preference server to look
                      nameserver 10.999.9.999      #Second preference server to look
                      search=domain.comp.net

2) Modify the file /etc/nsswitch.conf
    Look for
      "hosts: files"
    in this file and replace it with
     "hosts: files dns"

Thats it. DNS will be enabled


AIX
1) In /etc/netsvc.conf check for
hosts = local, bind


where the entry "bind" is for dns


2) Modify /etc/resolv.conf file with your DNS server entries
    Ex:
    bash-2.05$ cat /etc/resolv.conf
                      nameserver 10.999.9.999      #First preference server to look
                      nameserver 10.999.9.999      #Second preference server to look
                      search=domain.comp.net

Note: You can use smitty to configure this

Tuesday, February 23, 2010

sysck: 3001-022 The file was not found (EPM issue)

I got this error, while installing a package on IBM AIX (5.1 & 5.3) machine. Though the error looks straight forward as given here "sysck: 3001-022 The file  /usr/axm/server-61/bin/aserver.sh  was not found."

it was actually not able to find files, which are supposed to be generated at the time of installation.

We use EPM (ESP Package manager) to create AIX installer (installp). I created AIX package using EPM version 3.7.0. At the time of package creation, everything went fine. It didn't gave not even a single error. But the package which we built was getting screwed up at the time of installation.

After thorough debugging, I found using EPM version 3.7.1 or 4.0 or 4.1 to create installer solved the issue.

Thursday, February 18, 2010

Unable to resolve target system name - a DNS problem

I was not able to ping to any machines from my Windows 2003 server. I did following steps to debug & resolve the issue, which was related to a DNS problem.

1) Ping some-server
    Unknown host vm-cervino 

    2) Ping localhost
      Reply from 127.0.0.1: bytes=32 time<10ms TTL=48 (This is working)

      3) tracert some-server
      Unable to resolve target system name p4server.na.rsa.net. (This gave me a clue that it may be a DNS problem)
        4) ping 192.777.77.77 (IP address of some-server)                                                                         
        Reply from 192.777.77.77: bytes=32 time=4ms TTL=64 (This confirmed, it is a DNS issue.)
          5) I had another Linux machine, where DNS is working fine. I took the working DNS server IP address In Linux machine, DNS configuration is mentioned in /etc/resolv.conf file
            6) I configured my Windows Server to working DNS server IP address On Windows server, DNS configuration is mentioned in Start -> Control Panel -> Network Connections -> Local Area Connection -> Properties -> Internet Protocol (TCP/IP) -> Properties -> General tab -> Use the following DNS server addresses -> Preferred DNS server.

              After changing Preferred DNS server entry, I was able to connect to machines normally using Domain name.

              Wednesday, February 17, 2010

              fatal error C1033: cannot open program database vc60.pdb

              We encountered this error while doing debug build on some C programs. Our environment consists of Cygwin installed on Windows 2003 server, Visual Studio (VC98), Gmake.

              This problem got resolved for us by killing some hung process on our Windows Server. Actually make clean, which in turn, trying to remove vc60.pdb file, was not able to delete this file. When I try to remove it manually, it was complaining that, this file was shared by some resources, so it can't delete.
              Finally the culprit process was found out using Windows process explorer. After killing the culprit process, our build went fine. Even reboot of Windows server will resolve this problem.

              Tuesday, February 16, 2010

              Can't create transcript file No space left on device

              Build was failing with this absurd error. By thorough inspection of log, I found out some command is trying to write inside a directory /var. I found out disk usage in /var is 100% full, so I thought problem is simple and I truncated some Unix system logs in /var/log and rerun the build. But again it failed with the same error.
              At last, I found out that, another issue causing this problem is that inode usage in /var is 100%.

              We can find the inode usage status using the command "df -i"

              Finally after removing some files in /var/tmp, inode usage got reduced less than 100% and my build went fine afterward.

              Monday, February 15, 2010

              Linux system logs management using logrotate

              You can rotate log file using logrotate software and monitor logs files using logwatch software.

              Working on it, will update soon


              How to truncate all the log files under /var/log? (I don't want to delete them)
              bash# for x in `ls -l /var/log|grep "^-r"|awk '{print $9}'`; do >$x; done

              Thursday, January 21, 2010

              Visual representation of Ant target dependencies using tool Grand

              Is your ant build file is more than 500 lines? Is your ant build file contains hundred's of targets? Then there is no doubt that you will definitely get lost in the process of understanding it. Fortunately there are tools which graphically represents Ant target dependencies. One such tool I recently used is Grand.

              You can download Grand from http://www.ggtools.net/grand/. For windows, download grand-ui.zip file and extract it.
              Then double click on grand-ui.bat, which opens up an editor. From the editor, open your ANT build file through File menu (File -> Quick open). Then it generates graph of all the target dependencies. It also identifies default target in different color (yellow). If a target (represented in oval )is clicked, it displays the code for that target in bottom frame.
              Another good thing is that it also traverse targets present in the build files which are imported by parent build file.

              This tool emphatically helps to understand complex Ant build files

              Wednesday, January 20, 2010

              fatal error C1902: Program database manager mismatch; please check your installation

              Scenario: Ssh from Linux machine ( ex: build account) to Windows machine ( Ex: Adminisrator account) with the help of cygwin and compile some c/c++ code using Microsoft Visual studio 2005. It ends with the error
              fatal error C1902: Program database manager mismatch; please check your installation

              This seems to be bug in VS 2005 or may be security enhancement feature. But this problem never use to occur in older VC6 (VS98).

              Solution: Since we are using "build" account in Linux machine and connecting with Administrator account to Windows, which resulting in this error. The solution is to use the same account as in Linux machine on Windows too.

              Create "build" account on Windows machine and add it to administrator group. Install cygwin with build account itself, run ssh-host-config file, start sshd service (net start sshd).

              Make sure "Cygwin sshd" service is started with build account. You can verify it by Right click on "My computer" -> Manage -> Services and Applications -> Services -> Cygwin sshd.
              If it is not running with build account (it may be running with "Local SYSTEM" instead), then you need to follow the instructions given in below link to make it run under "build" account.
              http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r1/index.jsp?topic=/com.ibm.websphere.ops.doc/info/odoe_task/tcimgr_sshwin.html


              It resolved this problem for us.

              You can also find the detailed explanation from my buddy's blog http://vijayk.blogspot.com/2010/01/fatal-error-c1902-program-database.html

              Friday, November 27, 2009

              Creating iso image using mkisofs

              An ISO image is an archive file (disk image) of an optical disc using a conventional ISO (International Organization for Standardization) format. ISO image files typically have a file extension of .ISO. The name "ISO" is taken from the ISO 9660 file system used with CD-ROM media, but an ISO image can also contain UDF file system because UDF is backward-compatible to ISO 9660.

              mkisofs is effectively a pre-mastering program to generate the iso9660 filesystem - it takes a snapshot of a given directory tree, and generates a binary image which will correspond to an iso9660 filesystem when written to a block device.

              Here is an example of mkisofs usage ..

              mkisofs -r -J -l -d -allow-multidot -allow-leading-dots -hide-rr-moved -disable-deep-relocation -V "EPM-1.1-LINUX-x86_64" -o epm-linux-x86_64.iso Disk1/

              where
              -r, -rational-rock Generate rationalized Rock Ridge directory information
              -J, -joliet Generate Joliet directory information
              -l, -full-iso9660-filenames Allow full 31 character filenames for ISO9660 names
              -d, -omit-period Omit trailing periods from filenames (violates ISO9660)
              -allow-multidot Allow more than one dot in filenames (e.g. .tar.gz) (violates ISO9660)
              -allow-leading-dots Allow ISO9660 filenames to start with '.' (violates ISO9660)
              -hide-rr-moved Rename RR_MOVED to .rr_moved in Rock Ridge tree
              -D, -disable-deep-relocation
              Disable deep directory relocation (violates ISO9660)
              -V ID, -volid ID Set Volume ID
              -o FILE, -output FILE Set output file name


              How to mount an ISO image under linux?
              mount -o loop -t iso9660 iso-name.iso /mountpoint

              Tuesday, November 24, 2009

              0509-036 Cannot load program ssh because of the following errors: Dependent module /usr/local/ssl/lib/libcrypto.a(libcrypto.so) could not be loaded.

              I installed openssh without any problem, but when I invoked either ssh/sshd, it started giving error ..

              > ssh
              exec(): 0509-036 Cannot load program ssh because of the following errors:
              0509-150 Dependent module /usr/local/ssl/lib/libcrypto.a(libcrypto.so) could not be loaded.
              0509-152 Member libcrypto.so is not found in archive

              Initially I thought it is openssl version mismatch and re-installed forcefully openssh from rpm, but it didn't solve this problem.

              Later I thought of analyzing library /usr/local/ssl/lib/libcrypto.a
              Step 1) Copy the libcrypto.a to a temporary directory
              Step 2) Extract files in the archive libcrypto.a
              ar -xv ./libcrypto.a
              Step 3) ls
              libcrypto.a libcrypto.so.0 libcrypto.so.0.9.7
              I found here that there is no shared library named libcrypto.so. So I thought of creating one
              Step 4) cp libcrypto.so.0 libcrypto.so
              Step 5) ls
              libcrypto.a libcrypto.so libcrypto.so.0 libcrypto.so.0.9.7
              Step 6) Append the newly created library libcrypto.so to archive libcrypto.a
              ar -qv ./libcrypto.a libcrypto.so
              Step 7) copy the newly created archive to desired location
              cp ./libcrypto.a /usr/local/ssl/lib/libcrypto.a

              Thats it .... my problem got fixed
              > ssh
              usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
              [-D [bind_address:]port] [-e escape_char] [-F configfile]
              [-i identity_file] [-L [bind_address:]port:host:hostport]
              [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
              [-R [bind_address:]port:host:hostport] [-S ctl_path]
              [-w local_tun[:remote_tun]] [user@]hostname [command]

              Thursday, November 5, 2009

              Tweak single instance of tinderbox to work on two different perforce servers

              Tinderbox is a tool developed by Mozilla, which collects build logs and presents the logs and the result it in a nice, clear and concise way.

              But one instance of tinderbox works with one SCM system. In our organization, we have 2 different perforce servers, but we don't want to have two different tinderbox installations for 2 different perforce servers. To make one instance of tinderbox to work on two different perforce servers, following tweak needs to be done Tinderbox code.

              File 1: tb_code/lib/TinderDB/VC_Perforce.pm
              Add following lines

              936a937,942
              > if ($filespec =~ /RKM/) { #Here RKM is the depot name, whose p4 server is different
              > $ENV{'P4PORT'} = $TinderConfig::RKM_PERFORCE_PORT;
              > $ENV{'P4USER'} = $TinderConfig::RKM_PERFORCE_USER;
              > $ENV{'P4PASSWD'} = $TinderConfig::RKM_PERFORCE_PASSWD;
              > }
              >


              File 2: tb_code/local_conf/TinderConfig.pm
              Add the following lines
              62a63,66
              > #RKM Perforce variables
              > $RKM_PERFORCE_PORT="perforce:1777";
              > $RKM_PERFORCE_USER="p4id";
              > $RKM_PERFORCE_PASSWD="xxxxxx";

              Basically we are defining different set of perforce variables in File2 and making File 1 to use it matching a depot in the alternative perforce server

              Wednesday, November 4, 2009

              AIX: make: 1254-055 Dependency line needs colon or double

              We get this compilation issue "make: 1254-055 Dependency line needs colon or double" while compiling C/C++ code in AIX machines.

              It occurs if Makefile written in gmake format and then using native AIX make to compile it.

              It can be resolved by installing gmake on AIX machine and then using it to compile.

              We can verify whether the installed make is gmake or not by running 'make -v' to find out. If it's GNU, you'll know based on the output. If it gives you an error, then it's not GNU make.

              -bash-3.00$ /usr/local/bin/make -v
              GNU Make 3.80
              Copyright (C) 2002 Free Software Foundation, Inc.
              This is free software; see the source for copying conditions.
              There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
              PARTICULAR PURPOSE.

              This is GNU Make



              -bash-3.00$ make -v
              make: Not a recognized flag: v
              usage: make [-eiknqrst] [-k|-S] [-d[A|adg[1|2]msv]] [-D variable] [-f makefile ] [-j [jobs]] [variable=value ...] [target ...]

              This is not GNU make.

              Monday, November 2, 2009

              Posting a JIRA bug using Perl Mechanize

              Perl provides modules which can be used as command line browser to automate tasks dependent on web pages. Among them LWP and mechanize are important ones. Mechanize is latest module with more features compared to LWP.
              Recently I wrote a perl script to integrate a perl tool with JIRA bug tracking tool using mechanize, I just want to document here about mechanize usage with JIRA.
              Basically this perl script post a bug in Jira after authentication

              #!/usr/bin/perl -w
              use WWW::Mechanize;
              use HTTP::Cookies;
              $mech = WWW::Mechanize->new();

              # Authenticate to Jira and get a cookie back for the subsequent post.
              $root_uri = "http://your-jira-site.com";

              $mech->cookie_jar(HTTP::Cookies->new()); # Don't write cookies to file!
              $mech->get($root_uri);
              #login to Jira
              $mech->form_name('loginform');
              $mech->field(os_username => $jira_id);
              $mech->field(os_password => $jira_pass);
              $mech->click();
              my $response = $mech->content();
              if ($response !~ m/Dashboard for (\w+) (\w+)/) {
              print_error("Failed to add new bug: authentication failed. Below you might find a clue as to what happened.");
              print_error("
              ");
              print_error($response);
              return;
              } else {
              $username="$1 $2";
              }



              print "

              creating new Jira bug ...

              \n";
              my $show_uri = "$root_uri/browse";
              # Go to Product page in Jira
              $mech->follow_link(text => "$product", n => 1);
              #Browse to create new issue form
              $mech->follow_link(text => "Create a new issue in project $product", n => 1);
              $mech->form_name('jiraform');
              $mech->click();

              #Create a new bug
              $mech->form_name('jiraform');
              $mech->field(summary => "$formdata{hotfix}: $formdata{bugtitle}");
              $mech->field(components => "$components_map{\"$formdata{component}\"}");
              $mech->field(customfield_10044 => "$formdata{platform}"); #OS/Platform
              $mech->field(customfield_10054 => "moderate"); #Bug severity
              $mech->field(assignee => "$jira_id");
              $mech->field(description => "$comment");
              $mech->field(customfield_10067 => "$_[0]"); #Found in Version
              $mech->field(customfield_10007 => "All"); #Appserver
              $mech->field(customfield_10060 => "Support request (CE_Assistance)"); #Type of defect
              $mech->field(customfield_10020 => "CS - other"); #Discovered by function
              $mech->field(customfield_10019 => "Use in production "); #Discovered by activity
              $mech->click();
              print "

                posting bug ...\n";
              $response = $mech->content();
              my $bz_msg;
              my $bug_number;
              if ($response =~ m/Key:.*?browse\/(\w+)-(\w+)/s) {
              $bug_number = "$1-$2";
              print "done

              \n";
              $bz_msg = "

              Bug #$bug_number for version $_[0] has been posted to " . "Jira.

              \n";
              print "$bz_msg";
              $bz_donemsg .= $bz_msg;
              } else {
              $bz_donemsg .= "

              No Jira bug was filed for version $_[0]. This will need to be done manually.

              \n";
              print_error("Failed to add new bug (Jira output follows):\n$response");
              }



              Reference: http://www.ibm.com/developerworks/linux/library/wa-perlsecure.html

              Friday, October 30, 2009

              AIX install/unintall software - ssh

              In AIX, we can use smitty to install software.
              To uninstall, we can use "smit remove"

              I wanted to install ssh on a AIX machine. But some how smit failed, so I tried compiling openssh from source.
              We can download the openssh source code and compile it on our AIX box. Openssh needs zlib and openssl needs to be installed prior to it (I compiled both of these).
              It looks for zlib.h zconf.h file /usr/inlcude directory and zlib.a file in /usr/lib directory.

              After that we need to add new service on the system. Refer http://blog.thilelli.net/post/2005/06/14/How-to-Add-a-New-sshd_adm-Service-on-AIX-5X for this.

              How to start sshd?
              "startsrc -s sshd" will start the daemon.
              Use "lssrc -s sshd" to see if it's already running.

              Another way to start is "/usr/sbin/sshd -de"

              lslpp --> The lslpp command displays information about installed filesets or fileset updates.
              Example
              [root@re-aix02:/usr/local/etc] lslpp -l bos.rte.libc openssh.base.server
              Fileset Level State Description
              ----------------------------------------------------------------------------
              Path: /usr/lib/objrepos
              bos.rte.libc 5.1.0.69 COMMITTED libc Library
              openssh.base.server 4.1.0.1 COMMITTED Open Secure Shell Server


              oslevel -> Reports the latest installed maintenance level of the system


              Here is some more info about installing ssh using smit

              Installing openSSH on 5.1, 5.2, and 5.3
              At 5.1, 5.2, and 5.3, the installation of openssh itself is in installp format, but all the prerequisites (including openssl) can be installed using the same rpm -i commands (using the same 4.3.3. rpm packages). The installp format package can be downloaded from the following site:http://sourceforge.net/projects/openssh-aix After installing the prerequisites using the following commands,
              1. rpm -i zlib-1.1.4-3.aix4.3.ppc.rpm
              2. rpm -i prngd-0.9.23-3.aix4.3.ppc.rpm AIX 5.2 uses /dev/urandom
              3. rpm -i openssl-0.9.7d-1.aix5.1.ppc.rpm
              4. rpm -i openssl-devel-0.9.7d-1.aix5.1.ppc.rpm

              use smitty installp to install the openssh filesets extracted from the tar file openssh-3.8.1p1_51.tar (for 5.1), openssh-3.8.1p1_52.tar (for 5.2), and openssh-3.8.1p1_53.tar (for 5.3). The following steps need to be followed to install openssh.


              1. In the directory where the images are, run the command inutoc.
              2. Run smitty install.
              3. Select "Install and Update Software".
              4. While in smitty do the following:
              4.1 Select "Install Software".
              4.2 Enter a dot (".") in the field for "INPUT device / directory for software" and press ENTER.
              4.3 Enter openssh in the "SOFTWARE to install" field.
              4.4 Scroll down to "Preview new LICENSE agreements?" and press tab key to change the field to yes. Read the license agreement.
              4.5 Scroll down to "ACCEPT new license agreements?" and press tab to change the field to yes. Press ENTER to begin the software installation.

              Where to get openssl?
              The OpenSSH software is shipped on the AIX 5.3 Expansion Pack. This version of OpenSSH is compiled and packaged as installp packages using the openssh-3.8.p1 level of source code. The installp packages include the man pages and the translated message filesets. The OpenSSH program contained in the Expansion Pack CD-ROM media is licensed under the terms and conditions of the IBM® International Program License Agreement (IPLA) for Non-Warranted Programs.

              Before installing the OpenSSH installp format packages, you must install the Open Secure Sockets Layer (OpenSSL) software that contains the encrypted library. OpenSSL is available in RPM packages on the AIX Toolbox for Linux® Applications CD, or you can also download the packages from the following AIX Toolbox for Linux Applications Web site:

              http://www-1.ibm.com/servers/aix/products/aixos/linux/download.html

              Because the OpenSSL package contains cryptographic content, you must register on the Web site to download the packages. You can download the packages by completing the following steps:

              1. Click the AIX Toolbox Cryptographic Content link on the right side of the AIX Toolbox for Linux Applications Web site.
              2. Click I have not registered before.
              3. Fill in the required fields in the form.
              4. Read the license and then click Accept License. The browser automatically redirects to the download page.
              5. Scroll down the list of cryptographic content packages until you see openssl-0.9.6m-1.aix4.3.ppc.rpm under OpenSSL — SSL Cryptographic Libraries.
              6. Click the Download Now! button for the openssl-0.9.6m-1.aix4.3.ppc.rpm.

              After you download the OpenSSL package, you can install OpenSSL and OpenSSH.

              Thursday, October 15, 2009

              mount: server:path failed, reason given by server: Permission denied

              We get this peculiar NFS moount problem for quite a few reasons. But recently we encountered this problem and scratched our head debugging it. We tried restarting nfs server (service nfs restart), exportfs, validating /etc/export of server. Nothing solved the issue

              engweb:/mnt/kits# mount -a
              mount: library-hq:/export/kits/ failed, reason given by server: Permission denied
              mount: library-hq:/export2/kits/ failed, reason given by server: Permission denied


              But the actual issue is root partition (/) was full in the machine which hosted nfs server. After clearing the disk space everything got resolved.

              Wednesday, October 14, 2009

              How to access CD from LINUX installed in VMWare Virtual machine?

              In VMware workstation click on VM -> Settings -> CD-ROM.
              Make sure check boxes "Connected" and "Connect at power on" are ticked.
              Then restart the Linux machine availble in VM.

              After this you need to mount CDROM to one of your local location.
              Find out in your machine where CDROM device is available.
              >>> dmesg|grep -i cdrom
              hdc: Vmware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive

              From above output, in my machine it is available in /dev/hdc.

              Now mount it to a local location "/mnt/cdrom". Make sure this directory is already created.

              >>> mount /dev/hdc /mnt/cdrom
              mount: block device /dev/hdc is write-protected, mounting read-only

              Thats it. Now you can access the CD contents from /mnt/cdrom.