posit-dev / positron

Positron, a next-generation data science IDE
https://positron.posit.co
Other
2.85k stars 91 forks source link

Create an interim updater script for public beta #3859

Closed coatless closed 4 months ago

coatless commented 5 months ago

With Betas now being built by a CRON job, the open beta participants are likely to be on outdated versions more quickly.

Would it be possible to either:

  1. add in an auto update check on open; or,
  2. make available the beta updater script?

Though this will likely get better in the next few days when conda-forge and chocolatey gain recipes for positron. (Brew just got one about a day or two back.)

jmcphers commented 5 months ago

We're tracking auto-updates in #1837. You can find an early version of a beta update script for macOS here: https://gist.github.com/jmcphers/ee24cfc5fce0a65afd2902db5173dd2f

but note that it requests a PAT which is not necessary any longer since the repository is public. We'll use this issue to track adding an interim beta updater script (auto-updates will probably take a while to sort out).

juliasilge commented 4 months ago

I created a new update script for macOS here: https://gist.github.com/juliasilge/a74883871e98afe67b01cd9125b104c7

To use this, you will want to first download the update script and mark it executable (do this one time):

curl https://gist.githubusercontent.com/juliasilge/a74883871e98afe67b01cd9125b104c7/raw/14e447e9fa0aaa858050720f177ed011b059a115/update-positron.sh -o update-positron.sh

chmod u+x update-positron.sh

(Optionally, put the script somewhere on your $PATH so you can run it from any directory.)

Then you can check for updates, download, and install via:

./update-positron.sh 

I'll see if I can update the old Windows script we had (or convince Christophe to do it for me), and then get this into the wiki.

MohamedElashri commented 4 months ago

@juliasilge @jmcphers

Thanks for providing the update script

The problem with the two version of the script is that it does not compare versions (latest vs currently installed) so if I run it with the latest version already. It will still download and install the latest from GitHub release. It is hard though to actually check versions because inside /Applications/Positron.app/Contents/Info.plist the version entries CFBundleShortVersionStrin and CFBundleVersion both refer to Code - OSS Version and not positron itself.

juliasilge commented 4 months ago

Yep @MohamedElashri, but we probably will not make further improvements to this method of installation and instead focus on #1837.

cderv commented 4 months ago

Here are Windows options for getting latest version easily, and stay up to date with releases

Scoop Package Manager

https://scoop.sh/

Scoop have central buckets of manifest but also decentralized version. Positron is now available in this specific bucket (maintained by me) :

https://github.com/cderv/r-bucket#positron

# Add bucket (only need to do this once)
scoop bucket add r-bucket https://github.com/cderv/r-bucket.git

# install 
scoop install positron

# update
scoop update positron

Once Positron will have more stable release, I'll probably do two manifest to have a

scoop update positron-daily

and the other one moving less often

Winget Package Manager

https://learn.microsoft.com/en-us/windows/package-manager/

# install
winget install --id Posit.Positron
# upgrade 
winget upgrade --id Posit.Positron

This is community maintained, with automated PR to the central manifest repository: https://github.com/microsoft/winget-pkgs/tree/master/manifests/p/Posit/Positron

Chocolatey

Not available yet. We have it for Quarto and TinyTeX so if this is of interest @juliasilge I can help set this up. I will be better when there will be more stable version - Monthly release seems a good pace for it.

juliasilge commented 4 months ago

Thank you SO MUCH @cderv! We will wait on further updates for when we move to monthly prereleases.

I added this info to the wiki here: https://github.com/posit-dev/positron/wiki/Updating-Positron

testlabauto commented 4 months ago

Verified that the OSX script from Julia works. Will ask @jonvanausdeln to look at Windows.

jonvanausdeln commented 4 months ago

I have issues with both the Windows methods:

Scoop

Please try again or create a new issue by using the following link and paste your console output: https://github.com/cderv/r-bucket/issues/new?title=positron%402024.07.0-81%3a+decompress+error

_*note - I did try again as suggested_

* I manually installed an older version of Positron (2020.07.0-59) and tried to upgrade:

C:\Users\JonVanausdeln> scoop update positron ERROR 'positron' isn't installed.

I _assume_ this is because it wasn't originally installed with scoop

### Winget
* I did a clean install, and it installed a 2 day old version (2024.07.0-67) instead of current 2024.07.0-81.  I checked the [central repository manifest](https://github.com/microsoft/winget-pkgs/tree/master/manifests/p/Posit/Positron), and it shows 20224.07.0-81 correctly.

* With a previous version of Positron installed (2024.0.7-59), I tried to upgrade

C:\Users\JonVanausdeln> winget upgrade --id Posit.Positron No available upgrade found. No newer package versions are available from the configured sources.


I'm guessing it is perhaps only checking the major/minor versions when deciding what is upgrade worthy? 

My biggest concern is that the we haven't really spec'd out what is the right upgrade paths, etc.  And all these disparate methods have different results, which could be very confusing to users.
juliasilge commented 4 months ago

Hmmmm, I agree that this will be confusing @jonvanausdeln. What would you suggest as a good next step? Some questions include:

cderv commented 4 months ago

Let me try to add more context to all this as a regular windows user.

Extracting Positron-2024.07.0-81-Setup.exe ... ERROR Exit code was 1!

Issue will scoop will be dealt with. I'll fix that, and maybe we really need to wait for

I tried a first working version the other day, and I'll see if I can fix it with current behavior. Maybe the bundle have changed somehow.

I manually installed an older version of Positron (2020.07.0-59) and tried to upgrade:

Scoop can manage only version it has installed. You can't use the tool to update another externally installed version. That is not how it works. Scoop does user-own installation by default in its own folder structure.

I did a clean install, and it installed a 2 day old version (2024.07.0-67) instead of current 2024.07.0-81. I checked the central repository manifest, and it shows 20224.07.0-81 correctly. (...) I'm guessing it is perhaps only checking the major/minor versions when deciding what is upgrade worthy?

Regarding winget, the update to manifest for 2024.07.0-81 was merged only 3 hours ago. (https://github.com/microsoft/winget-pkgs/pull/163808). I don't know how winget gets its update from central repo, but the installation you tried was just happening right after they merged. Maybe there is a cache mechanism or something. Or just a schedule workflow to sync up the github repo with manifest to a central repo in different servers. I don't know. When I tried on my end right now, I get the correct version.

This is just a bad timing problem IMO.

In all case, they will be delay between Github release on this repo, and published version on those package manager repo.

My biggest concern is that the we haven't really spec'd out what is the right upgrade paths, etc. And all these disparate methods have different results, which could be very confusing to users.

Those are community contributed solution to package managers. The winget one, and the scoop one will still exists. As a regular windows user, this is quite useful to have those available.

Just remove the advice around scoop and winget altogether and not offer a Windows short term option

You can undocument them if you want, but in my opinion there has no real issue.

Is a powershell script a better short term option because it's more clear what it does?

Powershell script is not really best option IMO. It seems more artisanal to me than those existing solutions. I can still provide it, but installing a powershell module is quite advances, and those script currently don't check version. The version I had was very basic to install version on top of existing always. Not that efficient.

cderv commented 4 months ago

Issue will scoop will be dealt with.

FWIW I opened https://github.com/cderv/r-bucket/issues/29 to discuss it, but for now, no problem on my end. Not reproducible for me - this means both methods are working correctly for me (on windows hardware machine on Windows 11).

I don't think they should be removed from the doc, but you can say they are community maintained and issue should be reported in the corresponding repo.

juliasilge commented 4 months ago

@jonvanausdeln do you mind trying again for the scoop and winget installation methods?

jonvanausdeln commented 4 months ago

Sure! I just tried both again and get the exact same results.

I also uploaded the log for scoop in https://github.com/cderv/r-bucket/issues/29

jonvanausdeln commented 4 months ago

My winget cache must have updated.. a clean install now gets the latest -81 build

cderv commented 4 months ago

I looked to understand this cache thing for winget, and FYI the source are

> winget source list
Nom     Argument                                      Contenu explicite
-----------------------------------------------------------------------
msstore https://storeedgefd.dsx.mp.microsoft.com/v9.0 false
winget  https://cdn.winget.microsoft.com/cache        false

and there is a winget source update command. I didn't find how often it was used to update.

For scoop, let's discuss in the other issue. Though, I did not have any other report. @juliasilge I am using Scoop myself for positron update and it is working fine !

jonvanausdeln commented 4 months ago

I'm fine closing this issue, and adding to any documentation we have suggesting these methods for updating that they are not maintained by Posit and your results may vary.

juliasilge commented 4 months ago

Sounds good! I updated the language at https://github.com/posit-dev/positron/wiki/Updating-Positron#windows 🙌