ScoopInstaller / Scoop

A command-line installer for Windows.
https://scoop.sh
Other
21.23k stars 1.41k forks source link

Add option to update all packages #897

Closed beruic closed 8 years ago

beruic commented 8 years ago

I don't understand why I cannot update all my packages in one go.

I suggest scoop update --all or alternatively scoop update -a, which should maybe start by updating scoop it self, but I realize this can lead to issues.

deevus commented 8 years ago

You can. Use scoop update *

cenobitedk commented 6 years ago

scoop update * doesn't work in Git Bash. The * makes scoop look at the contents of the current folder.

E.g.:

$ scoop update *
ERROR 'Factory' isn't installed.
ERROR 'Infrastructure' isn't installed.
ERROR 'node' isn't installed.
ERROR 'Site' isn't installed.
ERROR 'Sitecore' isn't installed.
ERROR 'Tooling' isn't installed.
ERROR 'Upgrade' isn't installed.
Calinou commented 6 years ago

@cenobitedk Does it work if you escape the * character like this?

scoop update '*'
# Or:
scoop update "*"
cenobitedk commented 6 years ago

Yes, both works as expected :)

rasa commented 6 years ago

scoop update \* also works.

pedzed commented 5 years ago

@cenobitedk Does it work if you escape the * character like this?

scoop update '*'
# Or:
scoop update "*"

Using Git Bash (Windows 10 64-Bit), this works. Does it really have to be this cryptic? Do people seriously need to guess and/or search online how to update everything?

I suggest reopening the issue and adding a proper solution to this. I like the idea of -A -a --all, but what would be better in my opinion is:

scoop update # fetch new version information
scoop upgrade scoop # upgrade Scoop itself (or any other given package)
scoop upgrade # upgrade all packages including Scoop

On pretty much every package manager, "update" is not understood as really upgrading a package, but rather fetching package information. Is it an option to change to this behavior next major release?

Awesome project by the way. I love it.

chawyehsu commented 5 years ago

@pedzed

λ scoop alias add upgrade "scoop update *"
λ scoop update
λ scoop upgrade

So not everyone uses --all or *, I can see someone uses all in https://github.com/lukesampson/scoop/issues/1745, we can't satisfy all people, thus the alias feature is what you need.

pedzed commented 5 years ago

@h404bi the thing is that it just doesn't work properly, as the people above me mention. You need to escape the asterisk, which is just bad: an asterisk in a CLI should be avoided.

chawyehsu commented 5 years ago

20190610092640

I can't reproduce what you said doesn't work properly. Just add an alias, please have a try.

Calinou commented 5 years ago

What about scoop alias add upgrade "scoop update '*'"? (Notice the escaped *.)

kid1412621 commented 5 years ago

why cannot I just use scoop update ?

qm3ster commented 4 years ago

We just need to stop update upgrading packages:

  1. update -> update manifest
  2. upgrade <package>... -> upgrade listed packages
  3. upgrade -> upgrade all packages
rasa commented 4 years ago

We just need to stop update upgrading packages:

  1. update -> update package manifests
  2. upgrade <package>... -> upgrade the local installation of the listed packages
  3. upgrade -> upgrade the local installation of all packages (installed without the global (-g) option)

This makes sense to me, as they really are two separate functions. It’s also how apt-get works. As 3. only upgrades non-global (local) packages, we could even add;

  1. upgrade-all -> upgrade all locally and globally installed packages
heelrayner commented 2 years ago

scoop update * doesn't work in Git Bash. The * makes scoop look at the contents of the current folder.

E.g.:

$ scoop update *
ERROR 'Factory' isn't installed.
ERROR 'Infrastructure' isn't installed.
ERROR 'node' isn't installed.
ERROR 'Site' isn't installed.
ERROR 'Sitecore' isn't installed.
ERROR 'Tooling' isn't installed.
ERROR 'Upgrade' isn't installed.

I would recommend using Windows Terminal these days

rashil2000 commented 2 years ago

Windows Terminal has nothing to do with it. They're talking about the shell, which is bash.

heelrayner commented 2 years ago

I should have said power shell. Which would be the shell ;-) `PS C:\Users\heelr> scoop update * Updating Scoop... Updating 'extras' bucket...

qm3ster commented 2 years ago

It's really weird to use a shell expansion character for this, considering scoop doesn't actually use wildcards. image I feel like adding a --all flag (and maybe deprecating * specifier) would be healthy, bringing the behavior of scoop update and winget upgrade closer.

Also scoop update <packagename> * upgrades everything, while winget upgrade <packagename> --all only upgrades <packagename>, but let's be fair, no one should write either of those :v

Again, my preference lays in separating update (update repository) from upgrade (install packages), but that's clearly not the way it's going to happen on Windows, so this is the next best thing.

If nothing is planned for scoop upgrade consider making it an alias to scoop update as well.