Skip to content

install: install -D replaces symlink path components with real directories breaks our build system #11469

Closed

Description

@mkocher

install -D in uutils 0.7.0 replaces symlink components in the destination path with real directories, instead of following them as GNU coreutils does. This was introduced by #10140 (fix for #10013).

Reproduction

mkdir -p /tmp/target
ln -s /tmp/target /tmp/link
echo hello > /tmp/file.txt
install -D -m 644 /tmp/file.txt /tmp/link/subdir/file.txt
GNU coreutils 8.32: /tmp/link remains a symlink. file.txt is written to /tmp/target/subdir/file.txt.

uutils 0.7.0: /tmp/link is replaced with a real directory. /tmp/target is untouched. file.txt is written to the new real directory at /tmp/link/subdir/file.txt.

Impact
This breaks any workflow where the install prefix is a symlink. In our case, the BOSH deployment tool sets up INSTALL_PREFIX as a symlink to a persistent disk directory, then runs packaging scripts that call make install (which uses install -D internally). The compiled output silently goes to the wrong filesystem, producing empty packages.

This likely affects any make install on a symlinked prefix, which is a common pattern (e.g. Homebrew, Nix, stow).

Possibly related to #11363.

/cc @abendrothj

Activity

  1. GoeBachmann commented on May 6, 2026

    @GoeBachmann

    This issue also breaks buildroot packages installing to directories which are symlinks (e.g. in merged-bin systems).

  2. added a commit that references this issue on May 6, 2026
  3. added a commit that references this issue on May 25, 2026
    21fda8c
  4. added a commit that references this issue on May 28, 2026
    95a7c8b
  5. added a commit that references this issue on Jun 5, 2026
  6. zhw2101024 commented on Jun 8, 2026

    @zhw2101024
    Contributor

    It seems that #11363 is caused by false assumption in the test.

  7. added a commit that references this issue on Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions