第4章 互換性の問題

# 第4章 互換性の問題

## 4.1. Debian GNU/Linux はどのハードウェアアーキテクチャ/システムで動作しますか?

Debian GNU/Linux には、収録する全プログラムの完全なソースコードが収録されているため、Linux カーネルによりサポートされるあらゆるシステムで動作するはずです。詳細については Linux FAQ を見てください。

現在の Debian GNU/Linux リリース 13 には以下のアーキテクチャ向けの完全なバイナリディストリビューションが収録されています:

- amd64: これは AMD64 拡張付きの AMD 64 ビット CPU や EM64T 拡張付きのあらゆる Intel CPU をベースとした一般的な 64 ビットユーザ空間のシステムを対象としています。

- arm64: 最新の 64ビット ARM 搭載機器をサポートしています。

- armel: リトルエンディアン ARM マシン

- armhf: ハードウェア浮動小数演算ユニット付き ARMv7 マシン用 armel の代替です。

- i386: これは Intel 及び互換プロセッサをベースとしたシステムを対象としています。Intel の 386、486、Pentium、Pentium Pro、Pentium II (Klamath と Celeron 両方)、Pentium III、AMD や Cyrix その他によるほとんどの互換プロセッサ等があります。

- ia64: Intel IA-64 (「Itanium」) コンピュータ。

- mips: SGI のビッグエンディアン MIPS システム、Indy や Indigo2。mipsel: リトルエンディアン MIPS マシン、Digital DECstations。

- powerpc: これは IBM/Motorola PowerPC マシン Apple Macintosh PowerMac モデル等の一部と CHRP 及び PReP オープンアーキテクチャのマシンを対象としています。

- ppc64el: 64ビットのリトルエンディアン PowerPC への移植版で、最近の複数の PowerPC/POWER プロセッサをサポートしています。

- s390x: IBM System z マシン用の s390 を置き換える 64 ビット版。

hurd-i386 (i386 32ビットPC用 GNU Hurd カーネル)、mipsel64 (リトルエンディアンモードの64ビット MIPS)、powerpcspe (「信号処理エンジン」ハードウェア向け移植版)、sparc64 (64ビット SPARC プロセッサ)、sh (日立 SuperH プロセッサ用)、x32 (32ビットのポインタを使用した amd64/x86_64 CPU) 向けの Debian バイナリディストリビューションの開発が現在進行中です。

m68k アーキテクチャは Etch (Debian 4.0) リリースで Debian リリース管理者の基準を満たさなかったためサポートから外されています。このアーキテクチャは Amiga や ATARI の MMU 付き Motorola 680x0 プロセッサ (68020 以降) を対象としています。この移植版では現在も積極的に活動があり、公式の安定版 (stable) リリースに収録されていなくてもインストール可能で、将来のリリースに再び収録されるかもしれません。

hppa (Hewlett-Packard の PA-RISC マシン) や alpha (Compaq/Digital の Alpha システム) のサポートは同じような理由で Squeeze (Debian 6.0) リリースで外されています。このリリースで armel アーキテクチャに置き換えられた arm も外されています。

32ビットの s390 移植版 (s390) のサポートは Jessie (Debian 8) で中止され、s390x に、置き換えられました。さらに、十分な開発者サポートを得られないため IA-64 及び Sparc 移植版がこのリリースで削除されています。

利用可能な移植版についてのさらなる情報については、ウェブサイトの移植版のページを見てください。

ブートやドライブのパーティション作業、PCMCIA (PC カード) デバイスの有効化、そのた同様の問題の詳細な情報についてはインストールマニュアルの指示に従ってください。このマニュアルは https://www.debian.org/releases/stable/installmanual のウェブサイトで利用可能です。

## 4.2. Debian GNU/Linux ではどのカーネルを実行しますか?

Linux 以外にも、Debian では以下のオペレーティングシステムのカーネル向けの完全なバイナリディストリビューションを提供しています:

- FreeBSD: 64 ビット PC 用と 32 ビット PC 用をそれぞれ kfreebsd-amd64 及び kfreebsd-i386 移植版で提供しています。この移植版は Debian 6.0 Squeeze で初めて、技術プレビューとしてリリースされました。しかし Debian 8 Jessie リリースの一部としては収録されませんでした。

上記に加え、以下について作業が進められています:

- avr32 Atmel の 32 ビット RISC アーキテクチャへの移植版。

- hurd-i386 32 ビット PC 用の移植版。この移植版は GNU グループの企画による新しいオペレーティングシステム GNU Hurd を使います。

- sh 日立 SuperH プロセッサへの移植版。

ディストリビューションを NetBSD カーネルに移植して netbsd-i386 (32 ビット PC 用) や 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 Filesystem Hierarchy Standard (FHS、ファイルシステム階層標準) を順守します。しかし、この標準の範囲内でもいくらか解釈の余地があるため、Debian システムと他の Linux システムの間にはわずかな違いがあるかもしれません。

## 4.4. Debian と他の Unix システムではどのくらいソースコードの互換性がありますか?

ほとんどのアプリケーションの Linux ソースコードが他の Unix システムと互換性があります。System V Unix システムやフリー及び商用の 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 Linux 2.0 という Unifix 自身のディストリビューションと Lasermoon の Linux-FT で利用可能でした。

## 4.5. Debian パッケージ (「.deb」ファイル) を Red Hat/Slackware/... Linux システムで使うことはできますか? Red Hat パッケージ (「.rpm」ファイル) を Debian GNU/Linux システムで使うことはできますか?

異なる Linux ディストリビューションでは異なるパッケージ形式、異なるパッケージ管理プログラムを使っています。

恐らくできるでしょう:

  Debian パッケージを「無関係の」ディストリビューションによる Linux ホストで展開するプログラムが利用可能で、ファイルが展開されるという意味では基本的には動作します。逆も恐らく真で、Red Hat や Slackware のパッケージを Debian GNU/Linux ベースのホストで展開するプログラムがあり、恐らくパッケージを展開して意図したディレクトリにほとんどのファイルを配置することに成功します。これは (広く守られている) Linux ファイルシステム階層標準 (FHS) が存在する結果です。異なるパッケージ形式の間の変換には 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 ポリシーマニュアルに収録されています (「Debian システム上の、あるいは 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.

第3章 Debian ディストリビューションの選択 |  | 第5章 Debian システムで利用可能なソフトウェア