pkgxdev / pkgx

the last thing you’ll install
https://pkgx.sh
Apache License 2.0
8.81k stars 1.36k forks source link

`pkgx install` should overwrite existing versions #998

Open felipecrs opened 2 months ago

felipecrs commented 2 months ago

Let's say I previously had:

pkgx install java@17

Then later:

$ pkgx install java@11
pkgx: already installed: java (openjdk.org^17)

$ echo $?
0

Here is what I think:

  1. pkgx install should uninstall if previously installed and then install again the new version. Just like sudo apt-get install docker-ce-cli=5:25.0.3-1~ubuntu.22.04~jammy.

  2. If 1 is too hard to be implemented, the least pkgx should do is to return a non-zero code when another version of the package is already installed.

This happened in my CI/CD, where I ship an environment with pkgx install java@17, but some services needed to use java@11.

Their pipelines were configured to run pkgx install java@11 but since a succesful exit code was given, the application was still being built with java@17.

jhheider commented 2 months ago

yeah, the non-zero exit code feels incorrect.

as far as your CI/CD goes, even something as simple as: rm -r ~/.local/bin || true should be sufficient, if you need to use the install functionality, rather than either an environment or shebang-style invocation.

felipecrs commented 2 months ago

as far as your CI/CD goes, even something as simple as: rm -r ~/.local/bin || true should be sufficient, if you need to use the install functionality, rather than either an environment or shebang-style invocation.

Yeah. For now I do pkgx uninstall java before pkgx install.