Skip to content

Conversation

@Cryptoc1
Copy link

@Cryptoc1 Cryptoc1 commented Nov 12, 2025

Summary

libatomic1 is a dependency that is explicitly installed in the sdk docker image, but is not specified as a dependency in the documentation, leading to unexpected behavior for users who perform manual/scripted installation of sdks.

Fixes: Sdk#51677


Internal previews

📄 File 🔗 Preview link
docs/core/install/linux-ubuntu-install.md Install .NET SDK or .NET Runtime on Ubuntu
Copilot AI review requested due to automatic review settings November 12, 2025 06:43
@Cryptoc1 Cryptoc1 requested review from a team and adegeo as code owners November 12, 2025 06:43
@dotnetrepoman dotnetrepoman bot added this to the November 2025 milestone Nov 12, 2025
@dotnet-policy-service dotnet-policy-service bot added dotnet-fundamentals/svc install/subsvc community-contribution Indicates PR is created by someone from the .NET community. labels Nov 12, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds libatomic1 as a required dependency for Ubuntu 25.10 in the .NET installation documentation. The change aligns the documentation with the actual SDK Docker image requirements, ensuring users who manually install .NET or publish self-contained apps are aware of this dependency.

Key changes:

  • Added libatomic1 to the Ubuntu 25.10 dependencies list in the installation documentation.
Comments suppressed due to low confidence (3)

docs/core/install/linux-ubuntu-install.md:120

  • The libatomic1 dependency should also be added to the Ubuntu 25.04 dependencies list (around line 112) for consistency. According to the PR description, libatomic1 is required by the SDK Docker image, and this requirement likely applies to all recent Ubuntu versions, not just 25.10.
- ca-certificates - libc6 - libgcc-s1 - libgssapi-krb5-2 - libicu76 - libssl3t64 - libstdc++6 - tzdata - zlib1g 

docs/core/install/linux-ubuntu-install.md:176

  • The libatomic1 dependency should also be added to the Ubuntu 24.04 dependencies list (around line 168) for consistency. Since the SDK Docker image explicitly requires libatomic1, this dependency should be documented for all supported Ubuntu versions.
- ca-certificates - libc6 - libgcc-s1 - libgssapi-krb5-2 - libicu74 - libssl3t64 - libstdc++6 - tzdata - zlib1g 

docs/core/install/linux-ubuntu-install.md:234

  • The libatomic1 dependency should also be added to the Ubuntu 22.04 dependencies list (around line 226) for consistency. The Docker image requirement for libatomic1 likely applies to this version as well, ensuring accurate documentation for manual installations and self-contained app deployments.
- ca-certificates - libc6 - libgcc-s1 - libgssapi-krb5-2 - libicu70 - libssl3 - libstdc++6 - tzdata - zlib1g 
@adegeo
Copy link
Contributor

adegeo commented Nov 14, 2025

Thanks for noticing and fixing this. I have a query open to the product team to validate this (on either the Dockerfile or the backing requirements.json file for .NET)

@adegeo
Copy link
Contributor

adegeo commented Dec 1, 2025

@Cryptoc1 I think the discussion I'm seeing is that this lib is very useful for developer scenarios, but it's not specifically a dependency.

@Cryptoc1
Copy link
Author

Cryptoc1 commented Dec 1, 2025

@adegeo would it make sense to have separate "SDK Dependencies" and "Runtime Dependencies" lists?

@adegeo
Copy link
Contributor

adegeo commented Dec 2, 2025

I don't think so. It's not a dependency either way. However, this is the list of dependencies and I would say if this list gets the package, it makes sense to update the docs to follow: https://github.com/dotnet/core/blob/main/release-notes/10.0/os-packages.json

@Cryptoc1
Copy link
Author

Cryptoc1 commented Dec 2, 2025

@adegeo I'm not quite following...

Per Sdk#51677, if a command like dotnet build produces an error because a library that is expected to be installed is not installed, then I would consider that library to be a dependency? Am I misunderstanding, or should I re-open my issue against the Sdk, in-order to get the os-packages.json file updated?

@adegeo
Copy link
Contributor

adegeo commented Dec 3, 2025

Ahhhhh I see, thank you for clarifying. @leecow @richlander Should we add this to the dependencies json if it's required for the SDK? Or are we really only documenting the runtime-only dependencies?

@leecow
Copy link
Member

leecow commented Dec 3, 2025

I'm not sure I understand the dotnet build dependency. I installed 10.0.100 using dotnet-install.sh on a green 25.10 image and the only other thing I needed to install to run dotnet --info, dotnet new console, and dotnet build was libicu76.

@richlander
Copy link
Member

I thought this library was a dependency on libmsquic so only relevant for HTTP/3 scenario. Is that true?

@Cryptoc1
Copy link
Author

Cryptoc1 commented Dec 4, 2025

Here is example output of the error (which occurred when building/publishing a BlazorWASM project):

Restore complete (0.5s) Determining projects to restore... Restored /home/cryptoc1/Developer/temp/temp.csproj (in 134 ms). temp net10.0 browser-wasm failed with 2 error(s) (1.7s) Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink Compiling native assets with /home/cryptoc1/.dotnet/packs/Microsoft.NET.Runtime.Emscripten.3.1.56.Sdk.linux-x64/10.0.0/Sdk/../tools/emscripten/emcc with -Oz. This may take a while ... [3/4] driver.c -> driver.o [took 0.07s] [2/4] pinvoke.c -> pinvoke.o [took 0.07s] [1/4] corebindings.c -> corebindings.o [took 0.07s] [4/4] runtime.c -> runtime.o [took 0.08s] Linking for initial memory $(WasmInitialHeapSize)=33554432 bytes. Set this msbuild property to change the value. Linking with emcc with -O2. This may take a while ... /home/cryptoc1/.dotnet/packs/Microsoft.NET.Runtime.Emscripten.3.1.56.Sdk.linux-x64/10.0.0/tools/bin/clang --version /home/cryptoc1/.dotnet/packs/Microsoft.NET.Runtime.Emscripten.3.1.56.Node.linux-x64/10.0.0/tools/bin/node /home/cryptoc1/.dotnet/packs/Microsoft.NET.Runtime.Emscripten.3.1.56.Sdk.linux-x64/10.0.0/tools/emscripten/src/compiler.mjs /tmp/tmp5dyrehcf.json --symbols-only /home/cryptoc1/.dotnet/packs/Microsoft.NET.Runtime.Emscripten.3.1.56.Node.linux-x64/10.0.0/tools/bin/node: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory emcc : error '/home/cryptoc1/.dotnet/packs/Microsoft.NET.Runtime.Emscripten.3.1.56.Node.linux-x64/10.0.0/tools/bin/node /home/cryptoc1/.dotnet/packs/Microsoft.NET.Runtime.Emscripten.3.1.56.Sdk.linux-x64/10.0.0/tools/emscripten/src/compiler.mjs /tmp/tmp5dyrehcf.json --symbols-only' failed (returned 127) /home/cryptoc1/.dotnet/packs/Microsoft.NET.Runtime.WebAssembly.Sdk/10.0.0/Sdk/BrowserWasmApp.targets(522,5): error MSB3073: The command "emcc "@/home/cryptoc1/.dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.browser-wasm/10.0.0/runtimes/browser-wasm/native/src/emcc-default.rsp" -msimd128 "@/home/cryptoc1/.dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.browser-wasm/10.0.0/runtimes/browser-wasm/native/src/emcc-link.rsp" "@/home/cryptoc1/Developer/temp/obj/Release/net10.0/wasm/for-publish/emcc-link.rsp"" exited with code 1. temp net10.0 browser-wasm failed (4.4s) → bin/Release/net10.0/wwwroot Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink Optimizing assemblies for size. This process might take a while. temp.sln failed with 1 warning(s) (0.0s) /home/cryptoc1/.dotnet/sdk/10.0.100/Current/SolutionFile/ImportAfter/Microsoft.NET.Sdk.Solution.targets(36,5): warning NETSDK1194: The "--output" option isn't supported when building a solution. Specifying a solution-level output path results in all projects copying outputs to the same directory, which can lead to inconsistent builds. Build failed with 2 error(s) and 1 warning(s) in 6.8s 

It appears that libatomic is required by node (bundled within the Microsoft.NET.Runtime.Emscripten.3.1.56.Node.linux-x64 pack), for usage of emcc/Emscripten compiler.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community-contribution Indicates PR is created by someone from the .NET community. dotnet-fundamentals/svc install/subsvc

5 participants