名 称
dpkg-architecture − パ ッ ケ ー ジ 構 築 用 に ア ー キ テ ク チ ャ を 決 定 ・ 設 定 す る
書 式
dpkg-architecture [options] [action] 有 効 な オ プ シ ョ ン : −aDebian-Architecture −tGnu-System-Type −f 有 効 な ア ク シ ョ ン : −l, −qVariable-Name, −s, −u, −c Command
説 明
dpkg-architecture は パ ッ ケ ー ジ 構 築 用 に 、 ビ ル ド ・ ホ ス ト ア ー キ テ ク チ ャ を 決 定 ・ 設 定 す る 機 構 を 提 供 す る 。
概 要
ビ ル ド ア ー キ テ ク チ ャ は 、 常 に dpkg へ の 外 部 呼 び 出 し に よ っ て 決 定 さ れ 、 コ マ ン ド ラ イ ン で は 設 定 で き な い 。
−a か −t ま た は 両 方 の オ プ シ ョ ン で 、 ホ ス ト ア ー キ テ ク チ ャ を 指 定 で き る 。 デ フ ォ ル ト で は 、 gcc へ の 外 部 呼 び 出 し で 決 定 さ れ る が 、 CC と gcc の 両 方 が 利 用 で き な い 場 合 、 ビ ル ド ア ー キ テ ク チ ャ と 同 じ に な る 。 −a と −t の ど ち ら か で 十 分 だ が 、 他 方 の 値 は 使 用 可 能 な デ フ ォ ル ト に セ ッ ト さ れ る 。 実 際 に は 、 選 択 し た も の が デ フ ォ ル ト と 一 致 し な い 場 合 、 dpkg-architecture が 警 告 す る の で 、 た い て い 1 つ を 指 定 す る だ け の ほ う が よ い 。 デ フ ォ ル ト の ア ク シ ョ ン は −l で 、 1行 ご と 変 数 名 =値 の 形 で 環 境 変 数 を 表 示 す る 。 単 一 の 変 数 の 値 を 表 示 し た い だ け な ら 、 −q を 利 用 し て も よ い 。 −s を 指 定 し た 場 合 、 export コ マ ン ド 形 式 で 出 力 す る 。 こ れ に eval を 用 い て 、 環 境 変 数 の 設 定 (set) に 使 用 で き る 。 −u は 、 全 変 数 を 解 除 (unset) す る コ マ ン ド を 返 す 。 −c は 、 決 定 し た 値 を 全 変 数 に 設 定 し た 環 境 で 、 コ マ ン ド を 実 行 す る 。
−f 強 制 フ ラ グ が 指 定 さ れ た 場 合 を 除 き 、 ス ク リ プ ト で 使 用 さ れ る の と 同 名 の 既 存 の 環 境 変 数 は 、 上 書 き さ れ な い 。 こ れ は dpkg-architecture へ の 呼 び 出 し を 、 他 の ス ク リ プ ト (例 え ば dpkg-buildpackage) に 埋 め 込 ん で も 、 ユ ー ザ が 値 を 上 書 き で き る と い う こ と で あ る 。 −q ク エ リ オ プ シ ョ ン に は 、 −f を 暗 黙 に 指 定 す る 。 そ の た め 、 既 存 の 環 境 設 定 に よ っ て 影 響 さ れ な い 。
用 語
ビ ル ド マ シ ン
(build machine) パ
ッ ケ ー ジ の 構
築 を 行 う マ シ
ン 。 ホ ス ト マ
シ ン
(host machine) 構 築 し た パ
ッ ケ ー ジ を 使
用 す る マ シ ン
。
Debian ア ー キ テ ク チ
ャ (Debian Architecture)
FTP ア ー カ イ ブ の バ イ ナ リ ツ リ ー で 指 定 す る Debian ア ー キ テ ク チ ャ 文 字 列 。 例 : i386, sparc, hurd-i386.
GNU シ ス テ ム タ イ プ ( GNU System Type)
cpu-system や cpu-vendor-system と い っ た 、 2, 3 パ ー ト か ら 成 る ア ー キ テ ク チ ャ 仕 様 文 字 列 。 例 : i386-linux, sparc-linux, i386-gnu.
例
dpkg-buildpackage は −a オ プ シ ョ ン を 受 け 付 け 、 そ の ま ま dpkg-architecture に 渡 す 。 そ の 他 の 用 例 :
CC=i386-gnu-gcc dpkg-architecture -c debian/rules build
eval ’dpkg-architecture -u’
変 数
dpkg-architecture
は 以 下 の 変 数
を 設 定 す る :
DEB_BUILD_ARCH ビ ル ド マ
シ ン の Debian ア ー キ
テ ク チ ャ
DEB_BUILD_GNU_TYPE ビ ル ド
マ シ ン の GNU
シ ス テ ム タ イ
プ
DEB_BUILD_GNU_CPU
DEB_BUILD_GNU_TYPE の CPU 部
DEB_BUILD_GNU_SYSTEM
DEB_BUILD_GNU_TYPE の シ ス テ ム 部
DEB_HOST_ARCH
ホ ス ト マ シ ン
の Debian ア ー キ テ ク
チ ャ
DEB_HOST_GNU_TYPE ホ ス ト
マ シ ン の GNU
シ ス テ ム タ イ
プ
DEB_HOST_GNU_CPU
DEB_HOST_GNU_TYPE の CPU 部
DEB_HOST_GNU_SYSTEM
DEB_HOST_GNU_TYPE の シ ス テ ム 部
DEBIAN/RULES
dpkg-architecture で 設 定 し た 環 境 変 数 は 、 debian/rules に make 変 数 (make 文 書 を 参 照 ) と し て 渡 さ れ る 。 必 要 で あ れ ば 、 構 築 プ ロ セ ス で こ の 変 数 を 使 用 で き る し 、 使 用 す る べ き で あ る 。 以 下 、 パ ッ ケ ー ジ で の ク ロ ス コ ン パ イ ル サ ポ ー ト の 改 良 方 法 も 示 す 、 使 用 例 で あ る :
ARCH=’dpkg --print-architecture’ configure $(ARCH)−linux 上 記 に 代 え て
B_ARCH=$(DEB_BUILD_GNU_TYPE) H_ARCH=$(DEB_HOST_GNU_TYPE) configure --build=$(B_ARCH) --host=$(H_ARCH) と す る 。
ARCH=’dpkg
--print-architecture’ ifeq ($(ARCH),alpha)
... endif こ の 代 わ り
に
ARCH=$(DEB_HOST_ARCH)
ifeq ($(ARCH),alpha)
... endif と す る 。 一
般 的 に 、 ア ー
キ テ ク チ ャ 情
報 を 取 得 す る
た め に は 、 rules フ
ァ イ ル で dpkg を 呼
ぶ べ き で は な
い (後 述 の 後 方
互 換 性 を 提 供
す る ま で )。 特
に --print-architecture オ プ シ
ョ ン は 、 プ ロ
セ ッ サ 名 と 等
し く な い Debian ア ー
キ テ ク チ ャ が
で き て 以 来 、
当 て に で き な
い 。
後 方 互 換 性
新 機 構 を 提 供 す る と き に 、 プ ロ グ ラ ム の 旧 バ ー ジ ョ ン と の 互 換 性 を 確 保 す る の は 、 常 に よ い 考 え で あ る 。 dpkg-architecture は 古 い debian/rules フ ァ イ ル に は 影 響 を 及 ぼ さ な い 。 そ の た め 、 新 し い debian/rules フ ァ イ ル で 、 古 い 構 築 ス ク リ プ ト を 使 用 す る 事 を 考 慮 す る だ け で あ る こ と に 注 意 し て ほ し い 。 以 下 は そ の 方 法 で あ る :
DEB_BUILD_ARCH
:= $(shell dpkg --print-installation-architecture)
DEB_BUILD_GNU_CPU := $(patsubst hurd-%,%,$(DEB_BUILD_ARCH))
ifeq ($(filter-out hurd-%,$(DEB_BUILD_ARCH)),)
DEB_BUILD_GNU_SYSTEM := gnu else
DEB_BUILD_GNU_SYSTEM := linux endif
DEB_BUILD_GNU_TYPE=$(DEB_BUILD_GNU_CPU)−$(DEB_BUILD_GNU_SYSTEM)
DEB_HOST_ARCH=$(DEB_BUILD_ARCH) DEB_HOST_GNU_CPU=$(DEB_BUILD_GNU_CPU) DEB_HOST_GNU_SYSTEM=$(DEB_BUILD_GNU_SYSTEM) DEB_HOST_GNU_TYPE=$(DEB_BUILD_GNU_TYPE)
debian/rules
フ ァ イ ル の 一
番 上 に の 上 記
の 行 の サ ブ セ
ッ ト を 置 く こ
と 。 dpkg-architecture を 使
用 す る 場 合 は
、 こ の デ フ ォ
ル ト 値 が 上 書
き さ れ る 。 フ
ル セ ッ ト は 必
要 な い 。 rules フ ァ
イ ル で 使 用 す
る 値 を 含 む 、
矛 盾 し な い セ
ッ ト を 選 ぶ こ
と 。 例 え ば 、
ホ ス ト Debian ア ー キ
テ ク チ ャ の み
必 要 と す る 場
合 、
’DEB_HOST_ARCH=’dpkg
--print-installation-architecture’ で 十
分 で あ る 。 (こ
れ は 確 か に ビ
ル ド マ シ ン の Debian
ア ー キ テ ク チ
ャ で あ る 。 し
か し 、 ネ イ テ
ィ ブ コ ン パ イ
ル と の 後 方 互
換 性 を 持 と う
と し て い る だ
け で あ る こ と
を 思 い 出 す こ
と )
(例 え ば 、 十 分 な ソ ー ス 依 存 関 係 を と に か く 宣 言 す る 場 合 な ど ) 旧 式 の 構 築 パ ッ ケ ー ジ に は 関 心 が な い か も し れ な い 。 し か し 、 少 な く と も 環 境 変 数 を 設 定 せ ず 、 ’debian/rules build’ を 直 接 呼 ん で パ ッ ケ ー ジ を 構 築 す る と い う 、 従 来 の 方 法 を サ ポ ー ト す る べ き だ 。 そ の た め に は 、 適 切 な デ フ ォ ル ト 値 を 取 得 す る −q オ プ シ ョ ン を 使 用 す る こ と 。
DEB_BUILD_ARCH=’dpkg-architecture −qDEB_BUILD_ARCH’ DEB_BUILD_GNU=’dpkg-architecture −qDEB_BUILD_GNU’ 上 記 等 の 用 法 が 考 え ら れ る 。 こ の よ う に 、 変 数 が 未 宣 言 で な い こ と を 保 証 で き る 。 こ れ が 旧 式 の 構 築 ス ク リ プ ト と の 後 方 互 換 性 を 壊 し 、 そ の た め に ソ ー ス 依 存 関 係 が 実 装 ・ 宣 言 さ れ る の で あ れ ば 、 あ え て そ う す る べ き で あ る 。
関 連 項 目
dpkg-buildpackage dpkg-cross
連 絡
rules フ ァ イ ル で の make 変 数 の 使 い 方 や 、 パ ッ ケ ー ジ の ク ロ ス コ ン パ イ ル サ ポ ー ト に つ い て の 疑 問 は 、 Marcus Brinkmann <brinkmd [AT] debian.org> ま で email を 送 っ て ほ し い 。
翻 訳 者
倉 澤 望 <nabetaro [AT] debian.jp>