until 0.6 I had a file in ~/.julia/v0.6 named REQUIRE with a list of packages I want. Pkg.update would automagically look up the list and keep stuff up to date, or, actually install stuff I had added to the list. This approach is not working for me on 0.7. How do I proceed? I just use julia in a shell.
Also, I noticed there a package manager I can call up with ] – how do I get out of it (short of ctrl-C)?
I am using Pkg.update(). I should have mentioned I created ~/.julia/v0.7 with the same REQUIRE file in it (i.e. I have ~/.julia/v0.7/REQUIRE), but using Pkg followed by Pkg.update() does not install any of the packages in the list (which might be in the wrong pace?). Thanks anyway!
Oh, I see. This might be the sort of thing that is now handled by a Manifest file, but I’m not sure. A hack you could try is to make a dummy module and put the REQUIRE file in it. Then ] dev "path/to/dummy". I think that will work?
From the manual a Manifest file would need me to specify the version of each package, so it might work, but it would defeat my goal of automagically tracking and keeping stuff to the latest version. I will look into making a module – hopefully that will sort things globally and not just make a locale that needs regeneration every time. Thanks for your suggestions!
Right, but you can do ] up and upgrade anything that’s not pinned. This also modifies the Manifest (I’m pretty sure). I think the goal is that you wouldn’t usually make the Manifest by hand, but if you do ] add MyPackage it puts the current version of MyPackage into the Manifest. That doesn’t stop you from upgrading it.
I’ve thought this about a few things, but if you think about it not from the perspective of moving from the old system, but a new user starting from scratch, I think it makes a lot of sense. I’m guessing a lot of the stuff in your REQUIRE file came from doing Pkg.add at some point. The new manifest is no different, except that it preserves exact state.
If you were using git to track your REQUIRE file and jumped back 2 months, it might not have changed even as all of the packages were updated. So if you go back and try to use code you wrote 2 months ago, there’s no way to know if it will work or why it broke.
You are giving me far too much credit in terms of how much effort and knowledge I bother to put in managing julia and packages (close to 0 if I can get away with) – I am in fact one of those people with 0 interest in development (i.e. a ‘pure user’). I just want to use the language with the least amount of effort an hassle. In fact it would be simple for me to reinstall from 0 julia and packages (provided it is straightforward and requires little effort – reinstalling julia was, the packages less so) than to have to figure out how to migrate. I do not mean this to be a rant, but as much as all this stuff gives lots of power to developers it is also a non welcome complication to me (and possibly other people with my same usage goals).
I did in fact look at JuliaPro a few months ago, but I just found it too much – I just want to open a terminal, type julia and be done. In 0.6.x the way to manage packages was simple, elegant and required the least amount of hassle. I do get that development breaks stuff and that developer need a fine grained control, but I am not a developer and I do not care. I do not want to develop julia, I just want to use it. Managing it is a chore I accept, but I like small chores.
I think we’re at an awkward point for that, because the update from 0.6 to 0.7 and eventually 1.0 changed a lot of thing. Package developers and maintainers are scrambling, with different levels of success, to patch and update their packages and a lot of things are not working smoothly in 0.7. So, I understand your pain, but that phase should pass and your wish to just download and use should happen. I’m also a “pure user”, although I might have more interest than you in developing, but I believe everybody wants to get to the point you want. This is, in essence, a business and the creators do want to benefit from all their work. And they realize a seamless user experience for new users is very important.
Do not get me wrong, if there is a different way of getting what I want I am happy to learn it – what I find a bit off-putting is that I see a highly complex, fine grained, powerful and yet complicated and incomprehensible new approach that does every thing under the sun but does not give me a simple straightforward line ‘if you do not care and just want your packages do X’. At the risk of mentioning the competition, in R I just have one version, and one straightforward way to install packages with their dependencies. Is this great for developers? I would not know. Possibly not. But it is straightforward.
This is not what I did. As I said above, I had ~/.julia/v0.6/REQUIRE specifying what to add and keep up to date, and all I used to do was Pkg.update() which would read REQUIRE, keep stuff up to date and add stuff that I added to the REQUIRE list.
Every package that you once Pkg.added will be updated when you do Pkg.update(), the only change you have to make on your “workflow” is, instead of adding new packages to the REQUIRE list, you should now open a julia session and Pkg.add that pkg.