Skip to main content

When running the FME Server Installer on a CentOS system that is offline, the installer aborts with errors similar to the following:

No matching distribution found for numpy

No matching distribution found for matplotlib

scriptlet failed, exit status 1


Installing FME Offline

FME on Linux requires many third party packages. These dependencies must be satisfied when FME is installed. The easiest way to satisfy these dependencies is to install FME on a computer that is connected to the internet, allowing packages to be downloaded as needed.

It is possible however, with significant effort, to manually prepare an offline computer for FME installation.

UbuntuRedHat/CentOS


I am also installing FME Server to Linux (RedHat 7) w/o Internet access.  I can install the required Red Hat and EPEL packages, and I can install the PIP packages by downloading them to the server  1], but the installer still fails, because the RPM includes a preinstall script that calls the 'pip install' commands.  I can extract the RPM from the installer '2] and install it c3], but then I'm bypassing the setup that happens when running the installer, such as setting installation directory and admin password.

@SteveAtSafe is it possible to pass an rpm option to the installer that will get passed to the rpm command?  Since I already have the PIP packages installed I want to use the '--nopre' option to tell it to skip the RPM's preinstall script.  Barring that, can I prepare a response file for the RPM installation to get the configuration options that you get with the installer?

g1]

other-server$ mkdir /tmp/pip_fme
other-server$ pip download -d /tmp/pip_fme/ lxml numpy matplotlib Pillow bs4
fme-server$ scp -r other-server:/tmp/pip_fme /tmp/
fme-server$ pip install --no-index --find-links=file:/tmp/pip_fme lxml numpy matplotlib Pillow bs4

e2]

./fme-server-2018.1.0.1-b18528-linux-x64~el7.centos.run --tar xf ./fme-engine-2018-2018.1.0.1-18528.el7.centos.x86_64.rpm

i3]

rpm -ivh --nopre fme-engine-2018-2018.1.0.1-18528.el7.centos.x86_64.rpm

I am also installing FME Server to Linux (RedHat 7) w/o Internet access.  I can install the required Red Hat and EPEL packages, and I can install the PIP packages by downloading them to the server  1], but the installer still fails, because the RPM includes a preinstall script that calls the 'pip install' commands.  I can extract the RPM from the installer '2] and install it c3], but then I'm bypassing the setup that happens when running the installer, such as setting installation directory and admin password.

@SteveAtSafe is it possible to pass an rpm option to the installer that will get passed to the rpm command?  Since I already have the PIP packages installed I want to use the '--nopre' option to tell it to skip the RPM's preinstall script.  Barring that, can I prepare a response file for the RPM installation to get the configuration options that you get with the installer?

g1]

other-server$ mkdir /tmp/pip_fme
other-server$ pip download -d /tmp/pip_fme/ lxml numpy matplotlib Pillow bs4
fme-server$ scp -r other-server:/tmp/pip_fme /tmp/
fme-server$ pip install --no-index --find-links=file:/tmp/pip_fme lxml numpy matplotlib Pillow bs4

e2]

./fme-server-2018.1.0.1-b18528-linux-x64~el7.centos.run --tar xf ./fme-engine-2018-2018.1.0.1-18528.el7.centos.x86_64.rpm

i3]

rpm -ivh --nopre fme-engine-2018-2018.1.0.1-18528.el7.centos.x86_64.rpm
Hi @ianwbc, thanks for the description of your scenario.  I hope that we can improve on this in future releases.  (I am disappointed that pip goes the internet even when the desired packages are already installed.)

 

 

For the moment, I have two workarounds you could try.

 

 

1. Create "pip" and "pip3" files, mark them as executable, and make sure they show up earlier in your path than the real pips.  They might need a first line that says what command interpreter to invoke - ie bash, but otherwise should do nothing.  Then when you install we'll issue the pip commands and they won't do anything but will pass.

 

 

2. The pip commands are plaintext in the .rpm installer.  Using a hex editor you could try to delete those lines, or change them into something that does nothing, like an "echo" command.  I haven't tried this - it might be trickier than I hope.

 

 

Please let us know how it goes!

 


Hi @ianwbc, thanks for the description of your scenario. I hope that we can improve on this in future releases. (I am disappointed that pip goes the internet even when the desired packages are already installed.)

 

 

For the moment, I have two workarounds you could try.

 

 

1. Create "pip" and "pip3" files, mark them as executable, and make sure they show up earlier in your path than the real pips. They might need a first line that says what command interpreter to invoke - ie bash, but otherwise should do nothing. Then when you install we'll issue the pip commands and they won't do anything but will pass.

 

 

2. The pip commands are plaintext in the .rpm installer. Using a hex editor you could try to delete those lines, or change them into something that does nothing, like an "echo" command. I haven't tried this - it might be trickier than I hope.

 

 

Please let us know how it goes!

 

@ravenkopelman thanks for the quick reply. Turns out the problem was on my end. I noticed that the RPM's preinstall script called both 'pip install' and 'pip3 install' for each package, but I had only downloaded the pip packages with 'pip download'. After repeating with 'pip3 download' and then 'pip3 install' the RPM was installed without error.

Reply