Jordan Harband
aee1f83f0f
[Robustness] nvm install: reject a structurally broken installed version
...
`nvm_is_version_installed` only checks that `bin/node` has the execute bit,
which a zero-byte binary and a dangling `npm` symlink both pass, so a partial
install could be reported as a success — and a broken existing version could
short-circuit `nvm install` as "already installed".
Add `nvm_validate_install`, which requires a non-empty `bin/node` and an `npm`
entry that resolves, and use it in two places: gate the "already installed"
shortcut on it, so a broken version is reinstalled rather than reused, and
re-check it after an install reports success, so a broken result fails loudly
instead of being activated.
It checks layout, not execution: a correctly installed binary can still fail
to run on an incompatible host (e.g. a newer node on an older glibc), which is
not a broken install, and a corrupt download is already rejected by the
checksum check before extraction.
2026-07-24 10:51:53 -07:00
..
2024-10-31 14:23:36 -07:00
2026-04-23 17:16:32 +03:00
2026-04-23 17:16:32 +03:00
2026-04-23 17:16:32 +03:00
2026-07-09 22:40:07 -07:00
2026-01-26 21:41:57 -08:00
2026-03-14 09:38:04 -07:00
2026-07-24 10:51:53 -07:00
2026-01-26 21:41:57 -08:00
2026-01-27 10:31:07 -08:00
2026-05-15 23:08:37 -07:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-03-13 15:26:07 -04:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2016-11-14 12:28:41 +08:00
2026-01-26 21:41:57 -08:00
2026-03-13 15:26:07 -04:00
2026-03-13 15:26:07 -04:00
2026-07-08 13:02:41 -07:00
2026-07-08 13:02:41 -07:00
2026-07-08 13:02:41 -07:00
2026-03-13 15:26:07 -04:00
2026-06-03 13:12:31 -07:00
2026-07-08 13:03:16 -07:00
2026-06-02 17:41:44 -07:00
2026-07-08 13:03:16 -07:00
2026-01-26 21:41:57 -08:00
2026-03-14 14:30:31 -07:00
2026-06-03 13:09:07 -07:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-07-14 23:17:01 -07:00
2026-05-23 01:35:12 +09:00
2026-07-14 23:17:01 -07:00
2026-01-26 21:41:57 -08:00
2026-03-13 15:26:07 -04:00
2026-06-03 13:11:26 -07:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2025-11-16 14:48:10 +05:30
2026-07-08 13:03:16 -07:00
2026-03-13 15:26:07 -04:00
2026-03-14 09:40:43 -07:00
2026-01-26 21:41:57 -08:00
2026-01-27 10:31:07 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-07-24 10:50:47 -07:00
2026-03-24 12:44:21 -07:00
2026-03-13 15:26:07 -04:00
2026-07-14 23:17:01 -07:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-03-24 12:44:21 -07:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-07-08 23:14:23 -07:00
2026-01-26 21:41:57 -08:00
2026-03-13 15:26:07 -04:00
2026-01-26 21:41:57 -08:00
2026-07-15 13:46:52 -07:00
2026-03-13 15:26:07 -04:00
2026-03-13 15:26:07 -04:00
2026-03-13 15:26:07 -04:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-07-09 22:35:15 -07:00
2026-03-13 15:26:07 -04:00
2026-01-26 21:41:57 -08:00
2026-03-13 15:26:07 -04:00
2026-03-13 15:26:07 -04:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-03-13 15:26:07 -04:00
2026-06-10 15:16:23 -07:00
2026-03-13 15:26:07 -04:00
2026-03-13 15:26:07 -04:00
2026-03-14 09:39:20 -07:00
2026-05-25 11:14:39 +10:00
2026-01-27 10:31:07 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-03-13 15:26:07 -04:00
2026-07-24 10:51:53 -07:00
2026-03-13 15:26:07 -04:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2022-10-13 20:16:42 -07:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-01-26 21:41:57 -08:00
2026-05-25 11:14:39 +10:00