I am trying to set up a devcontainer that comes with octez-client pre-installed.
I've found that I can get it to work as long as I run the final apt-get install -y tezos-client
command of the install process after the container is already running.
Ideally I would install it during the container build process to reduce the time required to spin up the container.
However, if I include the apt-get install -y tezos-client
line in the build script, I always get an error (see below)
Is this avoidable? If so, is there anything I can do on the octez-client side, or will this be an issue with the devcontainer setup?
error message:
#0 64.53 Setting up tezos-client (2:17.1-0ubuntu1~jammy) ...
#0 64.56 breakpoint: Failed to write 'change' to '/sys/devices/breakpoint/uevent': Read-only file system
#0 64.56 dpkg: error processing package tezos-client (--configure):
#0 64.56 installed tezos-client package post-installation script subprocess returned error exit status 1
#0 64.56 Processing triggers for man-db (2.10.2-1) ...
#0 64.59 Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
#0 64.61 Errors were encountered while processing:
#0 64.61 tezos-client
#0 64.65 E: Sub-process /usr/bin/dpkg returned an error code (1)
#0 64.65 ERROR: Feature "bug demo" (ghcr.io/grum-tez/features_template/bug_demo) failed to install!
------
Dockerfile.extended:65
--------------------
64 |
65 | >>> RUN --mount=type=bind,from=dev_containers_feature_content_source,source=bug_de
[2023-06-20T09:50:54.865Z] mo_5,target=/tmp/build-features-src/bug_demo_5 \
66 | >>> cp -ar /tmp/build-features-src/bug_demo_5 /tmp/dev-container-features \
67 | >>> && chmod -R 0755 /tmp/dev-container-features/bug_demo_5 \
68 | >>> && cd /tmp/dev-container-features/bug_demo_5 \
69 | >>> && chmod +x ./devcontainer-features-install.sh \
70 | >>> && ./devcontainer-features-install.sh \
71 | >>> && rm -rf /tmp/dev-container-features/bug_demo_5
72 |
--------------------
error: failed to solve: process "/bin/sh -c cp -ar /tmp/build-features-src/bug_demo_5 /tmp/dev-container-features && chmod -R 0755 /tmp/dev-container-features/bug_demo_5 && cd /tmp/dev-container-features/bug_demo_5 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh && rm -rf /tmp/dev-container-features/bug_demo_5" did not complete successfully: exit code: 100
[2023-06-20T09:50:54.885Z] Stop (69534 ms): Run: docker buildx build --load --build-context dev_containers_feature_content_source=/tmp/devcontainercli-root/container-features/0.42.0-1687254579348 --build-arg _DEV_CONTAINERS_BASE_IMAGE=mcr.microsoft.com/devcontainers/base:jammy --build-arg _DEV_CONTAINERS_IMAGE_USER=root --build-arg _DEV_CONTAINERS_FEATURE_CONTENT_SOURCE=dev_container_feature_content_temp --target dev_containers_target_stage -t vsc-dc_bug_demo-dc5dd49002b9a6367264358ed8984738df22be7038e098bbcc1a5247b4e53f77-features -f /tmp/devcontainercli-root/container-features/0.42.0-1687254579348/Dockerfile.extended /tmp/devcontainercli-root/empty-folder
[2023-06-20T09:50:54.886Z] Error: Command failed: docker buildx build --load --build-context dev_containers_feature_content_source=/tmp/devcontainercli-root/container-features/0.42.0-1687254579348 --build-arg _DEV_CONTAINERS_BASE_IMAGE=mcr.microsoft.com/devcontainers/base:jammy --build-arg _DEV_CONTAINERS_IMAGE_USER=root --build-arg _DEV_CONTAINERS_FEATURE_CONTENT_SOURCE=dev_container_feature_content_temp --target dev_containers_target_stage -t vsc-dc_bug_demo-dc5dd49002b9a6367264358ed8984738df22be7038e098bbcc1a5247b4e53f77-features -f /tmp/devcontainercli-root/container-features/0.42.0-1687254579348/Dockerfile.extended /tmp/devcontainercli-root/empty-folder
[2023-06-20T09:50:54.886Z] at mte (/root/.vscode-remote-containers/dist/dev-containers-cli-0.295.0/dist/spec-node/devContainersSpecCLI.js:2003:3286)
[2023-06-20T09:50:54.886Z] at IN (/root/.vscode-remote-containers/dist/dev-containers-cli-0.295.0/dist/spec-node/devContainersSpecCLI.js:2003:3222)
[2023-06-20T09:50:54.886Z] at processTicksAndRejections (node:internal/process/task_queues:96:5)
[2023-06-20T09:50:54.886Z] at async Ote (/root/.vscode-remote-containers/dist/dev-containers-cli-0.295.0/dist/spec-node/devContainersSpecCLI.js:2020:3660)
[2023-06-20T09:50:54.886Z] at async Hf (/root/.vscode-remote-containers/dist/dev-containers-cli-0.295.0/dist/spec-node/devContainersSpecCLI.js:2020:4775)
[2023-06-20T09:50:54.886Z] at async Qre (/root/.vscode-remote-containers/dist/dev-containers-cli-0.295.0/dist/spec-node/devContainersSpecCLI.js:2151:10371)
[2023-06-20T09:50:54.887Z] at async Zre (/root/.vscode-remote-containers/dist/dev-containers-cli-0.295.0/dist/spec-node/devContainersSpecCLI.js:2151:10112)
[2023-06-20T09:50:54.909Z] Stop (76027 ms): Run in container: node /root/.vscode-remote-containers/dist/dev-containers-cli-0.295.0/dist/spec-node/devContainersSpecCLI.js up --container-session-data-folder /tmp/devcontainers-1b93fead-819f-4598-bd6f-115c7d09d2311687254576284 --workspace-folder /workspaces/DC_bug_demo --workspace-mount-consistency cached --id-label vsch.local.repository=https://github.com/grum-tez/DC_bug_demo.git/tree/main --id-label vsch.local.repository.volume=DC_bug_demo-main-89cd92c2facc4612424c8118cc1f0a1020ca5bd75c6554bfced32695388d69cf --id-label vsch.local.repository.folder=DC_bug_demo --id-label devcontainer.config_file=/workspaces/DC_bug_demo/.devcontainer/devcontainer.json --log-level debug --log-format json --config /workspaces/DC_bug_demo/.devcontainer/devcontainer.json --override-config /tmp/devcontainer-d6e04ef9-1716-44d5-ad4b-e8dc3a68bab7.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=DC_bug_demo-main-89cd92c2facc4612424c8118cc1f0a1020ca5bd75c6554bfced32695388d69cf,target=/workspaces,external=true --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default off --mount-workspace-git-root true
[2023-06-20T09:50:54.909Z] Exit code 1
[2023-06-20T09:50:54.909Z] Start: Run: docker rm -f e40ccf12c284514c770d59bf02874d0f90bca17ddfacf06f2ecc496457710cc6
[2023-06-20T09:50:54.912Z] Command failed: node /root/.vscode-remote-containers/dist/dev-containers-cli-0.295.0/dist/spec-node/devContainersSpecCLI.js up --container-session-data-folder /tmp/devcontainers-1b93fead-819f-4598-bd6f-115c7d09d2311687254576284 --workspace-folder /workspaces/DC_bug_demo --workspace-mount-consistency cached --id-label vsch.local.repository=https://github.com/grum-tez/DC_bug_demo.git/tree/main --id-label vsch.local.repository.volume=DC_bug_demo-main-89cd92c2facc4612424c8118cc1f0a1020ca5bd75c6554bfced32695388d69cf --id-label vsch.local.repository.folder=DC_bug_demo --id-label devcontainer.config_file=/workspaces/DC_bug_demo/.devcontainer/devcontainer.json --log-level debug --log-format json --config /workspaces/DC_bug_demo/.devcontainer/devcontainer.json --override-config /tmp/devcontainer-d6e04ef9-1716-44d5-ad4b-e8dc3a68bab7.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=DC_bug_demo-main-89cd92c2facc4612424c8118cc1f0a1020ca5bd75c6554bfced32695388d69cf,target=/workspaces,external=true --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default off --mount-workspace-git-root true
[2023-06-20T09:50:54.912Z] Exit code 1
[2023-06-20T09:50:54.984Z] Stop (77403 ms): Run in container: /bin/sh
[2023-06-20T09:50:54.984Z] Container server terminated (code: 137, signal: null).
[2023-06-20T09:50:54.985Z] Stop (77491 ms): Run in container: /bin/sh
[2023-06-20T09:50:55.092Z] Stop (183 ms): Run: docker rm -f e40ccf12c284514c770d59bf02874d0f90bca17ddfacf06f2ecc496457710cc6
[2023-06-20T09:51:51.605Z] Start: Run: docker volume ls -q
[2023-06-20T09:51:51.667Z] Stop (62 ms): Run: docker volume ls -q
[2023-06-20T09:51:51.707Z] Start: Run: docker version --format {{.Server.APIVersion}}
[2023-06-20T09:51:51.763Z] Stop (56 ms): Run: docker version --format {{.Server.APIVersion}}
[2023-06-20T09:51:51.763Z] 1.43
References:
Example devcontainer (that will fail to build with error above. Also contains a working branch using postCreateCommand to install tezos-client): https://github.com/grum-tez/DC_bug_demo
The devcontainer features:
The buggy feature that I want to get working where the tezos-client install should happen during the container build (but fails): https://github.com/grum-tez/features_template/tree/main/src/bug_demo
The working feature where the tezos-client install happens after the container build: https://github.com/grum-tez/features_template/tree/main/src/octez-client-installer
I am using the following installation commands on ubuntu jammy:
apt-get update -y
apt-get install software-properties-common -y
add-apt-repository -y "ppa:serokell/tezos"
apt-get update
apt-get install -y tezos-client
A possibly relevant comment from GPT4:
The error message Failed to write 'change' to '/sys/devices/breakpoint/uevent': Read-only file system indicates that the tezos-client package is trying to write to a file on a read-only filesystem. Simply attempting to change permissions will not solve this issue as the entire filesystem is read-only.
It's unusual for a user-level software package like tezos-client to attempt to write to sysfs. That's typically only done by kernel-level software or device drivers.
The error you're encountering might be due to one of the following reasons:
The tezos-client package may have a bug or incorrect configuration that causes it to incorrectly attempt to write to sysfs.
The Docker container's environment may be configured in a way that the tezos-client package does not anticipate, causing it to behave incorrectly.
"runArgs": ["-u", "root"]
in the devcontainer.json just in case, but it didn't seem to have an impact