Installation errors on Red Hat 8
I'm trying to install higlass-server on a Red Hat 8 system.
Steps :
- I cloned the most recent version of this repo (e.g. cbfe79fe)
- Installed Miniconda
- Sourced /path/to/miniconda/etc/profile.d/conda.sh
- Ran
conda env create -f environment.yml
It failed with about 4000 lines of output (see attached).
The first 'useful' error I see is something like this :
gcc: _configtest.c
_configtest.c:1:5: warning: conflicting types for built-in function ‘exp’ [-Wbuiltin-declaration-mismatch]
int exp (void);
^~~
gcc -pthread -B /export/apps/opt/higlass-server/1.14.8/en
[higlass-server-issue.txt](https://github.com/higlass/higlass-server/files/8893075/higlass-server-issue.txt)
vs/higlass-server/compiler_compat _configtest.o -o _configtest
/export/apps/opt/higlass-server/1.14.8/envs/higlass-server/compiler_compat/ld: _configtest.o: in function `main':
_configtest.c:(.text.startup+0x5): undefined reference to `exp'
collect2: error: ld returned 1 exit status
failure.
Question :
- What suggestions do you have in resolving this error?
Oh my. That's going to be a doozy to figure out.
Before starting serious debugging, may I ask why you're trying to install higlass server rather than using the higlass docker container or higlass-manage?
Great question. I'm on an HPC system, so Docker isn't applicable because I don't want to have to spawn Docker instances every time a user wants to run this. Instead of using Docker, I used Singularity. Now I do have some real questions about how this code will work in our environment.
Anyhow, I converted docker-context/Dockerfile to Singularity using spython. I then ended up having to make a few edits to the Singularity file (e.g. mkdir /higlass-server before the pip install -r requirements.txt).
At the end of the build, when it is setting up a conda environment, I got :
ERROR: Could not find a version that satisfies the requirement Pillow>=9.0.0 (from versions: 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 1.7.7, 1.7.8, 2.0.0, 2.1.0, 2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.2, 2.4.0, 2.5.0, 2.5.1, 2.5.2, 2.5.3, 2.6.0, 2.6.1, 2.6.2, 2.7.0, 2.8.0, 2.8.1, 2.8.2, 2.9.0, 3.0.0, 3.1.0rc1, 3.1.0, 3.1.1, 3.1.2, 3.2.0, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.4.0, 3.4.1, 3.4.2, 4.0.0, 4.1.0, 4.1.1, 4.2.0, 4.2.1, 4.3.0, 5.0.0, 5.1.0, 5.2.0, 5.3.0, 5.4.0, 5.4.1, 6.0.0, 6.1.0, 6.2.0, 6.2.1, 6.2.2, 7.0.0, 7.1.0, 7.1.1, 7.1.2, 7.2.0, 8.0.0, 8.0.1, 8.1.0, 8.1.1, 8.1.2, 8.2.0, 8.3.0, 8.3.1, 8.3.2, 8.4.0)
ERROR: No matching distribution found for Pillow>=9.0.0
FATAL: While performing build: while running engine: exit status 1
I sort of assumed that there must have been some conflicting python library versions (which I guess would probably persist going the conda route). I tried both and they both failed, I figured I'd only ask about one to not make the discussion confusing. Attached is the output from my Singularity / docker install attempt and my modified Singularity (added '.txt' suffix so github would accept it) file.
Thanks for the explanation! That makes sense.
Is there a way to bump the Python version? It looks like it's downgraded to 3.6 in the log file.
Pillow>=9.0.0 definitely exists: https://pypi.org/project/Pillow/
Also, beware that that Dockerfile may be out of date. You may be better off using the one from this repo: https://github.com/higlass/higlass-docker/
That will give you the entire higlass distribution as a container rather than just the server portion.
Thanks for the information. I managed to build (at least it completed without error) a singularity image from dockerhub, via
singularity build higlass.sif docker://higlass/higlass-docker:latest
It looks like there should be a higlass-manage command within the image, but I can't seem to find it within my singularity image.
Question :
- What is the path within the image to
higlass-manage? I see a path /home/higlass/projects/higlass-server/, but it doesn't look like it is there.
higlass-manage is a separate package that interacts with the Docker container. You can find it here: https://github.com/higlass/higlass-manage/
Could I install higlass-manage within the Docker container, or would that be ill advised?
I don't see any reason why you couldn't.