ScoopInstaller / Scoop

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

Linux and macOS support in PowerShell 6 #2137

Open leonyu opened 6 years ago

leonyu commented 6 years ago

Not sure if it would break backward compatibility, but PowerShell 6.0 supports Linux and macOS, it would be nice to get it working there, since the core of Scoop is just a JSON-configurable "portable apps" package manager, just so happen most of the main repo tools are Window apps.

I tried running the one-liner in Docker with one of the images here. It fails because the code is using \ for path delimiter, thus not portable. This can be remedied using Join-Path, but it only support 2 parameters, so would probably need to write a utility function for it. Not sure if there are other problems in Linux and macOS.

gdoenlen commented 6 years ago

What benefit would scoop provide over traditional package managers on those platforms? From my understanding scoop doesn't really manage packages/dependencies like a traditional Linux package manager would as most windows applications have their dependencies bundled with them.

leonyu commented 6 years ago

Some developers do not use built-in package manager for their platform because:

Scoop allows for relatively easy setup of private or personal package management system. In addition, since Scoop is competing with Chocolatey, both are targeting WinOps who often have to dabble in Linux these days (e.g. Azure, Docker), I would say supporting Linux is a boon, assuming cost of maintain support is relatively low.

leonyu commented 6 years ago

I think a lot of it is just dealing with / vs \ for path support.

I can submit a PR converting everything, but it will touch a lot of files. I can

deevus commented 6 years ago

To be honest I'm totally for cross platform compatibility. If it doesn't mean a complete rewrite I say go for it. The existing buckets won't work on linux obviously (unless maybe scoop could support wine).

The main question I have is how much demand is there for another package manager on linux? And one using powershell at that. It would be unreasonable to expect the current main contributors to pick up the slack for *nix, so it would depend somewhat on how dedicated you are to helping maintain cross platform compatibility (building tests etc), and also creating a default bucket for users to get software from.

/cc @lukesampson

leonyu commented 6 years ago

I don't plan to create buckets for Linux, just to make sure scoop commands works for Linux, end-to-end.

I assume the current test coverage is reasonable, so that can be leveraged for maintenance to make sure everything works in PowerShell Core on Linux. I might add some integration test to be sure.

I have fixed some tests on Linux already earlier in the year (#2153). From casual observation, bulk of the rest seems to be path related issues, which I didn't want to bite on at the time.

Calinou commented 6 years ago

My main usecase for running Scoop on Linux would be to test/maintain buckets. With systems like Flatpak already in place, I don't feel the need for another package manager on Linux.

rasa commented 5 years ago

Since / works in all environments, a PR to convert \s to /s makes sense to me. @r15ch13?

krokofant commented 5 years ago

I use scoop to manage PowerShell modules, would be nice to have official support on macOS to support the same installer.

Southclaws commented 5 years ago

I'm using PowerShell more and more on mac and all the devs I know who use mac really hate brew so I think there's value in a cross-platform installer for software. Would definitely be neat to run the same shell and the same installer across three different operating systems!

maanur commented 3 years ago

Apart from hard-coded path separators, there's a not-so-easy-to-tackle blocker: usage of Robocopy, which is proprietary and Windows-specific. An open-source alternative needs to be picked for Scoop on Linux to happen.

eMPee584 commented 3 years ago

We (Free Software Free Knowledge Uni Group Dresden) would also love to see a way to script download / installation of windows portableapps for our https://schulstick.org/ .. @leonyu if you are still interested in this, can you try if you can get the simple version (sed -i 's/\\/\//') to work? I'm not familar with the code base yet and would take a bit of time to get up to speed on this..

dwettstein commented 2 years ago

Currently, I know of the following issues that could prevent scripts from running on Unix:

viceice commented 2 years ago

We at renovate are also like to have basic Linux support for automated updates.

rasa commented 2 years ago

Currently, I know of the following issues that could prevent scripts from running on Unix:

@dwettstein @maanur noted above that there's a dependency on robocopy.exe. See here. Perhaps we replace this with PowerShell 5.1's Move-Item:

Move-Item –Path $from -Destination $to
chawyehsu commented 2 years ago

@rasa robocopy is a significant component of Scoop. It plays a great role in the process of file movements, many operations will trigger file movements. It's not that easy to replace with Move-Item, not only the latter has bad performance, but also it can't keep the file tree structure.

pratikpc commented 2 years ago

@dwettstein could you create PRs for the same?

As long as improved support for Linux/macOS does not cause regressions on Windows, I don't see the harm in doing so.

rashil2000 commented 2 years ago

rsync can be used as an alternative to robocopy on *nix systems.

rashil2000 commented 2 years ago

@rasa robocopy is a significant component of Scoop. It plays a great role in the process of file movements, many operations will trigger file movements. It's not that easy to replace with Move-Item, not only the latter has bad performance, but also it can't keep the file tree structure.

It's only used in the movedir function. It's a rather small function at the moment, so a condition check for *nix and subsequent use of rsync should be simple enough.

amreus commented 2 months ago

What benefit would scoop provide over traditional package managers on those platforms?

Old topic I know, but I think a Linux port is more relevant than ever.

For some background, I am a long-time Windows user currently using Windows 10 Home. I will not be moving to Windows 11 for many reasons, and I am currently dual-booting Debian stable in order to acclimate before support for Windows 10 ends. I chose Debian stable specifically for the "stability" - I need my computer to work when I need it and I am not interested in possibly breaking my system or maintaining the latest and greatest distribution of the day.

That said, I want to discover and try new software that I am interested in which may be useful.

What benefit would scoop provide over traditional package managers on those platforms?

I am currently using eget to fill some of these gaps.