Context
We are porting the full src/azurelinux/3.0/net11.0/ image graph (29 Dockerfiles) to Azure Linux 4.0. Azure Linux 4.0 is based on Fedora 44, which changes several packages.
Most images can be ported with straightforward package renames (see "Resolved" below), but a few packages are missing entirely from AzL 4.0 repos.
Blockers
1. debootstrap — not available in AzL 4.0
- Used by:
crossdeps-builder/amd64 (Tier 1 image)
- Impact: Blocks all 18
cross/* images, plus android, webassembly, and crossdeps-llvm (24 of 29 images)
- Purpose: Used by
build-rootfs.sh to bootstrap Ubuntu/Debian rootfs for cross-compilation
- Possible fix: Install from source (it is a shell script), or find an alternative repo
2. libbsd-devel — not available in AzL 4.0
- Used by:
crossdeps-builder/amd64
- Impact: Same as above — blocks the cross-compilation chain
- Note: The base
libbsd runtime package is available, but the -devel headers are not
- Previous source: Was installed from the AzL 3.0 extended repo (
packages.microsoft.com/azurelinux/3.0/prod/extended/...)
3. No AzL 4.0 extended repo
- The extended repo URL pattern
https://packages.microsoft.com/azurelinux/4.0/prod/extended/x86_64/config.repo returns 404
- Impact: Any package that was only available in the extended repo (e.g.,
libbsd-devel) cannot be installed
- Used by:
crossdeps-builder/amd64
4. powershell — not available in AzL 4.0
- Used by:
crossdeps/amd64, build/amd64
- Impact: These images need PowerShell for Azure DevOps functionality
- Workaround available: COPY from
mcr.microsoft.com/dotnet/sdk:10.0-azurelinux3.0 (validated locally)
5. mcr.microsoft.com/dotnet/runtime-deps — no AzL 4.0 variant
- Used by:
build/amd64 (as base image: runtime-deps:10.0-azurelinux3.0)
- Impact: The build image cannot use the standard .NET runtime-deps base
- Workaround available: Inline the runtime dependencies (
icu, etc.) on top of core:4.0 and COPY the .NET runtime from mcr.microsoft.com/dotnet/runtime:10.0-azurelinux3.0
- Note: This workaround creates a dependency on the AzL 3.0 runtime/SDK images as COPY sources. Once
runtime-deps is available for AzL 4.0, the build image should be rebased.
Resolved Package Renames
These have been verified against AzL 4.0 repos and have working replacements:
| AzL 3.0 Package |
AzL 4.0 Package |
Affected Images |
tdnf (pkg manager) |
dnf |
All |
ca-certificates-microsoft |
ca-certificates |
crossdeps, build |
awk |
gawk |
crossdeps, fpm, freebsd cross |
build-essential |
gcc + make |
fpm |
moby-cli |
docker-cli |
android/docker |
wget |
wget2-wget |
crossdeps-builder, opt, android, crossdeps |
zlib-devel |
zlib-ng-compat-devel |
crossdeps-builder, opt |
libgcc-atomic |
libatomic |
helix (already ported) |
libmsquic |
removed (unavailable) |
helix (already ported) |
powershell |
COPY from SDK image |
crossdeps, build |
Other Notes
- The FreeBSD cross images have an AzL 3.0-specific workaround for
liblzma.so symlink. On AzL 4.0, the library path is /usr/lib64/ instead of /usr/lib/. This needs updating but is not a blocker.
- The
openjdk/jdk:17-mariner image used by android/amd64 is an external dependency and does not need porting.
Context
We are porting the full
src/azurelinux/3.0/net11.0/image graph (29 Dockerfiles) to Azure Linux 4.0. Azure Linux 4.0 is based on Fedora 44, which changes several packages.Most images can be ported with straightforward package renames (see "Resolved" below), but a few packages are missing entirely from AzL 4.0 repos.
Blockers
1.
debootstrap— not available in AzL 4.0crossdeps-builder/amd64(Tier 1 image)cross/*images, plusandroid,webassembly, andcrossdeps-llvm(24 of 29 images)build-rootfs.shto bootstrap Ubuntu/Debian rootfs for cross-compilation2.
libbsd-devel— not available in AzL 4.0crossdeps-builder/amd64libbsdruntime package is available, but the-develheaders are notpackages.microsoft.com/azurelinux/3.0/prod/extended/...)3. No AzL 4.0 extended repo
https://packages.microsoft.com/azurelinux/4.0/prod/extended/x86_64/config.reporeturns 404libbsd-devel) cannot be installedcrossdeps-builder/amd644.
powershell— not available in AzL 4.0crossdeps/amd64,build/amd64mcr.microsoft.com/dotnet/sdk:10.0-azurelinux3.0(validated locally)5.
mcr.microsoft.com/dotnet/runtime-deps— no AzL 4.0 variantbuild/amd64(as base image:runtime-deps:10.0-azurelinux3.0)icu, etc.) on top ofcore:4.0and COPY the .NET runtime frommcr.microsoft.com/dotnet/runtime:10.0-azurelinux3.0runtime-depsis available for AzL 4.0, the build image should be rebased.Resolved Package Renames
These have been verified against AzL 4.0 repos and have working replacements:
tdnf(pkg manager)dnfca-certificates-microsoftca-certificatesawkgawkbuild-essentialgcc+makemoby-clidocker-cliwgetwget2-wgetzlib-develzlib-ng-compat-devellibgcc-atomiclibatomiclibmsquicpowershellOther Notes
liblzma.sosymlink. On AzL 4.0, the library path is/usr/lib64/instead of/usr/lib/. This needs updating but is not a blocker.openjdk/jdk:17-marinerimage used byandroid/amd64is an external dependency and does not need porting.