installing iCommands without root access

184 views
Skip to first unread message

tedgin...@gmail.com

unread,
Mar 2, 2021, 12:57:53 PM3/2/21
to iRODS-Chat

Hi guys.

We are upgrading to iRODS 4.2.8. Many of our Linux users don't have root access on the machines they want to us iCommands. Has anyone here created a way to install iCommands on linux as an unprivileged users?  Also, many of our Mac users want to use iCommands. Has anyone created a package to install iCommands in OS X?

Cheers,
Tony Edgin

Mauro Tridici

unread,
Mar 2, 2021, 1:21:36 PM3/2/21
to irod...@googlegroups.com
Hi Tony,

I don’t know if it can be helpful, but I read something about icommands building and non-package install:


May be that users can build icommands...


I’m not an expert, but you helped me and I’m trying to help you :)

Cheers,
Mauro

--
--
The Integrated Rule-Oriented Data System (iRODS) - https://irods.org
 
iROD-Chat: http://groups.google.com/group/iROD-Chat
---
You received this message because you are subscribed to the Google Groups "iRODS-Chat" group.
To unsubscribe from this group and stop receiving emails from it, send an email to irod-chat+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/irod-chat/2db3d1a2-3940-4cad-b6a2-b771b7803df9n%40googlegroups.com.


jamw927

unread,
Mar 2, 2021, 5:06:24 PM3/2/21
to iRODS-Chat
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:
  1. Create a new temporary directory. You can name it what you want, we will be deleting it later.
  2. Run the command "dpkg-deb -x [path to package] [path to temporary directory]"
  3. The contents of the package should now be in the temporary directory. Copy the needed subdirectories into the icommands "prefix".
  4. Delete the temporary directory you created in step 1.
To extract the CentOS packages, use the following process:
  1. Create a new temporary directory. You can name it what you want, we will be deleting it later.
  2. From within your temporary folder, run the command "rpm2cpio [path to package] | cpio -idm"
  3. The contents of the package should now be in the temporary directory. Copy the needed subdirectories into the icommands "prefix".
  4. 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

Tony Edgin

unread,
Mar 2, 2021, 6:16:37 PM3/2/21
to irod...@googlegroups.com
Mauro, thank you!

Markus, thanks for the detailed instructions!  

Reply all
Reply to author
Forward
0 new messages