Skip to content

Compatibility ru RU

ArchiBot edited this page Nov 18, 2022 · 73 revisions

Совместимость

ASF - это приложение на C#, работающее на .NET платформе. Это означает, что ASF не компилируется напрямую в машинный код, который исполняется на вашем ЦП, а в код CIL, которому для работы требуется CIL-совместимая среда выполнения.

Этот подход имеет очень весомые преимущества, поскольку CIL независим от платформы, Именно поэтому ASF может запускаться на многих доступных ОС, особенно Windows, Linux и macOS. Нет необходимости не только в эмуляции, но и в поддержке всех оптимизаций, связанных с платформой и оборудованием, таких как CPU SSE инструкции. Благодаря этому, ASF может достигать превосходной производительности и оптимизации, и при этом оставаться полностью совместимым и надёжным.

Это также означает, что ASF не имеет особых требований к ОС, поскольку всё, что он требует - это работающую среду выполнения на этой ОС, а не саму ОС. Пока среда выполнения корректно исполняет код ASF, совершенно не важно, происходит ли это под ОС Windows, Linux, OS X, BSD, Sony Playstaion 4, Nintendo Wii или на вашем тостере - если под него существует**.NET Core**, на нём и будет работать ASF.

Однако, независимо от того, где вы запускаете ASF, вы должны убедиться, что на вашей целевой платформе установлены необходимые компоненты .NET. Это низкоуровневые библиотеки, необходимые для функционирования среды выполнения и ядра ASF. Вполне возможно, что некоторые (или даже все) из них у вас уже установлены.


Пакеты ASF

ASF поставляется в 2 основных вариациях - универсальный пакет и пакеты под конкретные ОС. С точки зрения функциональности они ничем не отличаются, и оба способны обновляться автоматически. Единственная разница в том, содержится ли там только универсальный (generic) пакет, или с ним поставляется среда выполнения под конкретную ОС.


Универсальный пакет

Универсальный (generic) пакет - это платформо-независимая сборка, не включающая в себя никакого машинно-ориентированного кода. Этот вариант требует, чтобы в вашей ОС уже была установлена требуемая версия среды выполнения .NET Core . Все мы знаем, как сложно бывает поддерживать все зависимости в актуальном состоянии, поэтому этот пакет предназначен в основном для людей, которые уже используют .NET Core и не хотят дублировать среду выполнения только для ASF, если можно использовать ту, которая уже установлена. Универсальный пакет также позволяет запустить ASF на любой платформе, для которой вы можете получить работающую реализацию среды выполнения .NET Core, независимо от того, существует ли сборка ASF под данную ОС, или нет.

Не рекомендуется использовать универсальный пакет, если вы начинающий или даже продвинутый пользователь, желающий просто запустить ASF и не вдаваться в технические подробности, связанные с .NET Core. Другими словами - если вы знаете что это, можете пользоваться, иначе вам лучше взять пакет под конкретную ОС, как описано ниже.

Пакет для .NET Framework

В дополнение к универсальному пакету, описанному выше, существует также пакет generic-netf основанный на .NET Framework (а не на .NET Core). Этот пакет - устаревшая версия и оставлен для поддержки совместимости со времён ASF версии 2.x.x.x, и может быть запущен, например, с помощью Mono, чего пакет generic, основанный на .NET Core, на данный момент не позволяет.

В общем, вам следует по возможности избегать использования этого пакета, поскольку большинство операционных систем прекрасно (и гораздо лучше) работают с пакетом generic, упомянутым выше. Фактически, этот пакет имеет смысл использовать только на платформах, под которые отсутствует работоспособная реализация среды выполнения .NET Core, но при этом имеется работающая реализация Mono. Примерами таких платформ могут служить linux-x86 (32-разрядный linux i386/i686), а также linux-armel (платы на базе ARMv6, например Raspberry Pi 0 & 1), для которых на сегодняшний день нет официальной работоспособной среды выполнения .NET Core.

Поскольку со временем всё больше платформ начнут поддерживаться .NET Core и всё меньше будет совместимость между .NET Framework и .NET Core, пакет generic-netf будет полностью заменён пакетом generic когда-нибудь в будущем. Пожалуйста, не используйте его, если вы можете использовать любой .NET пакет, так как generic-netf имеет сильно ограниченную функциональность и совместимость по сравнению с версиями .NET, и со временем этого функционала будет становиться все меньше. Мы оказываем поддержку этого пакета только на машинах, на которых невозможно использовать вариант generic, описанный выше (например, linux-x86), и только с актуальной средой выполнения (например, последней версией Mono).


Особенности OC

Пакеты под конкретную ОС, помимо управляемого кода, присутствующего в универсальном пакете, также включают в себя машинный код для заданной платформы. Другими словами, в пакете под конкретную ОС уже присутствует правильная среда выполнения .NET, что позволяет вам полностью пропустить весь процесс установки и просто запустить ASF напрямую. Пакет под конкретную ОС, как понятно из названия, подходит только для одной ОС, и для каждой ОС нужна своя версия - например, для Windows требуется исполняемый файл ArchiSteamFarm.exe формата PE32+, а для Linux исполняемый файл ArchiSteamFarm формата Unix ELF. Как вы, возможно, знаете, эти два типа несовместимы между собой.

ASF на данный момент доступно для следующих вариантов ОС:

  • linux-arm работает на 32-разрядных ОС GNU/Linux для процессоров на базе ARM (ARMv7+). Это включает в себя такие платформы как Raspberry Pi 2 (и более новые) и все доступные для них ОС GNU/Linux (такие как Raspbian Pi ОС), как текущие так и будущие версии. Эта версия не будет работать на более старых архитектурах ARM, таких как ARMv6 на которой основаны Raspberry Pi 0 & 1, а также не будет работать под ОС, в которых не реализовано необходимое окружение GNU/Linux (таких как Android).
  • linux-arm64 работает на 64-разрядных ОС GNU/Linux для процессоров на базе ARM (ARMv8+). Это включает в себя такие платформы как Raspberry Pi 3 (и более новые) и все доступные для них ОС GNU/Linux для архитектуры AArch64 (такие как Debian), как текущие так и будущие версии. Этот вариант не будет работать с 32-разрядными ОС, в которых отсутствуют необходимые 64-разрядные библиотеки (такими как Raspbian), а также не будет работать под ОС, в которых не реализовано необходимое окружение GNU/Linux (таких как Android).
  • linux-x64 работает на 64-разрядных ОС GNU/Linux. Это включает в себя Alpine, CentOS/Fedora/RHEL, Debian/Ubuntu, OpenSUSE/SLES и многие другие, включая их производные, текущих и будущих версий.
  • osx-arm64 работает с 64-разрядными операционными системами OS X на базе ARM (Apple Silicon). Это включает в себя версию 11, и более новые.
  • win-x64 работает на 64-разрядных ОС OS X. Это включает в себя версию 10.15, и более новые.
  • win-x64 работает на 64-разрядных ОС Windows. This includes 10, 11, Server 2012+ as well as future versions.

Разумеется, даже если под ваше сочетание ОС и архитектуры отсутствует готовый пакет, вы всегда можете самостоятельно установить подходящую среду выполнения .NET Core и запустить универсальный пакет ASF (generic), это и есть основная причина, почему он существует. Универсальный пакет ASF не зависим от платформы и будет работать на любой, на которой есть работоспособная среда выполнения .NET Core. Важно отметить - ASF требуется среда выполнения .NET Core, а не конкретная ОС или архитектура. К примеру, если вы пользуетесь 32-разрядной версией Windows, то несмотря на то, что нет отдельной версии ASF win-x86, вы всё равно можете установить .NET Core SDK версии win-x86 и без проблем запустить универсальный ASF. Мы просто не можем создать пакеты под все возможно используемые сочетания ОС-архитектура, поэтому приходится чем-то ограничиваться. x86 не попадает в это ограничение, поскольку это устаревшая архитектура как минимум с 2004 года.

Для просмотра полного списка поддерживаемых .NET Core 7.0 платформ и ОС, посетите раздел "release notes" в репозитории .NET Core.


Требования среды выполнения

Если вы используете пакет под конкретную ОС, вам не нужно беспокоиться о требуемой среде выполнения, поскольку ASF всегда включает в себя требуемую и актуальную среду исполнения, самое главное - чтобы у вас были установлены актуальные предусловия для .NET Core. Другими словами, вам не нужно устанавливать среду выполнения или SDK для .NET Core, поскольку пакеты под конкретную ОС требуют только присутствия необходимых библиотек в данной ОС (предусловий) и ничего более.

Однако, если вы пытаетесь запустить универсальный (generic) пакет ASF - вам следует убедиться, что среда .NET Core поддерживает необходимую ASF платформу.

ASF as a program is targeting .NET 7.0 (net7.0) right now, but it may target newer platform in the future. net7.0 is supported since 7.0.100 SDK (7.0.0 runtime), although ASF is configured to prefer latest runtime at the moment of compilation, so you should ensure that you have latest SDK (or at least runtime) available for your machine. Универсальная версия ASF может не запуститься, если ваша среда выполнения более старая, чем минимальная (целевая) используемая в процессе компиляции.

Если есть сомнения - проверьте, что использует наша система непрерывной интеграции для компиляции и развертывания сборок ASF на GitHub. Вы можете найти вывод dotnet --info в каждой сборке как часть этапа проверки .NET.

Clone this wiki locally