I have a suggestion for the download page: a table keeping track of Nim's status with various OS / distro package managers. I'd be willing to help maintain this (to the best of my very limited ability).
Imagine a non-Windows user just discovering Nim, following the installation instructions on the official site, and going through the trouble of building from source - when their OS / distro package manager already provides the binaries installable with one simple command! :(
I think this is fairly likely to happen, because some people who've never heard of Nim before might underestimate its popularity and how many package managers already support it. The download page currently offers no reminder to check that first...
Reasons why adding this table would be a good idea:
And so, as the first step in this direction, a work-in-progress overview of what's currently available is started below. Let me know if this is a good idea, and I can provide HTML for the Web-site, that I will also do my best to help keep up-to-date.
[LINUX]
[APPLE]
[ANDROID]
[MICROSOFT]
[UNIX]
[OTHER]
(... work in progress, to be edited ...)
Thanks y'all for input. I've updated the draft in the first post with more OSes / distros / package managers, and will continue to update it as I come across more info.
There's no point yet in listing every Linux distro for which Nim is not yet available as a distro-specific package, but let me know what package managers that contain Nim (even if old version) I've missed.
This is just the first step toward making Nim as easy, quick, and convenient to install and update on any OS / distro as any other programming language! And then anyone will be just one more command away from installing anything from nimble. :D
It seems that a latest precompiled Nim package isn't available on some popular Linux distros, but what's most important is that we've got the big two Linux package managers (deb and rpm) covered.
I was able to dpkg -i nim_0.16.0-1_amd64.deb [DL] the Debian package on my Ubuntu 16.10 laptop. It did complain about libssl version, but I fixed that by installing the Debian deb. The Debian package includes nimble, nimgrep, and nimsuggest in addition to nim; and Debian's nim-doc deb also installed OK.
The RHEL package (which has to be extracted with ar x command before tar xvf) didn't contain any other bin utilities, but the nim binary seemed fine.
So the question is - do we want to tell Linux users that it's OK to use non-distro-specific Nim binaries, and to further test and document the process? Or should we continue to encourage them to build from source?
If we agree with the former, then it would be helpful if the users of not yet mentioned Linux distros would chime in on how the openSUSE's Nim .rpm or Debian's Nim .deb works for them.
The Nim wiki on GitHub might be the best candidate: https://github.com/nim-lang/Nim/wiki
This is just initial brainstorming. I'll convert the draft in the first post to HTML or Wiki syntax after Araq / the core dev team weigh in. If we go the HTML route, I can make it a nice tabbed UI where the user selects the OS category before seeing all the install options.
In addition to a table listing, perhaps this effort could result in a universal Nim installer shell script, like Rust.
In addition to a table listing, perhaps this effort could result in a universal Nim installer shell script, like Rust.
That tool is already in development and is called picknim, not public yet AFAIK. I believe @dom96 is working on it. I made a forum post a while ago asking about it, you can see it here: https://forum.nim-lang.org/t/2713
Here's an aarch64 (ARM64) build of mine:
https://www.dropbox.com/sh/radbdrpqki5pyvu/AADk0glPRyTfJx9GqRpTNo1Wa/nim-latest-aarch64.tar.xz?dl=0
That tool is already in development and is called picknim
I have renamed it to choosenim recently. :)
Didn't have as much time as I would like to work on it unfortunately. But yes, it will be very rustup-like.
Thank you for making this list @libman, I wasn't even aware so many packages are available. I'm definitely happy to include this on the website. Once the new website is ready I would love to set up a commit hook to make updating it easy as well (so changing this list will just be a PR away :)).
Nim has very few dependencies. It depends on no other ports on BSDs & Gentoo, because the base system would always include certain minimum things. Nim's Debian port depends on "libc6(>=2.14)" and "libssl1.0.2". rpm -qpR on openSUSE's package lists other things.
It would be good to clarify exactly what Nim needs: an official dependencies list, including what minimum version, and what are the consequences of not having it. It would also be good to list optional things for Gentoo USE flags and make config.
If dependencies aren't an issue, it would be pretty easy to install Nim binaries with one txz file per OS * CPU architecture combination. The main downside of that is the user won't be notified about updates.
Here's an aarch64 (ARM64) build of mine:
It is a security risk for anyone to use binaries (or source code) that don't come from an official authority. This should either be the core Nim project team or the OS/distro package managers (which may delegate specific packages to specific volunteers, but with some degree of accountability).
I think the priorities of this effort should be to:
@dom96 But picknim was much cuter. Is Nintendo now so legally trigger happy that they will sue over name similarity to Pickmin? :-)
@Libman Once choosenim is ready for prime time, maybe we don't need to rely on OS specific packages to install Nim. If choosenim becomes to Nim what rustup is to Rust or what stack is to Haskell and if choosenim will not depend on Nim itself being installed, maybe the best default installation method would be to have an OS installer package for choosenim and let choosenim take it from there. Reasons: