Scoop: Current state of installing specific versions?

Created on 29 Jan 2019  ·  6Comments  ·  Source: lukesampson/scoop

I am just getting started with using scoop and I think I am in love ❤️

One thing that I found missing was a way to install specific versions of programs.

There is a documented "workaround" with another bucket that works for ruby and python: https://github.com/lukesampson/scoop/wiki/Switching-Ruby-and-Python-Versions But this is also only for major versions and only works for these two special cases.

Then I found https://github.com/lukesampson/scoop/pull/1332 which seems to implement parts of what I was looking for - but closes with "Lets leave this as a bit of a hidden feature for a while. I'll write some docs for it soon enough" (in 2017).
There are other issues that mention this syntax, its possible problems and its missing documentation: https://github.com/lukesampson/scoop/issues/2254 #1780 And here even is an open issue to document this behavior: #2141

  • Did I mess up and miss the excellent documentation on this feature?
  • Is the <program>@<version> syntax considered stable and usable now?
  • Are PRs and wiki edits welcome to document the current behavior?
  • Is there a way to get older version numbers via scoop?

Most helpful comment

There is also another issue. Every manifest that uses custom capture groups will not work. (Like $matchVersion, $matchHead, $matchMyAwesomeCaptureGroup`)
See aria2.json or brotli.json

All 6 comments

Ok, one "problem" (feature?) seems to be that you generally can not install an older version over a newer version:

PS C:\Users\Jan> scoop install [email protected]
WARN  'ruby' (2.6.0-1) is already installed.
Use 'scoop update ruby' to install a new version.

Another problem seems to be when the current manifest config does not match the path of older download URLs as it was recently changed: https://github.com/lukesampson/scoop/commit/91d9723b08e86a2db4f94e6164b7fa598f42d49c

PS C:\Users\Jan> scoop install [email protected]
WARN  Given version (2.5.3-1) does not match manifest (2.6.0-1)
WARN  Attempting to generate manifest for 'ruby' (2.5.3-1)
Autoupdating ruby
Downloading rubyinstaller-2.5.3-1-x86.7z to compute hashes!
The request was aborted: The connection was closed unexpectedly.
URL https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.3-1/rubyinstaller-2.5.3-1-x86.7z is not valid
Could not find hash!
Could not install [email protected]

New generated path is https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.3-1/rubyinstaller-2.5.3-1-x86.7z, correct one would have been https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.3-1/rubyinstaller-2.5.3-1-x86.7z

(Workaround (?) here was to clone the old manifest, and publish it as a gist that I can use to install: https://gist.github.com/janpio/40e014d0ae31215b4bab2b5bbe5a69e8/3500373c9484ca8c3c89aac4998cda333451a555 + https://gist.githubusercontent.com/janpio/40e014d0ae31215b4bab2b5bbe5a69e8/raw/3500373c9484ca8c3c89aac4998cda333451a555/scoop_ruby_20_to_25.json)

There is also another issue. Every manifest that uses custom capture groups will not work. (Like $matchVersion, $matchHead, $matchMyAwesomeCaptureGroup`)
See aria2.json or brotli.json

With chrome getting:

current $ scoop install [email protected]
WARN Given version (73.0.3683.68) does not match manifest (74.0.3729.131)
WARN Attempting to generate manifest for 'chrome' (73.0.3683.68)
Autoupdating chrome
DEBUG[1557912977] $substitutions (hashtable) -> C:Usersmescoopappsscoopcurrentlibautoupdate.ps1:149:5
DEBUG[1557912977] $substitutions.$buildVersion 68
DEBUG[1557912977] $substitutions.$baseurl https://redirector.gvt1.com/edgedl/release2/chrome/$match32_73.0.3683.68
DEBUG[1557912977] $substitutions.$dashVersion 73-0-3683-68
DEBUG[1557912977] $substitutions.$url https://redirector.gvt1.com/edgedl/release2/chrome/$match32_73.0.3683.68/73.0.3683.68_ch…
DEBUG[1557912977] $substitutions.$matchHead 73.0.3683
DEBUG[1557912977] $substitutions.$preReleaseVersion 73.0.3683.68
DEBUG[1557912977] $substitutions.$majorVersion 73
DEBUG[1557912977] $substitutions.$basename 73.0.3683.68_chrome_installer.exe
DEBUG[1557912977] $substitutions.$patchVersion 3683
DEBUG[1557912977] $substitutions.$cleanVersion 730368368
DEBUG[1557912977] $substitutions.$minorVersion 0
DEBUG[1557912977] $substitutions.$version 73.0.3683.68
DEBUG[1557912977] $substitutions.$underscoreVersion 73_0_3683_68
DEBUG[1557912977] $substitutions.$matchTail .68
DEBUG[1557912977] $hashfile_url = $null -> C:Usersmescoopappsscoopcurrentlibautoupdate.ps1:152:5
Downloading 73.0.3683.68_chrome_installer.exe to compute hashes!
The remote server returned an error: (404) Not Found.
URL https://redirector.gvt1.com/edgedl/release2/chrome/$match32_73.0.3683.68/73.0.3683.68_chrome_installer.exe#/cosi.7z is not valid
Could not find hash!
Could not install [email protected]

@janpio, it seems just like the checksum ($match32 part) is missing there as well as @r15ch13 pointed out already. Does it make sense as a workaround to factor these out from the manifest? Must confess I am a noobie here.

I have a workaround described here until the match-issue is sorted out.
Applies to chrome only.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

mpro7 picture mpro7  ·  3Comments

roysubs picture roysubs  ·  3Comments

yetangye picture yetangye  ·  3Comments

ShivanshuKantPrasad picture ShivanshuKantPrasad  ·  3Comments

brunovieira97 picture brunovieira97  ·  3Comments