NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
17.87k stars 13.93k forks source link

Postman cannot be downloaded from nixpkgs. #259147

Open SayantanRC opened 1 year ago

SayantanRC commented 1 year ago

Describe the bug

Postman cannot be downloaded and installed from nix packages.

Steps To Reproduce

Steps to reproduce the behavior:

  1. Open terminal
  2. Type nix-shell -p postman (this also happens if postman is added in the config file)

This results in the following error:

these 2 derivations will be built:
  /nix/store/0ryvqmib5dp3znj20qy9zq6dfsapw0ny-postman-10.12.0.tar.gz.drv
  /nix/store/jlb4liv4lr3zspn3043d0zmyi3wh723y-postman-10.12.0.drv
building '/nix/store/0ryvqmib5dp3znj20qy9zq6dfsapw0ny-postman-10.12.0.tar.gz.drv'...

trying https://dl.pstmn.io/download/version/10.12.0/linux64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
curl: (22) The requested URL returned error: 404
error: cannot download postman-10.12.0.tar.gz from any mirror
error: builder for '/nix/store/0ryvqmib5dp3znj20qy9zq6dfsapw0ny-postman-10.12.0.tar.gz.drv' failed with exit code 1;
       last 7 log lines:
       >
       > trying https://dl.pstmn.io/download/version/10.12.0/linux64
       >   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
       >                                  Dload  Upload   Total   Spent    Left  Speed
       >   0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
       > curl: (22) The requested URL returned error: 404
       > error: cannot download postman-10.12.0.tar.gz from any mirror
       For full logs, run 'nix log /nix/store/0ryvqmib5dp3znj20qy9zq6dfsapw0ny-postman-10.12.0.tar.gz.drv'.
error: 1 dependencies of derivation '/nix/store/jlb4liv4lr3zspn3043d0zmyi3wh723y-postman-10.12.0.drv' failed to build

Expected behavior

The command should work.

Screenshots

Additional context

Notify maintainers

@johnrichardrinehart @evanjs @tricktron @Craftzman7

Metadata

[sayantan@nixos:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.1.51, NixOS, 23.05 (Stoat), 23.05.20230910.d44c0ac`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.13.5`
 - channels(root): `"home-manager-23.05.tar.gz, nixos-23.05"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`
chasecaleb commented 1 year ago

This is also the case for nixos-unstable as well, where postman is version 10.18.6. Based on their release notes, the latest version as of today (10/5/2023) is 10.18.10. Downloading that works: https://dl.pstmn.io/download/version/10.18.10/linux64

I tried every 10.18.x version and the only one found is 10.18.10... so unfortunately I suspect they decided to stop hosting old versions. I'm sure this has come up with other packages before, so what pattern(s) does nixpkgs use for dealing with this? I imagine postman using an unfree license makes this even more complicated.

for i in {0..10}; do echo "$i"; curl -v https://dl.pstmn.io/download/version/10.18.$i/linux64 2>&1 | grep "< HTTP/2"; done                                                                       ~/nix-config
0
< HTTP/2 404 
1
< HTTP/2 404 
2
< HTTP/2 404 
3
< HTTP/2 404 
4
< HTTP/2 404 
5
< HTTP/2 404 
6
< HTTP/2 404 
7
< HTTP/2 404 
8
< HTTP/2 404 
9
< HTTP/2 404 
10
grep: (standard input): binary file matches

P.S. Should someone should reach out to Postman to point out the impact this caused, ask if it's intentional, and kindly ask if they'll reconsider? I think opening an issue on https://github.com/postmanlabs/postman-app-support is the right way.

SayantanRC commented 1 year ago

Created issue on postman: https://github.com/postmanlabs/postman-app-support/issues/12383

SayantanRC commented 1 year ago

As confirmed here, there are no plans for them to re-upload older versions.

In case we have no way to cache the packages from NixOS, we will have to remove Postman from nixpkgs. Users will need to use flatpak.

Craftzman7 commented 1 year ago

Not sure we have to remove it. If there's a rule saying we have to then cite it. (I couldn't find one)

