Open Source Binaries



CCSID issues

Have CCSID issues? Junk characters? Nothing works?

  • IBM i actions, see CCSID

New version (based on Perzl site rpms)

Finally, V5R3/V5R4 seem relegated to the past, therefore it is time to update this part of the wiki with more current Open Source binaries. Most IBM i folks are now using binaries from the Perzl site ( perzl.org), therefore a new wwwperzl.sh script was created to web download and/or install rpms and dependencies from Perzl site.

Perzl site provides handy list of dependencies for rpms you may download ( deplists), so very useful managing rpms, therefore setup.sh below creates a local copy of Perzl *.deps tree for use with wwwperzl.sh. Note: Perzl *.deps tree is NOT optional step, www.oss4aix.org.site.dirs and www.oss4aix.org.deps.tar are included in download for setup.sh and wwwperzl.sh to work properly.

Perzl site claims hosted rpms are compatible with AIX Toolbox, but i find simply easier to start over from nothing on my IBM i using wwwclean.sh. You do NOT have to use wwwclean.sh to use wwwperzl.sh, but you may want to delete or move older /QOpenSys/download/*.rpms, in favor of newer *.rpm versions from Perzl site.

Check your PASE and Perzl vintage year match: Not all binaries on Perzl will run on IBM i PASE, especially “latest / greatest” AIX (everyone instinctively wants latest), due to IBM i PASE lagging behind AIX technology releases, to wit, PASE is ALWAYS an older version. I suggest often best using older versions from perzl (save you an afternoon).

  • Check vintage year of perzl binaries, look into the directory of each rpm you intend to download ftp://www.oss4aix.org/RPMS.
  • Second, check your IBM i version vintage year of PASE shipped with the IBM i release (below).
    • You do not need an exact match year, often perzl binaries a few years after the release will still work on the older PASE vintage, but if you run into loader issues not covered below, then you may need to remove/install an older perzl binary. If i may add … before becoming overly upset with IBM PASE-2-AIX “currency”, recall IBM i customers do not update latest IBM i versions quickly, in fact, often run same IBM i release for many years, skipping one or more IBM i release upgrades, therefore PASE can become very old compared to AIX (and perzl).

Copy from http://wiki.midrange.com/index.php/History_of_OS/400

Release GA Date (AIX<>PASE age roughly 1–2 year prior GA)
V5R3 06/11/2004
V5R4 02/14/2006
V6R1 03/21/2008
V7R1 04/23/2010
V7R2 05/02/2014

This information and scripts are offered “as is”, please check ( perzl.org) License link for additional details.

If you have PASE loader issues ‘not load dependent module’ (libiconv/libidn), see fix tip ./wwwperzl.sh aix53 fix.

Download:

  • Attach:setup2.sh — better setup replace in download
  • Attach:download-2.0.tar.zip
    • README.txt (partial)
      README.txt                    -- this file
      
      http://www.oss4aix.org (perzl site compatible with IBM site)
      wwwperzl.sh                   -- perzl download newer AIX *.rpms (V5R4+)
      www.oss4aix.org.deps.tar      -- perzl copy *.deps
      www.oss4aix.org.site.dirs     -- perzl copy RPMS/ structure (names only)
      
      
      ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox (IBM site)
      setup.sh                      -- setup rpm for use
      rpm.rte                       -- aixtoolbox copy of rpm.rte
      wget-1.9.1-1.aix5.1.ppc.rpm   -- aixtoolbox copy of wget
      wwwinstall.sh                 -- aixtoolbox download older AIX *.rpms (V5R3)
      
      admin:
      wwwclean.sh                   -- destroy (complete delete/remove/clean)
                                       /QOpenSys/download
                                       /QOpenSys/opt/freeware
                                       /opt/freeware
                                       /usr/bin (freeware/bin symbolic links)
                                       /usr/lib (freeware/lib symbolic links)
                                       (start all over from scratch)
      

Instructions:

1) Download (laptop):
unzip download-2.0.tar.zip  (will create download-2.0.tar)

2) FTP 
ftp myibmi
> cd /QOpenSys
> bin
> put download-2.0.tar

2) Setup rpm and perzl *.deps (local copy)
call qp2term (or ssh uid@myibmi)
> cd /QOpenSys
> tar -xf download-2.0.tar
> cd /QOpenSys/download
> ./setup.sh
  (a) setup installs rpm.rte
  (b) setup rpm install wget
  (c) setup untar perzl deplists  (www.oss4aix.org/rpmdb/deplists/aix53,aix61)
      Note: (c) can take significant time (setting up prezl depend tree ...)

Script help ./wwwperzl.sh help

call qp2term (or ssh uid@myibmi)
> cd /QOpenSys/download
> ./wwwperzl.sh help
customer:
--------------
wwwperzl.sh aix53|aix61 option [scan]
required:
 aix53|aix61
optional:
 option [scan]
 help          - help customer
 admin         - admin help, PASE releases, perzl site copy functions, etc.
 list   [scan] - list possible downloads
 count  [scan] - count list possible downloads
 wget1  [scan] - wget from perzl
 wget   [scan] - wget plus depends from perzl
 wgetv  [scan] - wget plus depends from perzl (view action only)
 rpm1   [scan] - rpm install local (post wget)
 rpm    [scan] - rpm install plus depends (post wget)
 rpmv   [scan] - rpm install plus depends (view action only)
                (*)[scan] - wild card rpm scan [gcc*]

pase->aix release:
 --------------
 V5R3 -> aix52
 V5R4 -> aix53
 V6R1 -> aix53
 V7R1 -> aix61

Ready for download/install:

call qp2term (or ssh uid@myibmi)
> cd /QOpenSys/download
> ./wwwperzl.sh aix53 list curl
> ./wwwperzl.sh aix53 wgetv curl-7.27.0-1   (view rpm list)
> ./wwwperzl.sh aix53 wget curl-7.27.0-1    (do wget)
> ./wwwperzl.sh aix53 rpmv curl-7.27.0-1    (view rpm install -- see tip)
> ./wwwperzl.sh aix53 rpm curl-7.27.0-1     (do rpm install)
:
> ./wwwperzl.sh aix53 wget gcc-4.8.2-1
> ./wwwperzl.sh aix53 rpm gcc-4.8.2-1
:

Note:
you need specify enough version information for unique download,
or a message will be displayed saying "not found' ...

> ./wwwperzl.sh aix53 wget curl       
search [curl] unique version not found
curl-7.27.0-1.aix5.1.ppc.deps
curl-devel-7.27.0-1.aix5.1.ppc.deps

Tip: To avoid conflicts with your PASE installation, best practice use ‘rpmv’ option ( /wwwperzl.sh aix53 rpmv] ), where rpmv does not take rpm install action, but simply outputs the planned action. In curl example below openssl and zlib are ALSO provided by IBM product SC1, therefore you may chose to experiment with mixing Perzl/IBM by executing selected rpm commands manually instead of using script ‘rpm’.

Included Perzl *.deps are nice, in fact, required for wwwperzl.sh to work (setup.sh), but *.deps files are liberal with notion of ‘dependency’, therefore, you may find you do not actually need all listed dependency rpms (aka. bash is nice, but not required for curl).

> ./wwwperzl.sh aix53 rpmv curl-7.27.0-1
[adc@oc7083008330 rpm]$ ./wwwperzl.sh aix53 rpmv curl-7.27.0-1
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv bash-4.2-10.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv gdbm-1.10-1.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv gettext-0.10.40-8.aix5.2.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv info-4.13a-2.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv libgcc-4.7.2-1.aix5.3.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv libiconv-1.14-2.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv libidn-1.25-1.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv libssh2-1.4.2-2.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv openssl-1.0.1c-1.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv perl-5.8.8-2.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv zlib-1.2.3-4.aix5.2.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv openldap-2.4.23-0.3.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv curl-7.27.0-1.aix5.1.ppc.rpm

I have NOT experienced any difficulties running both Perzl and IBM version on my machine, but maybe a good idea to run ‘rpmv, before running total dependencies install ‘rpm’, so you understand what you are installing.

bash-4.2$ ls -l /usr/lib*ssl*
/usr/lib*ssl* not found
bash-4.2$ ls -l /usr/lib/*ssl*
lrwxrwxrwx    1 qsys     0               118 Nov  5 17:20 /usr/lib/libssl.a -> ../../QIBM/ProdData/SC1/OpenSSL/openssl-0.9.8j/lib/libssl.a
lrwxrwxrwx    1 rwatkin  0                96 Nov 16 2011  /usr/lib/libssl.a.new -> /QOpenSys/QIBM/ProdData/SC1/OpenSSL/lib/libssl.a
bash-4.2$ ls -l /opt/freeware/lib/*ssl*
-rw-r--r--    1 adc      0           4477977 Jun 11 2012  /opt/freeware/lib/libssl.a
lrwxrwxrwx    1 adc      0                30 Apr 11 15:11 /opt/freeware/lib/libssl.so -> libssl.so.1.0.1
-rw-r--r--    1 adc      0            362538 Jun 11 2012  /opt/freeware/lib/libssl.so.0.9.7
-rw-r--r--    1 adc      0            507145 Jun 11 2012  /opt/freeware/lib/libssl.so.0.9.8
-rwxr-xr-x    1 adc      0            558117 Jun 11 2012  /opt/freeware/lib/libssl.so.1.0.0
-rwxr-xr-x    1 adc      0            620182 Jun 11 2012  /opt/freeware/lib/libssl.so.1.0.1
bash-4.2$ 

Tip Perzl *.rpms common problem exists with libiconv/libidn that causes utilities to fail with ‘dependent module cannot load’, to fix use following command. I have only found this single instance of libiconv/libidn issue for all perzl RPMs i use, so maybe one hack/fix will do the trick. It should be noted, oss4aix_fix_libiconv check/fix auto-runs after any wwwperzl.sh rpm command.

FYI — Just in case … should you find you need to deploy PASE/AIX trick for another /freeware/lib/lib*.a ‘not load dependent module’ message, i included oss4aix_fix_libiconv script technique from wwwperzl.sh below, you may enter ar -x and ar -av commands manually in call qp2term (ssh).

> ./wwwperzl.sh aix53 fix   (runs oss4aix_fix_libiconv below)

# oss4aix_fix_libiconv
#   na
# output
#   na
function oss4aix_fix_libiconv {
  cnt=$(ar -t /opt/freeware/lib/libiconv.a | grep -c shr4)
  if (($cnt==0))
  then
    echo "fixing /opt/freeware/lib/libiconv.a ..."
    ar -x /usr/lib/libiconv.a
    ar -rv /opt/freeware/lib/libiconv.a shr4.o
    ar -rv /opt/freeware/lib/libiconv.a shr.o
    echo "... complete"
  else
    echo "/opt/freeware/lib/libiconv.a fixed (ok)"
  fi
}

Note:
  'ar' hack/technique ... 
     lists:    ar -t /opt/freeware/lib/libiconv.a(shr4.0,...)
     extracts: ar -x /usr/lib/libiconv.a(shr4.o,shr.o)
     archives: ar -rv /opt/freeware/lib/libiconv.a(shr4.o,shr.o,...)

Having PHP ssl trouble?

bash-4.2$ php -v
Could not load program php:
        Dependent module /usr/local/lib/libssl.a(libssl.so.0) could not be loaded.
        Member libssl.so.0 is not found in archive 
bash-4.2$ mkdir libssl
bash-4.2$ cd libssl/
bash-4.2$ ar -x /usr/local/lib/libssl.a
bash-4.2$ ls
libssl.so.0.9.7  libssl.so.0.9.8  libssl.so.1.0.0  libssl.so.1.0.1
bash-4.2$ cp libssl.so.1.0.1 libssl.so.0    
bash-4.2$ ar -ruv /usr/local/lib/libssl.a libssl.so.0
a - libssl.so.0
bash-4.2$ php -v
Could not load program php:
        Dependent module /usr/local/lib/libcrypto.a(libcrypto.so.0) could not be loaded.
        Member libcrypto.so.0 is not found in archive 
bash-4.2$ ar -x /usr/local/lib/libcrypto.a
bash-4.2$ ls
libcrypto.so.0.9.7  libcrypto.so.1.0.0  libssl.so.0         libssl.so.0.9.8     libssl.so.1.0.1
libcrypto.so.0.9.8  libcrypto.so.1.0.1  libssl.so.0.9.7     libssl.so.1.0.0
bash-4.2$ cp libcrypto.so.1.0.1 libcrypto.so.0    
bash-4.2$ ar -ruv /usr/local/lib/libcrypto.a libcrypto.so.0
a - libcrypto.so.0
bash-4.2$ php -v
PHP 5.3.6 (cli) (built: Apr  7 2011 09:37:14) 

Troubles some versions gcc …

Tip For those uncomfortable with many possibilities of wwwperzl.sh, having difficulties beyond documented areas below, you may want to try the gcc package in the wiki GCC. I suggest you delete your old attempts related to /opt/freeware if you decide to switch methods (wwwclean.sh).

bash-4.2$ gcc 
Could not load program gcc:
        Dependent module /opt/freeware/lib/libiconv.a(libiconv.so.2) could not be loaded.
Could not load module /opt/freeware/lib/libiconv.a(libiconv.so.2).
System error: No such file or directory
bash-4.2$ ls -l /opt/freeware/lib/libiconv.a
/opt/freeware/lib/libiconv.a not found
bash-4.2$ pwd
/QOpenSys/download
bash-4.2$ ./wwwperzl.sh aix61 wget libiconv-1.14-2
:
bash-4.2$ ./wwwperzl.sh aix61 rpm libiconv-1.14-2


don't forget paths ..

export PATH=/usr/local/bin:$PATH
export LIBPATH=/usr/local/lib:$LIBPATH


you may have to add symbolic links ...
cd /usr/local/lib
ln -sf gcc/powerpc-ibm-aix6.1.0.0/4.8.2/libatomic.a libatomic.a
ln -sf gcc/powerpc-ibm-aix6.1.0.0/4.8.2/libgcc.a libgcc.a      
ln -sf gcc/powerpc-ibm-aix6.1.0.0/4.8.2/libgcc_eh.a libgcc_eh.a
ln -sf gcc/powerpc-ibm-aix6.1.0.0/4.8.2/libgcc_s.a libgcc_s.a  
ln -sf gcc/powerpc-ibm-aix6.1.0.0/4.8.2/libgcov.a libgcov.a  

cd /usr/lib
ln -sf ../../opt/freeware/lib/libatomic.a libatomic.a
ln -sf ../../opt/freeware/lib/libgcc.a libgcc.a      
ln -sf ../../opt/freeware/lib/libgcc_eh.a libgcc_eh.a
ln -sf ../../opt/freeware/lib/libgcc_s.a libgcc_s.a  
ln -sf ../../opt/freeware/lib/libgcov.a libgcov.a  


Original version (based on AIX Toolbox rpms)

This section of the wiki is dedicated to showing you “How to download and install” pre-compiled Open Source binaries hosted on the IBM AIX Toolbox for Linux Applications web site. This information is offered “as is”, please check this License link for additional details.

Download these files first (prepare phase)
  • Download click here (4 files) → rpm.rte, wget.rpm, Attach:setup.sh, Attach:wwwinstall.sh to your PC.
    • ftp files from your PC to IBM i (binary mode)
      ftp myibmi
      > bin
      > mkdir /QOpenSys/download
      > cd /QOpenSys/download
      > put rpm.rte
      > put wget.rpm (example version: wget-1.9.1-1.aix5.1ppc.rpm)
      > put setup.sh
      > put wwwinstall.sh
      
      On IBM i:
      call qp2term
      > cd /QOpenSys/download
      > chmod +x setup.sh          <---make executable
      > setup.sh                   <---install rpm.rte and wget.rpm (example version: wget-1.9.1-1.aix5.1ppc.rpm)
      
      

Ignore wwwinstall.sh if using Michael Perzl’s site, but complete setup.sh above ( perzl.org)

 call qp2term
> cd /QOpenSys/download
> chmod +x wwwinstall.sh        <-make executable
wwwinstall.sh has 4 possible operations each package (BASE example) ... 
> wwwinstall.sh GetBase         <- wget and install rpms (requires IBM i allowed Internet access)
> wwwinstall.sh GetBase_wget    <- wget rpms only (requires IBM i allowed Internet access)
> wwwinstall.sh GetBase_install <- install rpms only for manual install RPM packages IBM i without Internet Access (see dark side below)
> wwwinstall.sh GetBase_clean   <- remove xxx.rpm files from /QOpenSys/download, but not remove product (optional post install clean up)
> wwwinstall.sh GetBase_erase   <- uninstall/erase rpm packages (risky)

Important: setup.sh and wwwinstall.sh script attempt download/install packages that do not collide with PASE shipped binaries (use PASE iconv, not aixtoolbox iconv … PASE openssl, not aixtoolbox openssl), so if you MUST do rpm installs by hand, then try to stay close to wwwinstall.sh package sets {view wwwinstall.sh} … that is to say, you can often install less than all packages in a set, but you take risk adding you own random stuff. Also, we know that many packages are old in the set and at some point we may need to update wwwinstall.sh to later versions, but … well IBM i folks … many of you are still using V5R3 (decade+ old PASE), so we have to use older binaries … cough … maybe time to move yes???

If you make a rpm mistake and things start to go bad …

  No problem, relax, load errors can be simple to fix ...
  1) The careful way ... delete /opt/freeware items on error ... retry operation
     call qp2term
     > rpm
     0509-022 Cannot load module /opt/freeware/lib/libintl.a(libintl.so.1). 
     0509-150 Dependent module /opt/freeware/lib/libiconv.a(shr4.o) could not be loaded.
     > rm /opt/freeware/lib/libintl.a
     > rm /opt/freeware/lib/libiconv.a

     Then remove all traces with rpm -e 
     > rpm --nodeps -e iconv 
     ... and so on

  2) A bit more forecful ...
     If rpm -e remove not working try 
     > rpm --allmatches --nodeps --noscripts --notriggers -e  iconv 
     ... and so on

  3) The panic way ... delete all of /opt/freeware
     call qp2term
     > rm -R /opt/freeware
     ... but nothing will work these toolkit binaries 
If you are trying to install newer version (on your own)

The easy way to understand what to do on your own is look at script wwwinstall.sh, but here are a few commands that may help by example …and … good luck as you go where no one has gone before.


Get to download directory: 
call qp2term
> cd /QOpenSys/download

Check you package is available (IMPORTANT assumes BINARY ftp):
> ls gcc-4.0.0-1.aix5.3.ppc.rpm
gcc-4.0.0-1.aix5.3.ppc.rpm

Install (assumes rpm package already downloaded): 
> rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv gcc-4.0.0-1.aix5.3.ppc.rpm

--------------------
Other rpm manual actions:
--------------------
call qp2term
> rpm --version
  RPM version 3.0.5
> rpm --help
  help stuff
> cd /QOpenSys/download
> rpm -qlp zip-2.3-3.aix4.3.ppc.rpm
  list contents of a package
> rpm -qRp zip-2.3-3.aix4.3.ppc.rpm
  list of dependencies
> rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv *.ppc.rpm
> rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv wget-1.9.1-1.aix5.1.ppc.rpm
  Install a package(s)
  Note 1: The first install of any *.ppc.rpm will create the
  file /var/opt/freeware/lib/rpm/packages.rpm
  Note 2: We force rpm into working on PASE with AIX RPM packages
  by specifying overrides --ignoreos --ignorearch --nodeps. 
> rpm -qa
  query of products installed
  Note: if you get an error about packages.rpm missing you need to
  install at least one *.ppc.rpm before query will work.
>rpm --nodeps -e gedit-2.2.1-2
 Note: This will erase/(remove) the gedit product from the system (risky).

IBM i with Internet access (happy side)
  • After setup wget/install all the interesting packages (that do something)
  • Happy is customer with IBM i on Internet, skip manual steps (dark side).
call qp2term
> cd /QOpenSys/download
> chmod +x wwwinstall.sh      <---make executable
> wwwinstall.sh GetBase       <---web get common open source 
                                  utilities/libraries 
                                  (zip, unzip, etc.)
> wwwinstall.sh help          <---help for this script
                                  (see all packages)
IBM i without Internet access (dark side)
  • After setup, manually install interesting packages (that do something)
  • IBM i NOT on Internet, be prepared for long day of manual activities.
Download a package manually to your pc  (click package links below)
-> GetBase_wget to be used with GetBase_install
-> and so on ...

Ftp all files in any package package to your IBM i (example GetBase_wget)
ftp myibmi
> bin
> cd /QOpenSys/download
> put bash-doc-3.0-1.aix5.1.ppc.rpm
  -- all files GetBase_wget below --
> put zsh-4.0.4-3.aix5.1.ppc.rpm

call qp2term
> cd /QOpenSys/download
> chmod +x wwwinstall.sh           <---make executable
> wwwinstall.sh GetBase_install    <---install only (no web get)
> wwwinstall.sh --help             <---help (see all packages)

Optional reading …

What is RPM?

The RPM Package Manager (RPM) is a powerful command line driven package management system capable of installing, uninstalling, verifying, querying, and updating computer software packages. All of the PASE/AIX Open Source binary packages featured below have been packaged by RPM and can be found at Toolbox RPMs.

PASE enable RPM (verbose install same as above)

To PASE enable RPM package download follow these steps:

  1. Follow RPMScripts to install scripts setup.sh and wwwinstall.sh
  2. Follow PackageManager to install the RPM package manager
  3. Download RPM List using wwwinstall.sh (optional view).

PASE setup.sh script will automate the steps to setting up the RPM package manager. After setting up rpm and wget with the setup.sh script, you may use the wwwinstall.sh script to install AIX RPM packages directly from your System i /QOpenSys/download directory without using a Windows or Linux PC (assuming your System i firewall allows contact with outside sites).

  • To use the wwwinstall script:
    • signon (probably with a *SECOFR profile)
    • call qp2term
    • cd /QOpenSys/download
    • wwwinstall.sh help
  • Or from batch job:
    • SBMJOB CMD(QSH CMD(‘/QOpenSys/usr/bin/sh -c “/QOpenSys/download/wwwinstall.sh getsomething” > /tmp/wwwinstall.txt 2>&1′))

wwwinstall.sh uses wget (web get), which assumes that your IBM i able/allowed to talk with the Internet world. However, “some” IBM i machines are hiding behind proxies (and such), but Google is your friend … like this article wget behind proxy

Additional tips …

  • Tip 1) You should run wwwinstall.sh GetBase because it installs low level dependencies for many other products … and … has many popular zip/unzips (various kinds), so no more long sessions of unzip on PC and FTP to IBM i.
    • wwinstall.sh rpm install AIX specific messages are expected on PASE …
      • rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv something.rpm
        mntctl() failed to return fugger size: The process does not exist.
        group system does not exist - using root
        something ##########################
        
  • Tip 2) The versions in wwwinstall.sh script are meant to target all releases V5R4+ (ancient V5R4), which, of course means RPM package versions may also be old. If you decide to try your hand at updating to newer RPM packages you may have a long day of updating all kinds of dependencies including things in GetBase and/or you may reach beyond machine IBM i PASE/AIX release level (Uff da), but welcome fellow Unix geek.

Other interesting OS items …

Manual download packages (one click at a time)

Author(s)

Tony “Ranger” Cairns - IBM i PHP / PASE