Skip to content

Conversation

richlander
Copy link
Member

No description provided.

linux-support.md Outdated
.NET can be installed on your distribution using one of the follow approaches:

* Install from the [official archive for your distribution](./linux.md).
* Install the [Microsoft Linux build](https://dotnet.microsoft.com/download), which is built to run on any distro with compatible dependencies (including libc).
Copy link
Member

Choose a reason for hiding this comment

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

https://dotnet.microsoft.com/download link auto-detects the OS, so it won't show you how to install on Linux unless you are actually on Linux box.

Copy link
Contributor

Choose a reason for hiding this comment

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

You can force it to show linux by using https://dotnet.microsoft.com/download?initial-os=linux

linux-support.md Outdated

* Install from the [official archive for your distribution](./linux.md).
* Install the [Microsoft Linux build](https://dotnet.microsoft.com/download), which is built to run on any distro with compatible dependencies (including libc).
* Build from source via [dotnet/source-build](https://github.com/dotnet/source-build).
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
* Build from source via [dotnet/source-build](https://github.com/dotnet/source-build).

I would delete it from here and just leave the paragraph at the end of linux.md. This is very advanced option.

Copy link
Member Author

Choose a reason for hiding this comment

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

I was wanting to leave something for distro-owners. How should we communicate that. I think they are more likely to find these files than dotnet/source-build.

Copy link
Member

Choose a reason for hiding this comment

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

Should we add a call to action like "If you are interested in packaging .NET for your distribution, please see to get started"?

linux-support.md Outdated
.NET has two policies for OpenSSL:

- When built into a distro archive, .NET will load a specific OpenSSL version, per the distro archive policy.
- When built by Microsoft (as a portable Linux build), .NET will the highest OpenSSL version it finds (that it supports), but can be configured to use a specific version.
Copy link
Member

Choose a reason for hiding this comment

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

This is... true... but not always.

If we add support for a new OpenSSL via servicing it gets added as the lowest priority. (IIRC, we added support for 1.1.x lower than 1.0.x because we did so late or in servicing; then made 1.1.x the higher priority in the next release)

Copy link
Member Author

Choose a reason for hiding this comment

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

I didn't realize that. That's certainly good context, but it is also messy. Do you have a specific edit you'd like me to take?

Copy link
Member

Choose a reason for hiding this comment

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

Not a specific edit, no. Though throwing in a weasel word like "generally" is probably good enough.

When built by Microsoft (as a portable Linux build), .NET will generally use the highest OpenSSL version it finds (that it supports), but can be configured to use a specific version.

Perhaps?

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
@richlander
Copy link
Member Author

See: dotnet/docs#32638

linux-support.md Outdated
.NET can be installed on your distribution using one of the following approaches:

* Install from the [official archive for your distribution](./linux.md).
* Install the [Microsoft Linux build](https://dotnet.microsoft.com/download/dotnet), which is built to run on any distro with compatible dependencies (including libc).
Copy link
Member Author

Choose a reason for hiding this comment

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

Suggested change
* Install the [Microsoft Linux build](https://dotnet.microsoft.com/download/dotnet), which is built to run on any distro with compatible dependencies (including libc).
* Install the [Microsoft Linux build](https://dotnet.microsoft.com/download?initial-os=linux), which is built to run on any distro with compatible dependencies (including libc).

Copy link
Member

Choose a reason for hiding this comment

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

https://dotnet.microsoft.com/download?initial-os=linux just has a big button that points to the doc page with the actual install instructions.

Should we link https://learn.microsoft.com/en-us/dotnet/core/install/linux directly from here to skip the click-through?

linux.md Outdated
@@ -0,0 +1,40 @@
# .NET for Linux Distributions

.NET can be [installed on Linux](https://learn.microsoft.com/dotnet/core/install/linux) in multiple ways, via packages, [scripts](https://github.com/dotnet/install-scripts), or [tarballs](https://dotnet.microsoft.com/en-us/download). It can be installed globally, locally/privately, or with an app.
Copy link
Member Author

Choose a reason for hiding this comment

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

Suggested change
.NET can be [installed on Linux](https://learn.microsoft.com/dotnet/core/install/linux) in multiple ways, via packages, [scripts](https://github.com/dotnet/install-scripts), or [tarballs](https://dotnet.microsoft.com/en-us/download). It can be installed globally, locally/privately, or with an app.
.NET can be [installed on Linux](https://learn.microsoft.com/dotnet/core/install/linux) in multiple ways, via packages, [scripts](https://github.com/dotnet/install-scripts), or [tarballs](https://dotnet.microsoft.com/download?initial-os=linux). It can be installed globally, locally/privately, or with an app.

linux-support.md Outdated
.NET has two policies for OpenSSL:

- When built into a distro archive, .NET will load a specific OpenSSL version, per the distro archive policy.
- When built by Microsoft (as a portable Linux build), .NET will load the highest OpenSSL version it finds (that it supports), but can be configured to use a specific version.
Copy link
Member

Choose a reason for hiding this comment

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

There is a nuance here in that when we added support for a newer OpenSSL version to an existing release (eg dotnet/corefx#34443) we tried to make sure it still looks for OpenSSL versions in the same order as before the modification.

linux-support.md Outdated

New .NET versions will typically only be supported on RHEL era distributions in active support. Check [release notes](./release-notes/README.md) for a given .NET version for specific support information.

Red Hat family distributions include: AlmaLinux, CentOS, Fedora, Oracle Linux, Red Hat Enterprise Linux, and Rocky Linux.
Copy link
Member

Choose a reason for hiding this comment

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

Fedora is a bit of an odd one in this list. All others are RHEL or RHEL rebuilds. They follow the same versions as RHEL (and the list above). Fedora has it's own versions, schedules, releases and versions of components like openssl and glibc.

Copy link
Member

Choose a reason for hiding this comment

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

Not saying that Fedora shouldn't be supported, but I am not sure it belongs in a list where very other distro is a rebuild of RHEL.

.NET containers are published to multiple registries.

- [Microsoft Artifact Repository](https://mcr.microsoft.com/catalog?search=dotnet/)
- [OpenShift](https://developers.redhat.com/blog/2018/07/05/deploy-dotnet-core-apps-openshift)
Copy link
Member

Choose a reason for hiding this comment

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

@aslicerh should we point to the Red Hat container catalog here too?

Copy link
Member Author

Choose a reason for hiding this comment

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

Works for me! Please update it. You choose.

linux.md Outdated
- [OpenShift](https://developers.redhat.com/blog/2018/07/05/deploy-dotnet-core-apps-openshift)
- [Ubuntu Rocks](https://hub.docker.com/r/ubuntu/dotnet-aspnet)

Microsoft publishes container images per [.NET container publishing policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md).
Copy link
Member

Choose a reason for hiding this comment

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

Should we talk about the policies of others (eg, Rocks, Red Hat), even if it's "others may have a different policy"?

linux.md Outdated

.NET can be built from source via [dotnet/source-build](https://github.com/dotnet/source-build). This capability is expanding with [dotnet/dotnet](https://github.com/dotnet/dotnet) (which also uses source-build).

For distributions publishing packages, please follow the [official packaging guidelines](https://learn.microsoft.com/dotnet/core/distribution-packaging#recommended-packages).
Copy link
Member

Choose a reason for hiding this comment

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

Should we add some motivation here? Something like "Not following this will probably break the Side-by-Side versioning experience of .NET"?

Copy link
Member Author

Choose a reason for hiding this comment

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

That context should be in the linked document, IMO.

linux-support.md Outdated
@@ -0,0 +1,55 @@
# .NET Support and Compatibility for Linux Distributions

.NET is officially supported on multiple [Linux distributions](os-support-lifecycle.md) and [supported by the community on several others](linux.md).
Copy link
Member

Choose a reason for hiding this comment

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

officially supported

I would avoid "officially" in these docs. It feels superfluous and/or ambiguous.

  • Officially supported -> Supported by Microsoft
  • Official packaging guidelines -> packaging guidelines. (We do not have non-official packaging guidelines.)

linux-support.md Outdated

## Linux distributions support

.NET can typically be run on any Linux distribution. Commercially supported distributions are listed in [.NET Supported OS Policy](./os-lifecycle-policy.md), while other distributions are supported at best effort per the compatibility rules above.
Copy link
Member

Choose a reason for hiding this comment

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

Tizen is commercially supported Linux distro as well...

ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35
```

## OpenSSL compatibility
Copy link
Member

Choose a reason for hiding this comment

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

Similar compatibility constrains and policies apply to ICU and other unmanaged dependencies.

Copy link
Member

Choose a reason for hiding this comment

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

It includes libc when built into distro archive. dotnet binaries built into distro archive target glibc version targeted by the distro. The versions from the previous paragraph do not apply.

Would it be better to start this doc by saying that the dotnet built into a distro archive is typically hardbound to the specific versions of libraries included in the distro. And the rest of the doc would only talk about policies used by (Microsoft) portable build.

@richlander
Copy link
Member Author

I believe I addressed most/all of the feedback.

@bartonjs -- Is there a link for how to configure which OpenSSL version you want to use?

Copy link
Member

@jkotas jkotas left a comment

Choose a reason for hiding this comment

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

LGTM!

linux.md Outdated

.NET is supported on Linux per [.NET Support and Compatibility for Linux Distributions](linux-support.md).

## Official archives
Copy link
Member

Choose a reason for hiding this comment

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

Would it be appropriate to include a small caution note in this section for any customers migrating from packages.microsoft.com usage?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes. Good call.

We could link to this, or is it too specific? #7699

Copy link
Member

Choose a reason for hiding this comment

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

@richlander richlander merged commit 4131427 into dotnet:main Nov 19, 2022
@richlander richlander deleted the linux-support branch November 19, 2022 01:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants