Good afternoon!
I'm actually working on proper tarball packaging for prebuilt icommands right now. You'll be able to extract it wherever you want and run the icommands inside without much fuss. The plan right now is for this to land in 4.2.9, but once I'm done, I can create a tarball for 4.2.8, if you still need it.
If you can't wait, and need the icommands now, your best option would probably be to manually extract the packages for your distribution and set LD_LIBRARY_PATH. I've prepared a guide for you to help:
I believe this is the set of packages you will need to extract:
- irods-icommands
- irods-runtime
- irods-externals-avro1.9.0-0
- irods-externals-boost1.67.0-0
- irods-externals-clang-runtime6.0-0
- irods-externals-fmt6.1.2-1
- irods-externals-zeromq4-14.1.6-0
Here's where you can download the packages, depending on the target distro:
I think newer versions of Ubuntu should be able to use the bionic packages for this, but I can't guarantee it.
Create a new directory. You can name it whatever you want. This will be the new icommands "prefix", and if you intend to create an archive to give to your users, this is the folder you will create the archive from.
Copy the following directories to the new directory, merging as needed. You shouldn't need to overwrite anything at any point. There are symlinks involved, so you'll probably want to do this on a linux machine.
- The usr/lib subdirectory from the irods-runtime package.
- The usr/bin subdirectory from the irods-icommands package
- The opt/irods-externals/avro1.9.0-0/lib subdirectory from the irods-externals-avro1.9.0-0 package
- The opt/irods-externals/boost1.67.0-0/lib subdirectory from the irods-externals-boost1.67.0-0 package
- The opt/irods-externals/clang-runtime6.0-0/lib subdirectory from the irods-externals-clang-runtime6.0-0 package
- The opt/irods-externals/fmt6.1.2-1/lib subdirectory from the irods-externals-fmt6.1.2-1 package
- The opt/irods-externals/zeromq4-14.1.6-0/lib subdirectory from the irods-externals-zeromq4-14.1.6-0 package
You should end up with two folders in your new icommands "prefix": bin and lib.
To extract the Ubuntu packages (.deb files), use the following process:
- Create a new temporary directory. You can name it what you want, we will be deleting it later.
- Run the command "dpkg-deb -x [path to package] [path to temporary directory]"
- The contents of the package should now be in the temporary directory. Copy the needed subdirectories into the icommands "prefix".
- Delete the temporary directory you created in step 1.
To extract the CentOS packages, use the following process:
- Create a new temporary directory. You can name it what you want, we will be deleting it later.
- From within your temporary folder, run the command "rpm2cpio [path to package] | cpio -idm"
- The contents of the package should now be in the temporary
directory. Copy the needed subdirectories into the icommands "prefix".
- Delete the temporary directory you created in step 1.
When running the icommands, you will need to set the LD_LIBRARY_PATH environment variable. Prepend "[icommands prefix]/lib:" to any existing value. If there is no existing value, it can simply be set to "[icommands prefix]/lib". The path to the icommands prefix needs to be the full path here.
There are many ways to do this, but these are probably the easiest:
- In most shells (bash, ash, dash, zsh, etc), you can prepend 'LD_LIBRARY_PATH="[icommands prefix]/lib:$LD_LIBRARY_PATH"' to any icommand invocation.
- In POSIX shells (bash, dash, etc), you can run the command 'export LD_LIBRARY_PATH="[icommands prefix]/lib:$LD_LIBRARY_PATH"' before running any icommands. (This one might cause problems if your system has a newer version of libc++ on it.)
Hope this helps,
Markus Kitsinger