1
0
mirror of synced 2025-12-19 18:06:02 -05:00

Linux packages JSON format (#9412)

* Add packages JSON file

* Reformat document

* Remove zlib

* Remove 'Extra' concept

* Add reference doc

* Generate markdown

* Add trailing CR

* Apply suggestions from code review

Co-authored-by: Matt Thalman <mthalman@microsoft.com>

* Update schema per feedback

* Remove commands property

* Update markdown to commands schemea change

* Add formats description

* Change title

* Add more examples

* Add formats link to README

* Apply suggestions from code review

Co-authored-by: Matt Thalman <mthalman@microsoft.com>

* Update schema with descriptions

* Apply suggestions from code review

Co-authored-by: Omair Majid <omajid@redhat.com>
Co-authored-by: Noah Gilson <noahgilson@microsoft.com>

* Rename files

* Add eol-date

* Update README files

* Update schema links

* Update link titles

* Update per feedback

* Update per feedback

* Updates per feedback

* Update description

* Sort packages

* Remove Debian 11

* Add min-version information

* Change to link

* Update markdown

* Update schema per feedback

* Apply suggestions from code review

Co-authored-by: Matt Thalman <mthalman@microsoft.com>

* Update markdown

---------

Co-authored-by: Matt Thalman <mthalman@microsoft.com>
Co-authored-by: Omair Majid <omajid@redhat.com>
Co-authored-by: Noah Gilson <noahgilson@microsoft.com>
This commit is contained in:
Rich Lander
2024-07-22 13:11:55 -07:00
committed by GitHub
parent e372dc8941
commit 49e018be1e
9 changed files with 860 additions and 126 deletions

View File

@@ -31,9 +31,9 @@ You can find release notes for all releases, including out-of-support releases,
## Release Information
* [Download .NET](https://dotnet.microsoft.com/download/dotnet)
* [Releases Index][releases-index.json] -- Index for all release channels in JSON format
* [dotnet-install scripts](https://learn.microsoft.com/dotnet/core/tools/dotnet-install-script)
* [Installation docs](https://learn.microsoft.com/dotnet/core/install/)
* [dotnet-install scripts](https://learn.microsoft.com/dotnet/core/tools/dotnet-install-script)
* [Releases Index][releases-index.json] -- Index for all release channels in JSON format
[releases-index.json]: https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json
[policies]: release-policies.md

View File

@@ -6,6 +6,7 @@
- [Linux Package Managers](https://learn.microsoft.com/dotnet/core/install/linux)
- [Containers](https://hub.docker.com/_/microsoft-dotnet)
- [Supported OSes](supported-os.md)
- [OS packages](./os-packages.md)
- [Known Issues](known-issues.md)
- [Installation instructions](install.md)

View File

@@ -1,120 +0,0 @@
# .NET 9 Linux package dependencies
.NET 9 has several dependencies that must be satisfied to run .NET apps. The commands to install these libraries are listed for multiple Linux distributions.
Feel free to contribute packages for distributions not (yet) listed in this document, including ones not supported by the .NET Team.
Tips:
- [runtime-deps container images](https://github.com/dotnet/dotnet-docker/tree/main/src/runtime-deps) install these same packages. You can look at those dockerfiles.
- [pkgs.org](https://pkgs.org/) is a useful site for searching for packages, to find the one for your distribution.
## Packages
.NET depends on the following packages.
- [GNU C Library (glibc)](https://www.gnu.org/software/libc/libc.html)
- [GNU C++ Library](https://gcc.gnu.org/onlinedocs/libstdc++/)
- [GCC low-level runtime library](https://gcc.gnu.org/onlinedocs/gccint/Libgcc.html)
- [ICU](http://site.icu-project.org/)
- [Kerberos](http://web.mit.edu/kerberos/)
- [Open SSL](https://www.openssl.org/)
- [zlib compression library](https://www.zlib.net/)
You do not need to install ICU if you [enable globalization invariant mode](https://github.com/dotnet/runtime/blob/main/docs/design/features/globalization-invariant-mode.md#enabling-the-invariant-mode).
If your app relies on `https` endpoints, you'll also need to install `ca-certificates`.
## Alpine 3.19
```bash
sudo apk add \
libgcc \
libssl3 \
libstdc++ \
zlib
```
## Debian 12 "bookworm"
```bash
sudo apt-get update \
&& sudo apt-get install -y --no-install-recommends \
libc6 \
libgcc-s1 \
libicu72 \
libssl3 \
libstdc++6 \
tzdata \
zlib1g \
```
## Debian 11 "Bullseye"
``` bash
sudo apt-get update \
&& sudo apt-get install -y --no-install-recommends \
libc6 \
libgcc1 \
libgssapi-krb5-2 \
libicu67 \
libssl1.1 \
libstdc++6 \
zlib1g
```
## Ubuntu 24.04 "Noble"
```bash
sudo apt-get update \
&& sudo apt-get install -y --no-install-recommends \
libc6 \
libgcc-s1 \
libicu74 \
libssl3 \
libstdc++6 \
zlib1g
```
## Ubuntu 23.10"Mantic"
``` bash
sudo apt-get update \
&& sudo apt-get install -y --no-install-recommends \
libc6 \
libgcc-s1 \
libicu72 \
libssl3 \
libstdc++6 \
tzdata \
zlib1g \
```
## Ubuntu 22.04 "Jammy"
``` bash
sudo apt-get update \
&& sudo apt-get install -y --no-install-recommends \
libc6 \
libgcc-s1 \
libicu70 \
libssl3 \
libstdc++6 \
tzdata \
zlib1g \
```
## Community supported distros
The following distros are not supported by the .NET team. The following package information is provided on an as-is basis. Feel free to contribute package information for the distro you use .NET with if it isn't listed.
### Arch Linux
```bash
sudo pacman -Sy \
glibc \
gcc \
krb5 \
icu \
openssl \
libc++ \
zlib
```
This set of packages was tested on the Arch and Manjaro.

View File

@@ -0,0 +1,421 @@
{
"$schema": "../schemas/dotnet-os-packages.json",
"channel-version": "9.0",
"packages": [
{
"id": "libc",
"name": "C Library",
"references": [
"https://github.com/dotnet/core/blob/main/release-notes/9.0/supported-os.md#linux-compatibility",
"https://www.gnu.org/software/libc/libc.html",
"https://musl.libc.org/"
],
"required-scenarios": [
"all"
]
},
{
"id": "libgcc",
"name": "GCC low-level runtime library",
"references": [
"https://gcc.gnu.org/onlinedocs/gccint/Libgcc.html"
],
"required-scenarios": [
"all"
]
},
{
"id": "ca-certificates",
"name": "CA Certificates",
"references": [
"https://www.redhat.com/sysadmin/ca-certificates-cli"
],
"required-scenarios": [
"https"
]
},
{
"id": "openssl",
"name": "OpenSSL",
"min-version": "1.1.1",
"references": [
"https://www.openssl.org/"
],
"required-scenarios": [
"https",
"cryptography"
]
},
{
"id": "libstdc++",
"name": "C++ Library",
"references": [
"https://gcc.gnu.org/onlinedocs/libstdc++/"
],
"required-scenarios": [
"runtime"
]
},
{
"id": "libicu",
"name": "ICU",
"references": [
"https://icu.unicode.org",
"https://github.com/dotnet/runtime/blob/main/docs/design/features/globalization-invariant-mode.md"
],
"required-scenarios": [
"globalization"
]
},
{
"id": "tzdata",
"name": "tz database",
"references": [
"https://data.iana.org/time-zones/tz-link.html"
],
"required-scenarios": [
"globalization"
]
},
{
"id": "krb5",
"name": "Kerberos",
"references": [
"https://web.mit.edu/kerberos"
],
"required-scenarios": [
"kerberos"
]
}
],
"distributions": [
{
"name": "Alpine",
"install-commands":
[
{
"run-under-sudo": true,
"command-root": "apk",
"command-parts": ["add", "{packageName}"]
}
],
"releases": [
{
"name": "Alpine 3.20",
"release": "3.20",
"packages": [
{
"id": "libgcc",
"name": "libgcc"
},
{
"id": "ca-certificates",
"name": "ca-certificates"
},
{
"id": "openssl",
"name": "libssl3"
},
{
"id": "libstdc++",
"name": "libstdc++"
},
{
"id": "icu",
"name": "icu-libs"
},
{
"id": "icu",
"name": "icu-data-full"
},
{
"id": "tzdata",
"name": "tzdata"
},
{
"id": "krb5",
"name": "krb5"
}
]
},
{
"name": "Alpine 3.19",
"release": "3.19",
"packages": [
{
"id": "libgcc",
"name": "libgcc"
},
{
"id": "ca-certificates",
"name": "ca-certificates"
},
{
"id": "openssl",
"name": "libssl3"
},
{
"id": "libstdc++",
"name": "libstdc++"
},
{
"id": "icu",
"name": "icu-libs"
},
{
"id": "icu",
"name": "icu-data-full"
},
{
"id": "tzdata",
"name": "tzdata"
},
{
"id": "krb5",
"name": "krb5"
}
]
}
]
},
{
"name": "Debian",
"install-commands":
[
{
"run-under-sudo": true,
"command-root": "apt-get",
"command-parts": ["update"]
},
{
"run-under-sudo": true,
"command-root": "apt-get",
"command-parts": ["install", "-y", "{packageName}"]
}
],
"releases": [
{
"name": "Debian 12 (Bookworm)",
"release": "12",
"packages": [
{
"id": "libc",
"name": "libc6"
},
{
"id": "libgcc",
"name": "libgcc-s1"
},
{
"id": "ca-certificates",
"name": "ca-certificates"
},
{
"id": "openssl",
"name": "libssl3"
},
{
"id": "libstdc++",
"name": "libstdc++6"
},
{
"id": "libicu",
"name": "libicu72"
},
{
"id": "tzdata",
"name": "tzdata"
},
{
"id": "krb5",
"name": "libgssapi-krb5-2"
}
]
}
]
},
{
"name": "Fedora",
"install-commands":
[
{
"run-under-sudo": true,
"command-root": "dnf",
"command-parts": ["install", "-y", "{packageName}"]
}
],
"releases": [
{
"name": "Fedora 40",
"release": "40",
"packages": [
{
"id": "libc",
"name": "glibc"
},
{
"id": "libgcc",
"name": "libgcc"
},
{
"id": "ca-certificates",
"name": "ca-certificates"
},
{
"id": "openssl",
"name": "openssl-libs"
},
{
"id": "libstdc++",
"name": "libstdc++"
},
{
"id": "libicu",
"name": "libicu"
},
{
"id": "tzdata",
"name": "tzdata"
},
{
"id": "krb5",
"name": "krb5-libs"
}
]
}
]
},
{
"name": "Ubuntu",
"install-commands":
[
{
"run-under-sudo": true,
"command-root": "apt-get",
"command-parts": ["update"]
},
{
"run-under-sudo": true,
"command-root": "apt-get",
"command-parts": ["install", "-y", "{packageName}"]
}
],
"releases": [
{
"name": "Ubuntu 24.10 (Oracular Oriole)",
"release": "24.10",
"packages": [
{
"id": "libc",
"name": "libc6"
},
{
"id": "libgcc",
"name": "libgcc-s1"
},
{
"id": "ca-certificates",
"name": "ca-certificates"
},
{
"id": "openssl",
"name": "libssl3t64"
},
{
"id": "libstdc++",
"name": "libstdc++6"
},
{
"id": "libicu",
"name": "libicu74"
},
{
"id": "tzdata",
"name": "tzdata"
},
{
"id": "krb5",
"name": "libgssapi-krb5-2"
}
]
},
{
"name": "Ubuntu 24.04 (Noble Numbat)",
"release": "24.04",
"packages": [
{
"id": "libc",
"name": "libc6"
},
{
"id": "libgcc",
"name": "libgcc-s1"
},
{
"id": "ca-certificates",
"name": "ca-certificates"
},
{
"id": "openssl",
"name": "libssl3t64"
},
{
"id": "libstdc++",
"name": "libstdc++6"
},
{
"id": "libicu",
"name": "libicu74"
},
{
"id": "tzdata",
"name": "tzdata"
},
{
"id": "krb5",
"name": "libgssapi-krb5-2"
}
]
},
{
"name": "Ubuntu 22.04.4 LTS (Jammy Jellyfish)",
"release": "22.04",
"packages": [
{
"id": "libc",
"name": "libc6"
},
{
"id": "libgcc",
"name": "libgcc-s1"
},
{
"id": "ca-certificates",
"name": "ca-certificates"
},
{
"id": "openssl",
"name": "libssl3"
},
{
"id": "libstdc++",
"name": "libstdc++6"
},
{
"id": "libicu",
"name": "libicu70"
},
{
"id": "tzdata",
"name": "tzdata"
},
{
"id": "krb5",
"name": "libgssapi-krb5-2"
}
]
}
]
}
]
}

View File

@@ -0,0 +1,139 @@
# .NET 9 Required Packages
Various packages must be installed to run .NET apps and the .NET SDK. This is handled automatically if .NET is [installed through archive packages](../../linux.md).
This file is generated from [os-packages.json](os-packages.json).
## Package Overview
The following table lists required packages, including the scenarios by which they are needed.
Id | Name | Required scenarios | Notes
--------------- | --------- | ------------- | ------------------------------
[libc][0] | C Library | All | https://github.com/dotnet/core/blob/main/release-notes/9.0/supported-os.md#linux-compatibility<br>https://www.gnu.org/software/libc/libc.html<br>https://musl.libc.org/
[libgcc][1] | GCC low-level runtime library | All | https://gcc.gnu.org/onlinedocs/gccint/Libgcc.html
[ca-certificates][2] | CA Certificates | Https | https://www.redhat.com/sysadmin/ca-certificates-cli
[openssl][3] | OpenSSL | Https<br>Cryptography | Minimum required version 1.1.1<br>https://www.openssl.org/
[libstdc++][4] | C++ Library | Runtime | https://gcc.gnu.org/onlinedocs/libstdc++/
[libicu][5] | ICU | Globalization | https://icu.unicode.org<br>https://github.com/dotnet/runtime/blob/main/docs/design/features/globalization-invariant-mode.md
[tzdata][6] | tz database | Globalization | https://data.iana.org/time-zones/tz-link.html
[krb5][7] | Kerberos | Kerberos | https://web.mit.edu/kerberos
[0]: https://pkgs.org/search/?q=libc
[1]: https://pkgs.org/search/?q=libgcc
[2]: https://pkgs.org/search/?q=ca-certificates
[3]: https://pkgs.org/search/?q=openssl
[4]: https://pkgs.org/search/?q=libstdc++
[5]: https://pkgs.org/search/?q=libicu
[6]: https://pkgs.org/search/?q=tzdata
[7]: https://pkgs.org/search/?q=krb5
## Alpine
### Alpine 3.20
```bash
sudo apk add \
ca-certificates \
icu-data-full \
icu-libs \
krb5 \
libgcc \
libssl3 \
libstdc++ \
tzdata
```
### Alpine 3.19
```bash
sudo apk add \
ca-certificates \
icu-data-full \
icu-libs \
krb5 \
libgcc \
libssl3 \
libstdc++ \
tzdata
```
## Debian
### Debian 12 (Bookworm)
```bash
sudo apt-get update && \
sudo apt-get install -y \
ca-certificates \
libc6 \
libgcc-s1 \
libgssapi-krb5-2 \
libicu72 \
libssl3 \
libstdc++6 \
tzdata
```
## Fedora
### Fedora 40
```bash
sudo dnf install -y \
ca-certificates \
glibc \
krb5-libs \
libgcc \
libicu \
libstdc++ \
openssl-libs \
tzdata
```
## Ubuntu
### Ubuntu 24.10 (Oracular Oriole)
```bash
sudo apt-get update && \
sudo apt-get install -y \
ca-certificates \
libc6 \
libgcc-s1 \
libgssapi-krb5-2 \
libicu74 \
libssl3t64 \
libstdc++6 \
tzdata
```
### Ubuntu 24.04 (Noble Numbat)
```bash
sudo apt-get update && \
sudo apt-get install -y \
ca-certificates \
libc6 \
libgcc-s1 \
libgssapi-krb5-2 \
libicu74 \
libssl3t64 \
libstdc++6 \
tzdata
```
### Ubuntu 22.04.4 LTS (Jammy Jellyfish)
```bash
sudo apt-get update && \
sudo apt-get install -y \
ca-certificates \
libc6 \
libgcc-s1 \
libgssapi-krb5-2 \
libicu70 \
libssl3 \
libstdc++6 \
tzdata
```

View File

@@ -14,12 +14,14 @@ You can find release notes for all releases, including out-of-support releases,
[8.0.7]: 8.0/8.0.7/8.0.7.md
[6.0.32]: 6.0/6.0.32/6.0.32.md
## Release Information
* [Release note formats](./formats.md)
* [Releases index][releases-index.json]
## Download .NET
* [Download .NET](https://dotnet.microsoft.com/download/dotnet)
* [Releases Index][releases-index.json] -- Index for all release channels in JSON format
* [dotnet-install scripts](https://learn.microsoft.com/dotnet/core/tools/dotnet-install-script)
* [Installation docs](https://learn.microsoft.com/dotnet/core/install/)
* [dotnet-install scripts](https://learn.microsoft.com/dotnet/core/tools/dotnet-install-script)
[releases-index.json]: https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json
[policies]: ../release-policies.md

99
release-notes/formats.md Normal file
View File

@@ -0,0 +1,99 @@
# Release note formats
Release notes are available in a combination of markdown and JSON formats. The intent is to make all release notes available in markdown and also in JSON if there is a scenario that requires structured data. This content is [licensed](./license-information.md) for broad use.
Our approach has evolved over time. The following descriptions are for our latest practices.
## Monthly patch release notes (markdown)
We typically release an update each month. These often include security fixes for vulnerabilities (AKA CVEs) disclosed on the same day.
Examples:
- [6.0.32](./6.0/6.0.32/6.0.32.md)
- [8.0.1](./8.0/8.0.1/8.0.1.md)
These markdown files include the following information:
- Links to binaries
- Notable changes, including CVEs
- Compatibility information
- Updates packages
## Monthly preview release notes (markdown)
We typically release a preview for the next major version each month. These are much the same as the monthly patches; however, they will not include CVE information until the new major release is supported (starting with RC1).
Examples:
- [.NET 9 Preview 1](./9.0/preview/preview1/README.md)
- [.NET 9 Preview 6](./9.0/preview/preview6/README.md)
These markdown files are primarily composed of dense feature descriptions. This content is used as source material for [What's New](https://learn.microsoft.com/dotnet/core/whats-new/dotnet-9/overview) pages in official Microsoft docs, which are [often updated](https://github.com/dotnet/docs/pulls?q=is%3Apr+What%27s+New) on the same day as a preview release.
Preview release notes are always in a `preview` folder. This approach was adopted so that preview releases do not distract from stable releases once preview releases are no longer relevant.
## Releases Index (json)
The `releases-index.json` file is the entrypoint into all other JSON files. This file is relatively small, about a dozen lines per major version. The file includes support phase, latest version, and whether the latest version included CVE fixes.
- File: [`releases-index.json`](./releases-index.json)
- Schema: [`dotnet-releases-index.json`](https://json.schemastore.org/dotnet-releases-index.json)
The following example demonstrates a version object from the file.
```json
{
"channel-version": "8.0",
"latest-release": "8.0.7",
"latest-release-date": "2024-07-09",
"security": true,
"latest-runtime": "8.0.7",
"latest-sdk": "8.0.303",
"product": ".NET",
"support-phase": "active",
"eol-date": "2026-11-10",
"release-type": "lts",
"releases.json": "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json",
"supported-os.json": "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/supported-os.json"
}
```
Each version object includes links to more detailed release-specific information.
The links are to a blob storage location, not to GitHub. We chose the blog storage links as the default because we knew some users were using the JSON files from within Azure and we also better understood the reliability characteristics of Azure.
`releases-index.json` and all the files it references are stored in blob storage and in GitHub. It is straightforward to programmatically transform the [blob storage links](https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json) to [`raw` GitHub links](https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json) should that be desired.
## Releases (json)
The `releases.json` file contains expansive release information for the life of a major release. It includes much the same information as the Monthly and preview markdown release notes.
Examples:
- [.NET 8 `releases.json`](./8.0/releases.json)
- [.NET 9 `releases.json`](./9.0/releases.json)
These files can grow to be quite large. We are considering producing release-specific versions of this file, for example for `8.0/8.0.1/release.json`.
## Supported OS (json and markdown)
Supported OS information is published for each release. This information indicates to users which OSes they can expect an app (or the .NET SDK) to run on for a given .NET version. It also indicates which OSes are supported and when they transitioned to EOL status.
Examples:
- [.NET 8 Supported OSes (json)](./8.0/supported-os.json)
- [.NET 8 Supported OSes (markdown)](./8.0/supported-os.md)
- [.NET 9 Supported OSes (json)](./9.0/supported-os.json)
- [.NET 9 Supported OSes (markdown)](./9.0/supported-os.md)
## OS packages (json and markdown)
OS package information is published for each release. This information indicates which packages must be installed on a given distro for a .NET app (or the .NET SDK) to run. [.NET packages](../linux.md) are available for multiple distros, which automatically install all required packages
Examples:
- [.NET 9 OS packages (json)](./9.0/os-packages.json)
- [.NET 9 OS packages (markdown)](./9.0/os-packages.md)
Schema: [dotnet-requires-packages](./schemas/dotnet-os-packages.json)

View File

@@ -1,6 +1,6 @@
# License information for release notes
Release notes include detailed information that may be useful in other forums or mediums, such as blogs, courses, or videos. The release notes are in markdown format, enabling flexible re-use. Starting with .NET 9, you will find more detailed release notes.
Release notes include detailed information that may be useful in other forums or mediums, such as blogs, courses, or videos. The release notes are in markdown and JSON formats.
The [dotnet/core](https://github.com/dotnet/core) repo uses the [MIT license](../LICENSE.TXT). You are free to use release note content under that license.

View File

@@ -0,0 +1,192 @@
{
"description": "The set of packages required by a given product version for a set of distros.",
"type": [
"object",
"null"
],
"properties": {
"channel-version": {
"description": "Major (or major.minor) version of product.",
"type": "string"
},
"packages": {
"description": "Set of nominal packages used by product, with descriptions.",
"type": "array",
"items": {
"description": "A nominal package is a distro-agnostic representation of a package, including the scenarios for which the package is required. A nominal package will be referenced by a distribution package, with a distribution-specific package name.",
"type": [
"object",
"null"
],
"properties": {
"id": {
"description": "ID of nominal package.",
"type": "string"
},
"name": {
"description": "Display name of nominal package.",
"type": "string"
},
"required-scenarios": {
"description": "Required scenarios for which the package must be used.",
"type": "array",
"items": {
"description": "Scenarios relating to package dependencies. \u0027All\u0027 includes both CoreCLR and NativeAOT while \u0027Runtime\u0027 is intended to cover CoreCLR, only.",
"enum": [
"all",
"runtime",
"https",
"cryptography",
"globalization",
"kerberos"
]
}
},
"min-version": {
"description": "Minimum required version of library.",
"type": [
"string",
"null"
],
"default": null
},
"references": {
"description": "Related references.",
"type": [
"array",
"null"
],
"items": {
"type": [
"string",
"null"
]
},
"default": null
}
},
"required": [
"id",
"name",
"required-scenarios"
]
}
},
"distributions": {
"description": "Set of distributions where the product can be used.",
"type": "array",
"items": {
"description": "An operating system distribution, with required package install commands and specific packages for distribution releases.",
"type": [
"object",
"null"
],
"properties": {
"name": {
"description": "Name of the distribution, matching ID in /etc/os-release, however, the expectation is that this value starts with a capital letter (proper noun).",
"type": "string"
},
"install-commands": {
"description": "Commands required to install packages within the distribution.",
"type": "array",
"items": {
"description": "A command to be run to install packages",
"type": [
"object",
"null"
],
"properties": {
"run-under-sudo": {
"description": "Whether the command needs to be run under sudo.",
"type": "boolean"
},
"command-root": {
"description": "The command to be run, like apt.",
"type": "string"
},
"command-parts": {
"description": "The command parts or arguments that need to be used.",
"type": [
"array",
"null"
],
"items": {
"type": [
"string",
"null"
]
},
"default": null
}
},
"required": [
"run-under-sudo",
"command-root"
]
}
},
"releases": {
"description": "Releases for that distribution.",
"type": "array",
"items": {
"description": "A distribution release with a list of packages to install.",
"type": [
"object",
"null"
],
"properties": {
"name": {
"description": "The name of the release, matching PRETTY_NAME in /etc/os-release.",
"type": "string"
},
"release": {
"description": "The version number for the release, matching VERSION_ID in /etc/os-release.",
"type": "string"
},
"packages": {
"type": "array",
"items": {
"description": "A distro archive package to install, with a reference to a logical package with more information.",
"type": [
"object",
"null"
],
"properties": {
"id": {
"description": "Reference to nominal package ID, providing access to required scenarios and other information.",
"type": "string"
},
"name": {
"description": "Package name in the distro archive.",
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"name",
"release",
"packages"
]
}
}
},
"required": [
"name",
"install-commands",
"releases"
]
}
}
},
"required": [
"channel-version",
"packages",
"distributions"
]
}