Установка Mono на Ubuntu 22.04 — пошаговое руководство
Требования
- Ubuntu 22.04 — Desktop или Server.
- Непривилегированный пользователь с правами sudo.
Что такое Mono
Mono — это свободная реализация фреймворка .NET и исполняющей среды Common Language Runtime. Она позволяет запускать приложения на C# и других CLR-языках на Linux, Windows, macOS и встраиваемых системах.
Добавление репозитория Mono
Для установки Mono мы будем использовать официальный репозиторий проекта и пакетный менеджер APT.
- Установите пакеты для работы с сертификатами и ключами:
sudo apt install ca-certificates gnupgПри появлении подсказки подтвердите установку, введя y и нажав ENTER.

- Добавьте GPG-ключ Mono в локальное хранилище ключей:
sudo gpg --homedir /tmp --no-default-keyring \
--keyring /usr/share/keyrings/mono-official-archive-keyring.gpg \
--keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
- Добавьте официальный репозиторий Mono в списки APT:
echo \
"deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-focal main" | \
sudo tee /etc/apt/sources.list.d/mono-official-stable.list- Обновите индексы пакетов:
sudo apt updateВ выводе вы должны увидеть, что добавлен репозиторий Mono.

Установка Mono на Ubuntu
- Просмотрите доступные пакеты Mono через поиск APT:
sudo apt search mono-*Обратите внимание на ключевые пакеты:
- mono-devel — инструменты для компиляции приложений .NET.
- mono-complete — полный набор пакетов для разработки и запуска приложений Mono.

- Установите комплект для разработки и отладки. В примере установлены mono-complete и mono-dbg:
sudo apt install mono-complete mono-dbgПодтвердите установку, введя y и нажав ENTER.

- Проверьте версию установленного Mono:
mono -VВ примере вывод показывает Mono 6.12 (версия зависит от репозитория в момент установки).

Создание консольного Hello-World с Mono
Теперь, когда mono-complete установлен, можно писать и запускать приложения.
- Создайте файл исходного кода (в примере используется vim):
vim hello-mono.csВставьте следующий код в файл:
using System;
public class HelloWorld
{
public static void Main(string[] args)
{
Console.WriteLine ("Hello Mono World");
}
}Сохраните и закройте файл.
Скомпилируйте с помощью компилятора csc. В результате появится исполняемый файл hello-mono.exe:
csc hello-mono.cs- Запустите собранный exe через Mono:
mono hello-mono.exeВы должны увидеть строку “Hello Mono World” в терминале.

Создание простого ASP.NET-приложения с Mono
Mono позволяет запускать старые ASP.NET WebForms-приложения через xsp4 (веб-сервер для Mono).
- Создайте файл hello-world.aspx:
vim hello-world.aspxДобавьте в него следующий код:
<%@ Page Language="C#" %>
Sample Calendar
- Запустите встроенный сервер XSP на порту 9000:
xsp4 --port 9000Приложение будет доступно по адресу http://localhost:9000/hello-world.aspx

Откройте браузер и перейдите по адресу выше, чтобы увидеть страницу с контролом Calendar.

Чтобы остановить сервер, нажмите ENTER в терминале или Ctrl+C.
Критерии приёмки
- Mono успешно установлен и команда mono -V возвращает версию.
- csc компилирует hello-mono.cs в hello-mono.exe без ошибок.
- mono hello-mono.exe выводит “Hello Mono World”.
- xsp4 запускает ASP.NET-страницу и она доступна в браузере по http://localhost:9000/hello-world.aspx.
Частые проблемы и отладка
Проблема: APT не находит репозиторий.
- Проверьте, что файл /etc/apt/sources.list.d/mono-official-stable.list создан и содержит правильную строку.
- Проверьте, что GPG-ключ корректно добавлен в /usr/share/keyrings/.
Проблема: Невозможно получить ключ с keyserver. Попробуйте повторить команду позднее или использовать другой keyserver.
Проблема: Ошибки компиляции с csc.
- Убедитесь, что установлен пакет mono-devel или mono-complete.
- Проверьте код на синтаксические ошибки и правильность escape-символов в строках.
Проблема: xsp4 не запускается или порт занят.
- Убедитесь, что порт 9000 свободен: sudo lsof -i :9000
- Попробуйте другой порт: xsp4 –port 8080
Чек-листы по ролям
Разработчик:
- Установить mono-complete.
- Скомпилировать и запустить тестовое консольное приложение.
- Проверить поведение целевого приложения и зависимости NuGet/assembly.
Системный администратор:
- Добавить репозиторий и GPG-ключ в систему.
- Настроить службу systemd для xsp4 (если нужен постоянный сервис).
- Открыть необходимые порты в брандмауэре (например, 9000).
Оценщик безопасности:
- Проверить права доступа к сертификатам и файлам ключей.
- Ограничить доступ к административным файлам репозитория.
Альтернативные подходы
Установка через пакеты дистрибутива: некоторые версии Ubuntu содержат пакеты Mono в официальных репозиториях. Это проще, но версии могут быть устаревшими.
Использование Docker-контейнера с Mono: удобно для изоляции и тестирования приложений без изменения хоста.
Миграция на современный .NET (например, .NET 6/7/8): рекомендуется для новых проектов. Mono больше подходит для поддержки существующих приложений, написанных для .NET Framework.
Когда Mono не подходит (контрпример)
- Если проект использует современные SDK и целится на кроссплатформенные контейнеры, лучше использовать .NET (Core/5+/6/7/8). Mono чаще выбирают для поддержки старых ASP.NET WebForms или специфичных библиотек, несовместимых с .NET Core.
Модель принятия решения (простая эвристика)
- Требуется поддержка старого .NET Framework или WebForms -> выбрать Mono.
- Новый проект или переносимый сервис -> выбрать .NET 6/7/8.
Факт-бокс
- Тестовая система в руководстве: Ubuntu 22.04.
- Пример версии Mono в выводе: 6.12 (зависит от репозитория).
- Порт по умолчанию в примере для xsp4: 9000.
Рекомендации по безопасности
- Не запускайте xsp4 на публичных интерфейсах без обратного прокси и HTTPS.
- Для production-использования организуйте обратный прокси (nginx/apache) и TLS-терминацию.
- Ограничьте доступ к /usr/share/keyrings/ и файлам конфигурации.
Миграция: базовые советы
- Оцените зависимости проекта: если применяется много старых API и WebForms, миграция сложнее.
- Для библиотек с чистым кодом рассмотрите перенос на .NET Standard, затем на .NET 6+.
- Тестируйте в контейнере до переноса в продакшен.
Краткий глоссарий
- Mono — свободная реализация .NET Framework.
- csc — C# компилятор (складывает .exe/.dll для CLR).
- xsp4 — минимальный веб-сервер для ASP.NET под Mono.
Заключение
В этом руководстве вы добавили официальный репозиторий Mono, установили mono-complete, собрали и запустили консольное приложение и простое ASP.NET-приложение на Ubuntu 22.04. Дальше можно настроить IDE (Visual Studio Code, MonoDevelop или другие), настроить CI/CD и, при необходимости, рассмотреть миграцию на современные версии .NET.
Важно: для продакшен-сред используйте обратный прокси, TLS и ограничьте сетевой доступ к внутренним портам.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента