Skip to content

nb install --deb reports success but binary not installed (libc6 postinst/ldconfig failure aborts place) — Ubuntu 22.04, v0.1.198 #327

@justrach

Description

@justrach

Summary

On Ubuntu 22.04, nb install --deb <pkg> reports Installed N/N packages but the package's binary is not actually installed / not findable anywhere in the prefix. A libc6 postinst + ldconfig failure (exit 1) appears to abort the place/link step, yet the run still exits success.

Environment

  • nanobrew v0.1.198 (installed via curl -fsSL https://nanobrew.trilok.ai/install | bash/opt/nanobrew/prefix)
  • Ubuntu 22.04.5 LTS x86_64 (cloud GPU pod; ubuntu non-root user, sudo available)

Repro

$ nb install --deb tree
==> Fetching package index...
    mirror=http://archive.ubuntu.com/ubuntu codename=jammy arch=amd64
    main: cache miss, fetching...
    universe: cache miss, fetching...
==> Fetched index (65013 packages) in 629ms
==> Resolving deps for 1 package(s)... (index built in 42ms)
==> Installing 5 package(s)... (resolved in 0ms)
    downloading 5 package(s) in parallel...
    download phase: 106ms
    extract phase: 397ms (5 packages)
    running: postinst for libc6
    warning: postinst exited 1 for libc6
warning: ldconfig exited with code 1
==> Installed 5/5 packages (5 cached) in 1595.6ms

Then the binary is nowhere to be found:

$ find /opt/nanobrew -name tree -type f      # (no output)
$ ls /opt/nanobrew/prefix/bin                 # only: nb
$ ls /opt/nanobrew/prefix/usr/bin             # (empty)
$ tree --version                              # tree: command not found

Expected

tree (+ its 4 deps) installed, and the tree CLI usable — on PATH, or at a documented prefix path.

Notes / questions

  1. postinst on a non-root prefix: libc6's postinst/ldconfig can't meaningfully run against /opt/nanobrew/prefix. Should --deb default to skipping postinst (the README benchmarks reference --skip-postinst), or treat a postinst failure as non-fatal-but-reported rather than silently aborting the place step?
  2. Misleading success: after the postinst/ldconfig failures, the summary still prints Installed 5/5 packages and exits 0, even though no binary was placed. The summary/exit code should reflect a partial/failed install.
  3. Where do --deb CLIs land? Nothing ended up on PATH or in prefix/bin / prefix/usr/bin. If --deb is sysroot-only by design (libs for Docker builds), documenting that + how to expose CLIs would help.

Minor

nb --version and nb version both error unknown command; version is only visible via nb --help (shows v0.1.198). A --version flag would help scripting and bug reports.

Context (why this matters / the good part)

Hit while provisioning GPU pods whose base image has a stale apt index (apt-get install python3-venv → 404 on superseded .deb versions). nanobrew's fresh-index --deb fetch is exactly the right fix, and the fetch/resolve/download path is excellent (65k packages in 629 ms, install in 1.6 s). Only the place/postinst step doesn't complete for CLIs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions