Глава 4. Проблемы совместимости

Содержание

4.1. На каких архитектурах/системах работает Debian GNU/Linux?
4.2. На каких ядрах работает Debian GNU/Linux?
4.3. Насколько Debian совместим с другими дистрибутивами Linux?
4.4. Насколько исходный код Debian совместим с другими системами Unix?
4.5. Можно ли использовать пакеты Debian (файлы «.deb») в системе RedHat/Slackware/… Linux? Можно ли использовать пакеты RedHat (файлы «.rpm») в системе Debian GNU/Linux?
4.6. Как установить не-Debian программу?

4.1. На каких архитектурах/системах работает Debian GNU/Linux?

Debian GNU/Linux содержит исходный код всех входящих в него программ, поэтому он должен работать на всех системах, которые поддерживаются ядром Linux. Подробности см. в Linux FAQ.

Текущий выпуск Debian GNU/Linux 10 содержит двоичный код для следующих архитектур:

  • amd64: системы с 64-битными процессорами AMD с расширением AMD64 и любыми процессорами Intel с расширением EM64T, и 64-битным пользовательским окружением;

  • arm64: поддерживает современные устройства на 64-битных процессорах ARM.

  • armel: машины ARM с процессором с обратным порядком байт;

  • armhf: альтернатива armel для машин ARMv7 с аппаратной плавающей запятой.

  • i386: ПК с процессорами Intel и совместимыми с ними, включая Intel 386, 486, Pentium, Pentium Pro, Pentium II (Klamath и Celeron), Pentium III и почти все совместимые процессоры от AMD, Cyrix и другие;

  • ia64: компьютеры Intel IA-64 («Itanium»);

  • mips:MIPS системы от SGI с прямым порядком байт — Indy и Indigo2; mipsel: MIPS системы с обратным порядком байт — Digital DECstation;

  • powerpc: некоторые машины IBM/Motorola PowerPC, включая модели PowerMac Apple Macintosh и машины с открытой архитектурой CHRP и PReP;

  • ppc64el: 64-битный перенос на PowerPC с порядком байтов от младшего к старшему, поддерживает некоторые новые процессоры PowerPC/POWER.

  • s390x: 64-битный перенос для машин IBM System z, заменил s390.

The development of binary distributions of Debian for hurd-i386 (for GNU Hurd kernel on i386 32-bit PCs), mipsel64 (for 64 bit MIPS in little-endian mode), powerpcspe (port for the "Signal Processing Engine" hardware), sparc64 (for 64 bit SPARC processors), sh (for Hitachi SuperH processors), and x32 (for amd64/x86_64 CPUs using 32-bit pointers) is currently underway.

Поддержка архитектуры m68k была прекращена в выпуске Etch (Debian 4.0), так как она не удовлетворяла требованиям ответственных за выпуск Debian. К данной архитектуре относятся машины Amiga и ATARI с процессорами Motorola 680x0, где x>=2 означает встроенный модуль MMU. Однако, даже не будучи частью официального стабильного выпуска, данный перенос всё ещё остаётся активным и доступен для установки, и может быть возвращён в число действующих в будущих выпусках.

Поддержка hppa (машины Hewlett-Packard с архитектурой PA-RISC ) и alpha (системы Compaq/Digital с архитектурой Alpha) была прекращена в выпуске Squeeze (Debian 6.0) по схожим причинам. Также в этом выпуске прекращена поддержка архитектуры arm, вследствие перехода на поддержку armel.

Support for the 32-bit s390 port (s390) was discontinued and replaced with s390x in Jessie (Debian 8). In addition, the ports to IA-64 and Sparc had to be removed from this release due to insufficient developer support.

Подробности см. на странице переносов.

Информация о загрузке, разметке диска, включении устройств PCMCIA (PC Card) и о прочих вопросах такого рода приведена в руководстве по установке.

4.2. На каких ядрах работает Debian GNU/Linux?

Beside Linux, Debian provides a complete, binary distribution for the following operating system kernels:

  • FreeBSD: provided through the kfreebsd-amd64 and kfreebsd-i386 ports, for 64-bit PCs and 32-bit PCs respectively. These ports were first released in Debian 6.0 Squeeze as a technology preview. However they were not part of the Debian 8 Jessie release.

Кроме этого, ведётся работа над следующими переносами:

  • avr32 — перенос для 32-битной архитектуры Atmel,

  • hurd-i386 — перенос для 32-битных ПК. В данном переносе будет использована GNU Hurd — новая операционная система, собираемая группой GNU,

  • sh — перенос для процессоров Hitachi SuperH.

Были попытки переноса дистрибутива на ядро NetBSD, где предоставлялись ядра netbsd-i386 (для 32-битных ПК) и netbsd-alpha (для машин Alpha), но эти переносы никогда не выпускались, и в данный момент работа над ними свёрнута.

Подробности см. на странице переносов.

4.3. Насколько Debian совместим с другими дистрибутивами Linux?

Debian developers communicate with other Linux distribution creators in an effort to maintain binary compatibility across Linux distributions. [1] Most commercial Linux products run as well under Debian as they do on the system upon which they were built.

Debian GNU/Linux придерживается Стандарта иерархии файловой системы Linux. Тем не менее, некоторые правила этого стандарта можно интепретировать по-разному, поэтому между Debian и другими системами Linux возможны различия.

4.4. Насколько исходный код Debian совместим с другими системами Unix?

Исходный код большинства приложений Linux совместим с другими системами Unix. Поддерживается почти всё, что есть в системах Unix System V, а также в свободных и коммерческих системах, происходящих от BSD. Однако, для бизнеса такое утверждение о Unix почти не имеет значения, потому что доказать это никак нельзя. В области разработки программного обеспечения необходима полная совместимость, а не совместимость «в большинстве случаев». Поэтому несколько лет тому назад назрела необходимость в стандартах, и теперь POSIX.1 (IEEE Стандарт 1003.1-1990) является одним из основных стандартов по совместимости исходного кода для Unix-подобных операционных систем.

ОС Linux ориентирована на соответствие POSIX.1, но стандарты POSIX стоят настоящих денег, а сертификация POSIX.1 (и FIPS 151-2) довольно дорога; это ещё более усложняет разработчикам Linux работу по достижению полного соответствия POSIX. Ввиду высокой стоимости сертификации маловероятно, что Debian получит официальное подтверждение о соответствии, даже если он полностью пройдёт аттестационный пакет. (Аттестационный пакет теперь свободно доступен, так что ожидается, что ещё больше людей будет работать над вопросами соответствия POSIX.1).

В Unifix GmbH (Брауншвейг, Германия) была разработана Linux-система, которая была сертифицирована как удовлетворяющая FIPS 151-2 (расширенный набор POSIX.1). Эта технология была доступна в собственном дистрибутиве Unifix, названном Unifix Linux 2.0, и в Lasermoon Linux-FT.

4.5. Можно ли использовать пакеты Debian (файлы «.deb») в системе RedHat/Slackware/… Linux? Можно ли использовать пакеты RedHat (файлы «.rpm») в системе Debian GNU/Linux?

В различных дистрибутивах Linux используются различные форматы пакетов и различные программы управления пакетами.

То, что вы, вероятно, сможете сделать

Существует программа для распаковки пакета Debian на Linux-машине, работающей под «чужим» дистрибутивом, и она, в общем, работает, в том смысле, что файлы будут распакованы. Обратный вариант скорее всего тоже будет работать, т. е. программа сможет распаковать пакет для RedHat или Slackware на машине, работающей под Debian GNU/Linux, и разместить большинство файлов по нужным каталогам. Это в значительной степени стало возможным благодаря существованию (и строгому соблюдению) стандарта иерархии файловой системы Linux. Для преобразования различных форматов пакетов друг в друга используется пакет Alien.

То, что вы, скорее всего, делать не захотите

Большинство программ управления пакетами при распаковке архива сохраняют какие-то управляющие файлы. Эти файлы обычно не стандартизированы. Поэтому распаковка пакета Debian на «чужой» машине может непредсказуемым (и навряд ли положительным) образом повлиять на программу управления пакетами этой системы. Таким же образом и архивы других дистрибутивов могут быть успешно распакованы их утилитами в системе Debian, но это может привести к сбоям системы управления пакетами Debian, когда придёт время обновления или удаления каких-нибудь пакетов, или даже просто при выводе списка пакетов, установленных в системе.

Лучший способ:

Стандарт Файловой Системы Linux (а, следовательно, и Debian GNU/Linux) требует, чтобы подкаталоги в /usr/local/ полностью находились в распоряжении пользователей. Поэтому пользователи могут распаковывать «чужие» пакеты в этот каталог, а затем лично управлять их настройкой, обновлением и удалением.

4.6. Как установить не-Debian программу?

Файлы в каталоге /usr/local/ не контролируются системой управления пакетами Debian. Поэтому хорошим вариантом будет размещение исходного кода нужных вам программ в каталоге /usr/local/src/. Например, файлы из пакета «foo.tar» можно распаковать в каталог /usr/local/src/foo. После сборки поместите двоичные файлы в /usr/local/bin/, библиотеки в /usr/local/lib/, а файлы настроек в /usr/local/etc/.

Если ваша программа и/или файлы на самом деле должны находиться в каком-то другом каталоге, их всё равно можно сохранить в /usr/local/, а в нужных местах создать соответствующие символьные ссылки на файлы из /usr/local/. Можно, например, сделать так:

ln -s /usr/local/bin/foo /usr/bin/foo

В любом случае, если вы получили пакет, авторские права на который позволяют его дальнейшее распространение, вам стоило бы подумать о создании из него пакета для Debian и отправке его в систему Debian. О том, как стать разработчиком пакета, читайте в руководстве по политике Debian (см. Раздел 12.1, «Какая ещё документация существует по системе Debian?»).



[1] The Linux Standard Base is a specification for allowing the same binary package to be used on multiple distributions. After Jessie (Debian 8) was released, Debian abandoned the pursuit of LSB compatibility. See this July 3, 2015 message from Didier Raboud and the following discussion for background information.