SayantanRC commented 1 year ago

@Craftzman7 it's better to remove it because it won't work anyway unless the postman team chooses to reverse their decision. Moreover, anyone who sees that postman is available in nixpkgs through search.nixos.org, might add it to the config file and break the build process.

johnrichardrinehart commented 1 year ago

Sorry for showing up late, everyone. I see a few options. It'd be nice to get some votes/opinions below so any future passersby can understand why things changed the way that they did:

1) We do our best to maintain the nixpkgs version against the tip of postman. 2) We maintain a 3rd-party archive/mirror of postman tarballs (not super secure and also it would likely need to be the primary URL not the fallback URL since I think fetchTree and cousins still don't support fallback URLs.) 3) We remove postman from nixpkgs. This one makes me a bit sad since I'd like nixpkgs to support as many tools as possible, but this software is non-free and there are decent alternatives to it. So, maybe it'd be good to pull support unless postman.com makes a bunch of changes that makes it easier/more attractive to work with them.

SayantanRC commented 1 year ago

@johnrichardrinehart personally I would prefer option 2, although I don't know how feasible it is (especially the fetchTree part went above my head)

If not option 2, then I would prefer option 3.

johnrichardrinehart commented 1 year ago

@johnrichardrinehart personally I would prefer option 2, although I don't know how feasible it is (especially the fetchTree part went above my head)

If not option 2, then I would prefer option 3.

Nice. Ranked-choice voting. 2 -> 3 -> 1 for @SayantanRC .

Given the fragility/centralization of 2 my vote is

3 -> 1 -> 2

I just learned that postman deleted all user data on upgrade unless you created an account. That's kind of icky and I'd rather not lower the bar (by having this repo in nixpkgs) and encourage adoption. But, if users really want it then I don't like the idea of OSS being responsible for the time spent managing infrastructure for postman (who otherwise would and used to provide it) and bearing responsibility for the security issues that arise from that. So, that's how I'm rationalizing my vote.

I'm working on packaging bruno now.

Artturin commented 1 year ago

It's possible to archive a download using the internet archive.

batonac commented 1 year ago

I'm working on packaging bruno now.

Nice tip on bruno @johnrichardrinehart.

I'm wondering what's so bad about option 1. Postman is a proprietary service and the client app is main just a client. Are there scenarios where users need to retain a certain version?

Or is the concern that changes between postman binary releases will break the nixpkgs script?

Postman's builds of the latest versions appear to be always available at permalinks https://dl.pstmn.io/download/latest/linux_64 and https://dl.pstmn.io/download/latest/linux_arm64

As far as encouraging the alternatives, could a corresponding note be included in the nix package description promoting open-source alternatives like bruno? Or does that go against Nix policies?

SayantanRC commented 1 year ago

@batonac the permalink option is fine as it helps prevent breaking existing configs... but it doesn't keep the version frozen.. it's like following the unstable nixpkgs. I personally don't have a problem with it, but we should mention this properly on search.nixos.org.

batonac commented 1 year ago

Could the version simply be displayed as latest on search.nixos.org?

Artturin commented 1 year ago

Could the version simply be displayed as latest on search.nixos.org?

The build will break when the file is changed so someone will have to keep updating the hash. Internet archive has to be used for many of these proprietary programs which don't have stable urls.

KiaraGrouwstra commented 12 months ago

It's possible to archive a download using the internet archive.

Given the fragility/centralization of 2 my vote is

might e.g. IPFS help ensure availability for those packages we know do not offer latest releases?

vtgen commented 11 months ago

Sorry for showing up late, everyone. I see a few options. It'd be nice to get some votes/opinions below so any future passersby can understand why things changed the way that they did:

  1. We do our best to maintain the nixpkgs version against the tip of postman.
  2. We maintain a 3rd-party archive/mirror of postman tarballs (not super secure and also it would likely need to be the primary URL not the fallback URL since I think fetchTree and cousins still don't support fallback URLs.)
  3. We remove postman from nixpkgs. This one makes me a bit sad since I'd like nixpkgs to support as many tools as possible, but this software is non-free and there are decent alternatives to it. So, maybe it'd be good to pull support unless postman.com makes a bunch of changes that makes it easier/more attractive to work with them.

Is it against "the rules" to just give people bruno when they ask for postman? This is first I ever heard of bruno, even briefly looking for alternatives cus postman is now :-1: , I didn't come across it. If i had tried to install postman or postman-free or something like that and got bruno it would have scratched my itch :shrug:. (I just came across this thread once again trying trying to get postman up; and now I have bruno and doubt I will ever use postman again. )

bruno is now packaged in unstable.

nix-shell -p bruno

I would recommend to the maintainers they put something like 'postman alternative' in the description so people searching for postman will find bruno.

dimitarg commented 9 months ago

If anecdotes / datapoints are useful for you, I went with 3) / Bruno. Seems to work well and, crucially, can import / export postman collections which my colleagues are using.

I would recommend to the maintainers they put something like 'postman alternative' in the description so people searching for postman will find bruno.

That might be worthwhile. Right now it's not showing up in nixpkgs search if you search for "postman" (unstable).

mtrsk commented 9 months ago

Unfortunately, I have to use postman at work.

If it serves to anyone, this overlay has been saving me for a while:

{ pkgs, inputs, system, ... }:

{
  nixpkgs.overlays = [
    (final: prev: {
      postman = prev.postman.overrideAttrs(old: rec {
        version = "20231205182607";
        src = final.fetchurl {
          url = "https://web.archive.org/web/${version}/https://dl.pstmn.io/download/latest/linux_64";
          sha256 = "sha256-PthETmSLehg6eWpdDihH1juwiyZdJvzr+qyG2YYuEZI=";
          name = "${old.pname}-${version}.tar.gz";
        };
      });
    })
  ];
}

Update: Switching to a newer release (December), that's availiable on archive.org.

j-jeurissen commented 8 months ago

error: builder for '/nix/store/vacray94h4sxd7jl4nanj92105hgswx2-postman-10.18.6.zip.drv' failed with exit code 1; last 7 log lines:

trying https://dl.pstmn.io/download/version/10.18.6/osx_arm64 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (22) The requested URL returned error: 404 error: cannot download postman-10.18.6.zip from any mirror For full logs, run 'nix log /nix/store/vacray94h4sxd7jl4nanj92105hgswx2-postman-10.18.6.zip.drv'.

nixos-discourse commented 8 months ago

This issue has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/nix-postman-package-is-broken/39669/2

Yva1n commented 7 months ago

For me, it's working by using the unstable version

lhanson commented 7 months ago

For me, it's working by using the unstable version

The fundamental problem is that unstable only happens to work at the moment because nixpkgs and the downloadable Postman artifact are in sync. As soon as Postman releases an update, unstable breaks again.

boustanihani commented 6 months ago

Getting the fllowing error on NixOS 23.11

building '/nix/store/wivdcvbharqx3nmiwwh9g0jml2fjvqrm-postman-10.18.6.tar.gz.drv'...

trying https://dl.pstmn.io/download/version/10.18.6/linux64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404
error: cannot download postman-10.18.6.tar.gz from any mirror
error: builder for '/nix/store/wivdcvbharqx3nmiwwh9g0jml2fjvqrm-postman-10.18.6.tar.gz.drv' failed with exit code 1
error: 1 dependencies of derivation '/nix/store/7s63l9kjkvnbpkp1xp8slzrj4xad6hda-postman-10.18.6.drv' failed to build
error: 1 dependencies of derivation '/nix/store/1nf6mrwx77dj9z54iqjkk0wqk9vfrj78-system-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/yn9pqmdfajydiw4i1lc6d7biag5cvm11-nixos-system-i7-3770S-23.11.5541.56528ee42526.drv' failed to build

Bildschirmfoto vom 2024-03-27 02-13-37

satokenta940 commented 5 months ago

Have you tried Apidog? I think this might be better as a substitute for postman.

boustanihani commented 5 months ago

Thanks, I'll try it out