Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nextflow installation improvements #4380

Open
benjaminbrumbaugh opened this issue Oct 5, 2023 · 9 comments
Open

Nextflow installation improvements #4380

benjaminbrumbaugh opened this issue Oct 5, 2023 · 9 comments
Labels

Comments

@benjaminbrumbaugh
Copy link

Five years ago there was a closed bug that was asking for Nextflow to be incorporated into Homebrew. After watching my team of mixed skillsets, scientists and engineers, struggle though a series of installation issues, I think it might be worthwhile to revisit this.

Nextflow has dependencies, and some of them are unusual like specific implementations of OpenJDK. A package manager will manage these dependencies, giving them executable access, and linking them.

The current installation strategy is to use wget (not installed by default on MacOS) to download a bash script with suppressed output, which runs a Nextflow installer script with debug messaging turned off. When this runs, the console hangs, and because of underlying bugs with other dependencies (Capsule), it can never return — or print anything. I think this is not the right installation strategy for Nextflow anymore. Folks that tried using SDKMAN! (also installed with arbitrary downloaded code execution) ran into linking issues where their PATH didn't have Java linked up or JAVA_HOME set.

I think brew install nextflow yum install nextflow and apt-get install nextflow would all be very useful depending on the platforms folks are working on. If that's too much, the folks on non-mac unix variants probably have the required skillset to work around the issues they are likely to run into, but scientists working on MacBooks are less likely to be able to navigate this. So if just Homebrew was supported, I think that would make a huge difference.

Thank you,
Ben

@bentsherman
Copy link
Member

We are looking into ways to improve the installation process, see #2028 and #2951

@benjaminbrumbaugh
Copy link
Author

Thank you @bentsherman. Is it possible to keep this perspective rather than closing this as a duplicate?

@bentsherman
Copy link
Member

Sure

@pditommaso
Copy link
Member

Adding Nextflow to Homebrew should be relatively easy. We would welcome this if anybody in the community is willing to maintain it.

@stevekm
Copy link
Contributor

stevekm commented Oct 13, 2023

fwiw currently I use conda for this, my general purpose Nextflow conda env recipe is here, but I also wish the process could be a little easier. At least in the latest conda Nextflow package nextflow=23.04.1 it seems like the JDK issues might be resolved enough for it to be more reliable than previous conda packages might have been

also worth noting that there are docs https://www.nextflow.io/docs/latest/getstarted.html#requirements about how to install Nextflow best, but honestly I am not sure how realistic it is to expect users to install yet another package manager (sdk) just for the sake of installing Nextflow.

@benjaminbrumbaugh
Copy link
Author

SDKMAN! Was much disappoint. It's a tenuous ask if it were awesome, but I'd be won over. It's not that awesome though (currently, anyway).

Conda is an interesting thought. The issue there is that Conda never made the transition from a python package manger to the python package manager. The PIP venv thing has not been super great, and containerization somewhat ate its lunch on top of that. Last time I did a Conda project, sometime early last year, I remember being kind of annoyed by it. Perhaps one of the sub-variants are more streamlined. I can't recall what it was that stopped it from being everything I hoped for, but that doesn't really matter. Bundling with Conda puts Nextflow into a position of forcing another package manager installation, which might be better to avoid. It also makes Nextflow opinionated on python package management and makes it harder to integrate with some existing python projects, including existing Nextflow projects.

It's a good thought and I'm not saying it's the wrong direction, but it has its downsides.

@bentsherman
Copy link
Member

What issues have you had with sdkman? It's very lightweight, and in my experience it's the most reliable way to install java across platforms. I would use the nextflow conda package since I already use conda, but a lot of people have issues with the java distribution in conda.

@benjaminbrumbaugh
Copy link
Author

benjaminbrumbaugh commented Oct 14, 2023

I wish I had better feedback. I didn't actually run into any issues with SDKMAN! on my machine. I pulled it up just now and it still is working fine for me. I can't quite recall what issues others were running into. I remember folks having partially installed versions of Java without a $JAVA_HOME or java --version being correct. It's possible folks skipped the source command instruction that followed the installation and then ran into issues.

However, I don't love the wget arbitrary web code execution thing, maybe with a hash validation it could be better, but it's not uncommon for package managers. Some folks are currently running particularly persnickety Linux distros, like CentOS, and perhaps they ran into issues. CentOS users always run into issues, I don't think Nextflow should be overly concerned with that distro. If you run CentOS (please don't) you're constantly working around these kind of things and you probably have built the chops to resolve the issues you'll have.

I do find the theme grating, and I'm worried that means I'm becoming an old man. I've been out of the Java world for a couple of years, and the splintering of Java into a ton of distros after Oracle started the squeeze (as is their business model—do not get in bed with Oracle ever. Ever.), maybe my opinion on not needing a specialized package manager is outdated. Am I an old man shouting into the wind? No. It's the children who are wrong.

Copy link

stale bot commented Mar 17, 2024

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Mar 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants