← Back to issue list

Missing symlinks in bare-based images built with Noble

View original Github issue

Metadata

Project
rockcraft
Number
#857
Type
issue
State
open
Author
clay-lake
Labels
Created
Updated
Closed

Current evaluation

Bare-based rocks built with ubuntu@24.04 (Noble) build-base lose /lib* -> /usr/lib* symlinks, so executables fail at runtime with 'no such file or directory' due to missing /lib64/ld-linux-x86-64.so.2. Untriaged, no maintainer response, no labels.

Suggested action: needs triage

Reason: The issue has no labels, no assignee, and zero comments from maintainers, so it has not been triaged. It is a real, reproducible bug (clear rockcraft.yaml and error output) where bare-based Noble rocks break at runtime because the /lib64 -> usr/lib64 symlink is missing, making the dynamic loader unavailable. The repo docs (lifecycle-layer.rst) explicitly describe this exact failure mode for Ubuntu bases, but note bare rocks 'don't need prime pruning nor usrmerge handling' — suggesting the layer-archiving symlink-preservation logic in rockcraft/layers.py may not apply to bare bases, which needs maintainer investigation.

Impact: 70 Quick Win: 31.5 Staleness: 70 Complexity: 55 Confidence: 55 Support Request: 10

Issue body

### Bug Description When building a bare-based image from Noble, links between /lib* and /usr/lib* are missing for the usrmerge. The rock will pack successfully, but when running an executable with pebble, the following error is returned. > - Execute command "hello" (fork/exec /usr/bin/hello: no such file or directory) This is because the path `/lib64/ld-linux-x86-64.so.2` is missing. This issue is not found on jammy build-bases ### To Reproduce 1. Pack and load the Rock below into your container daemon 2. Execute a container with args `exec hello`, you should see the error msg above. 3. Repacking the rock with the fix, corrects the problem. ### Environment Host: Linux 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux Rockcraft: version 1.9.0 ### rockcraft.yaml ```yaml # Metadata section name: hello summary: Hello World description: The most basic example of a rock. version: "latest" license: Apache-2.0 base: bare build-base: ubuntu@24.04 platforms: amd64: # Make sure this value matches your computer's architecture # Parts section parts: hello: # #: Fix # override-build: | # for l in $CRAFT_PART_INSTALL/usr/lib* # do # lib_path=/$(basename $l) # ln -sf usr/$lib_path $CRAFT_PART_INSTALL/$lib_path # done # craftctl default plugin: nil stage-packages: - hello ``` ### Relevant log output ```shell It is too long to include here, but I can send it directly if needed. ```

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.8-27b
Impact: 70
Quick Win: 31.5
Staleness: 70
Complexity: 55
Confidence: 55
Support Request: 10
needs triage Bare-based rocks built with ubuntu@24.04 (Noble) build-base lose /lib* -> /usr/lib* symlinks, so executables fail at runtime with 'no such file or directory' due to missing /lib64/ld-linux-x86-64.so.2. Untriaged, no maintainer response, no labels.
qwen/qwen3.6-35b-a3b
Staleness: 90
Complexity: 40
Confidence: 85
Support Request: 5
needs triage Missing /lib to /usr/lib symlinks in bare-based Ubuntu Noble rocks causing executable failures. Unlabelled, zero maintainer comments, inactive for over a year.
qwen3.6-35b-a3b-mtp-q6
Staleness: 85
Complexity: 40
Confidence: 75
Support Request: 10
needs triage Bug report detailing missing /lib* to /usr/lib* symlinks in Ubuntu Noble bare-based Rockcraft images, causing executable execution failures. Untriaged, no maintainer comments, inactive for over a year.
qwen3.6-35b-a3b-mtp-q6
Staleness: 90
Complexity: 45
Confidence: 80
Support Request: 10
close stale Missing /lib* to /usr/lib* symlinks in bare-based Ubuntu Noble rocks causing executable failures. Untriaged and inactive for over 15 months with no maintainer engagement.
qwen3.6-35b-a3b-mtp-q6
Staleness: 85
Complexity: 45
Confidence: 70
Support Request: 10
needs triage Bare-based Ubuntu Noble Rockcraft images lack /lib* to /usr/lib* symlinks, causing executable failures from a missing dynamic linker. Open, zero comments, last activity 304 days ago. Requires triage and resolution.

Update history

No update history recorded yet.

Related work

  • Related To: rockcraft#498 (confidence 60%)

    Commit 05489c80 'fix(lifecycle): remove usrmerge-breaking symlinks (#498)' addresses usrmerge symlink handling; the current bug is the inverse case (missing symlinks) on bare bases, so it is related context rather than a fix.

  • Related To: rockcraft#154 (confidence 55%)

    Commit 607d934f 'oci: handle symlinks in base layer (usrmerge, #154)' and related layers.py logic preserve lower-layer symlinks when archiving the prime layer; this issue suggests that path is not exercised for bare-based images.

Related issues

No related issues found above the similarity threshold.