Hey, I'm brand new here, and I typically work on my Windows machine. I don't usually use the unix subsystem, as I usually just build docker images for these kinds of things. I have been trying to get Roc working in a docker image, but I seem to be unable to do so.
I have a Dockerfile like this:
FROM ubuntu
WORKDIR /root
# download dependencies
RUN apt-get update && apt-get install -y wget curl libasound2 libxcb-xinput0 libx11-6 libxcursor1 libxrandr2 libxi6 libx11-xcb1
# install roc
COPY roc.tar.gz roc.tar.gz
RUN mkdir roc && tar -xf roc.tar.gz -C roc
# install rust
RUN curl --proto '=https' --tlsv1.2 -sSf --output rustup https://sh.rustup.rs && sh rustup -y
# cleanup
RUN rm -rf roc.tar.gz rustup
and I'll build/run it with
docker build -t roc .
docker run -it roc
I can open the repl, but when I type any expression, such as "Hello, World!"
from the tutorial, I get the following error:
root@a54d527d66f8:~/roc# RUST_BACKTRACE=full ./roc repl
The rockin’ roc repl
────────────────────────
Enter an expression, or :help, or :exit/:q.
» "Hello, World!"
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', compiler/build/src/link.rs:1001:6
stack backtrace:
0: 0x55a1f5307abc - std::backtrace_rs::backtrace::libunwind::trace::hf6a6dfd7da937cb0
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
1: 0x55a1f5307abc - std::backtrace_rs::backtrace::trace_unsynchronized::hc596a19e4891f7f3
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x55a1f5307abc - std::sys_common::backtrace::_print_fmt::hb16700db31584325
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:67:5
3: 0x55a1f5307abc - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h231c4190cfa75162
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:46:22
4: 0x55a1f494520c - core::fmt::write::h2a1462b5f8eea807
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/core/src/fmt/mod.rs:1163:17
5: 0x55a1f53033c5 - std::io::Write::write_fmt::h71ddfebc68685972
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/io/mod.rs:1696:15
6: 0x55a1f5309340 - std::sys_common::backtrace::_print::hcc197d4bebf2b369
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:49:5
7: 0x55a1f5309340 - std::sys_common::backtrace::print::h335a66af06738c7c
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:36:9
8: 0x55a1f5309340 - std::panicking::default_hook::{{closure}}::h6fac9ac9c8b79e52
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:210:50
9: 0x55a1f5309c23 - std::panicking::default_hook::h341c1030c6a1161b
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:227:9
10: 0x55a1f5309c23 - std::panicking::rust_panic_with_hook::h50680ff4b44510c6
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:624:17
11: 0x55a1f530948a - std::panicking::begin_panic_handler::{{closure}}::h9371c0fbb1e8465a
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:521:13
12: 0x55a1f53081c4 - std::sys_common::backtrace::__rust_end_short_backtrace::h9b3efa22a5768c0f
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:139:18
13: 0x55a1f530940d - rust_begin_unwind
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:517:5
14: 0x55a1f47aad51 - core::panicking::panic_fmt::h23b9203e89cc61cf
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/core/src/panicking.rs:100:14
15: 0x55a1f47aae43 - core::result::unwrap_failed::h32ef6b3156e8fc57
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/core/src/result.rs:1616:5
16: 0x55a1f4bccd0e - roc_build::link::module_to_dylib::h7f6dd50547d352ac
17: 0x55a1f5120049 - roc_repl_cli::eval_and_format::h3824981905110238
18: 0x55a1f5123f33 - roc_repl_cli::main::hbb6bb9cb1eb62d8c
19: 0x55a1f4b34ae3 - roc::main::h7bc17e2a57cc1a87
20: 0x55a1f4b32523 - std::sys_common::backtrace::__rust_begin_short_backtrace::h2e85261f9ed1f08d
21: 0x55a1f4b3253f - std::rt::lang_start::{{closure}}::h6cfbd391927023bd
22: 0x55a1f530776b - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hc56adab7a77ec6e3
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/core/src/ops/function.rs:259:13
23: 0x55a1f530776b - std::panicking::try::do_call::h29f013120c5abc65
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:403:40
24: 0x55a1f530776b - std::panicking::try::h86d5b2b66caec4cf
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:367:19
25: 0x55a1f530776b - std::panic::catch_unwind::h7dd136d787f51397
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panic.rs:133:14
26: 0x55a1f530776b - std::rt::lang_start_internal::{{closure}}::h4a199351e630a8a5
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/rt.rs:128:48
27: 0x55a1f530776b - std::panicking::try::do_call::h20ceb9e5dff838c6
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:403:40
28: 0x55a1f530776b - std::panicking::try::hc2abb46a5e41bd43
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:367:19
29: 0x55a1f530776b - std::panic::catch_unwind::h52c3eb4408ad6dfb
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panic.rs:133:14
30: 0x55a1f530776b - std::rt::lang_start_internal::hd15a47be08101c28
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/rt.rs:128:20
31: 0x55a1f4b36d82 - main
32: 0x7fcbeb95a0b3 - __libc_start_main
33: 0x55a1f48a761a - _start
34: 0x0 - <unknown>
Any ideas? I'm assuming I'm missing some dependencies, since I'm starting with a docker image, but it's not clear which ones.
You are missing zig, I don't know what else.
once the compiler is built you should not need zig
well, just for platforms written in zig, but not for the repl at least
Hi @Tyler Brockmeyer, can you check if ld is installed, by executing ld --version
?
As the Roc project is working correctly using Nix, I would maybe suggest using this Nix Docker image, and then let Nix install the dependencies instead of converting everything to Dockerfile steps
https://hub.docker.com/r/nixos/nix
Last updated: Jul 05 2025 at 12:14 UTC