-
Notifications
You must be signed in to change notification settings - Fork 89
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
How to distribute to Linux and OSX? #84
Comments
Yeah, I like that approach! Rust also does that, so we might also be able to copy from them. And with the rewrite in Rust we will have just two very small binaries and that should actually be enough to get started. |
So I think where we are landing now is this: juliaup itself can be distributed either a) by a third party deployment tool or b) standalone. The currently implemented third party option is the Windows Store, but down the road we should also try to get it into homebrew for Mac, and maybe eventually even the various native Linux distribution options. I'd still like The second option is standalone. In that case the user starts out with the kind of shell command @heetbeet mentioned above. The setup flow in that case would be this:
One question is whether step 5 should really be part of For the standalone scenario we would then also have commands |
I have created a |
Oh, and one other major question: how do we "brand" ourselves in third party stores? In the Windows Store we are just We might need a transition phase, though, where we register as |
Couldn't juliaup just update itself? |
So in the case of a standalone install, this would do that. Or were you thinking auto-update itself? But when distributed via a third-party mechanism, then I'm not so sure whether we want it to self-update, right? Certainly for the Windows Store that won't work (because it doesn't allow us to change the files it distributes), and presumably other things like brew, conda etc would also not like that? |
I am not sure. I think with |
I've been playing around to see how a sh installer (à la Anaconda) would work out: https://github.com/heetbeet/proof-of-concept-juliaup-installer/releases/tag/0.0.1 This is still a work-in-progress, but If we want to go this route for user-level installers (i.e. doesn't require sudo), it wouldn't need much more work to get something stable going. The installer can scale all the way from
It can be made to work on OSX and Linux. Let me know if this is something I should continue to work on or if an alternative is preferred to this. |
Fantastic! I think generally we probably don't need the I think one benefit of option 1 would be that we could later easier add support for things like the "release preview" channel for juliaup itself. For example I could imagine an env variable (or command line argument) to the shell script that installs the release preview version of juliaup, rather than the release version. So I think I'm probably tending towards option 1 right now, but maybe we could keep the other options around if we change our mind later? I think Mac and Linux is perfectly fine. I see that the shell script right now has the logic to create the symlinks. I'm wondering whether it wouldn't be better to put that into Oh, and the reason it is not picking up the |
After some thought, I think you are correct - it's best to stick with (1.) and possibly never support an offline wizard/q&a installer, or do it only when all the other installation features are done. My own thinking
I think I'm going to fork the rustup-init.sh installer and work from there. It seems like there is quite a bit of tribal knowledge integrated into that installer. Before we set up a proper release channel, I'll use https://api.github.com/repos/JuliaLang/juliaup/releases/latest and https://github.com/JuliaLang/juliaup/releases/latest and try to match the "target triple" via something like https://gist.github.com/steinwaywhw/a4cd19cda655b8249d908261a62687f8#gistcomment-3705619 Symlinks: Yes lets make it juliaup's problem. This is for doing a symlink for Add to PATH: I think this is also something Juliaup can help the user with. On linux it can ask the user if they want to symlink BundledJulia: Let's then rather not open this can of worms... and let juliaup always download a brand new julia online. What I can action on:
What Juliaup can action on:
|
To which location do we want to install juliaup? Prior art: rustup installs to |
Perhaps Edit: Oh, I see that's where the executables are put. |
@KristofferC I also thought about a location within But, with that said, it might not be a strong enough reason not to just add it to the currently evaluated |
That makes sense. In that case, it is maybe best to have it as its own thing "above" |
I think the most consistent option would probably be There is another benefit to that: for scenarios where juliaup is distributed by a platform deployment tool (like the Windows Store, or maybe homebrew down the road etc.), the |
Yes, I got the same impression. It seemed to cover corner cases that I certainly would have never thought of :)
Ah, I didn't think about this case... The idea with the
Is there a similar user specific location on Linux like |
I'm making really good headway on this. The juliaup version of rustup can already download os-specific binaries and extract it to Re: julia.bat: Batch scripts screw around a bit with the flow of a program, if you press Ctrl-C it asks for "Terminate batch job (Y/N)”, which is really annoying. (I have a few .bat heavy workflows) Re: /usr/bin: I don't think there is a user-level directory like |
Added a windows version to the scripts
We can then do a similar one-liner installation as rustup does Or the user can download the script and run it natively. Proof of concept: Windows: Powershell -NoP -C iex (New-Object System.Net.WebClient).DownloadString('https://github.com/heetbeet/rustup/raw/master/juliaup-init.cmd') Linux / OSX / Cygwin / MinGW: curl --proto '=https' --tlsv1.2 -sSf -L https://github.com/heetbeet/rustup/raw/master/juliaup-init.sh | sh When the script is run with args, I forward those args to We should set up some kind of contract between the installer and juliaup in order for the installer to construct a correct help menu, and for |
now works. Still very experimental, but hey :) And then @heetbeet do we actually need the |
It might not be necessary, I copied it from rust. It might be there to cater for some corner case, but I have no idea what that would be |
I think I'll close this issue. In principle it is clear now how that would work and that is implemented. There is still a lot of small things to fix, but we can track that in new issues. |
Maybe we should initially bypass the Linux bureaucracy by creating an
sh
installer similar to Anaconda.Here is the Anaconda installer header from
curl -r 0-26557 https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
:Anaconda3-2021.05-Linux-x86_64.sh.zip
Here is an initial attempt into making it into something a bit more generic:
https://github.com/heetbeet/BashTemplateInstaller/blob/main/bash_installer.sh
This header seems to work for both Linux and OSX. I'm not sure though how the copyright will works, if it's a problem, it's easy enough to write something from scratch.
The text was updated successfully, but these errors were encountered: