dev-lang/dmdのインストールでハマったのでメモ。
2023/4/24日現在の最新のdev-lang/dmd-2.099.1をインストールしようとすると、dmd自身のコンパイルに、dmdが必要という再帰的な要求が。。。。
結論としては、手に入る最も古いバージョンのdmdをインストールして、徐々にアップグレードをしていくと、最新版までインストールできた。
途中、インストールに失敗するバージョンもあったので、諦めずにインストールできるバージョンをインストールしていく。
# emerge =dev-lang/dmd-2.064.2-r7
# emerge =dev-lang/dmd-2.067.1-r8
# emerge =dev-lang/dmd-2.080.1-r3
# emerge =dev-lang/dmd-2.090.1
# emerge =dev-lang/dmd-2.098.1
# emerge =dev-lang/dmd-2.099.1
# emerge -u dev-lang/dmd
dmd-2.068.2-r9 や emerge =dev-lang/dmd-2.069.2-r6 はインストールに失敗した。
また、2.064.2-r7を入れてすぐに最新の2.099.1にアップデートしようとしたら、これまた失敗した。
dmd-2.068.2-r9 や emerge =dev-lang/dmd-2.069.2-r6 はインストールに失敗した。
手順
そもそも、gentooの公式リポジトリにdmdは登録されていないので、dlangというoverlayを読み込む。今回は、以前使用したlaymanコマンドを使った。-aオプションは登録。削除は-dオプション。
# layman -a dlang
* Adding overlay...
* Overlay "dlang" is not official. Continue installing? [y/n]: y
* Running Git... # ( cd /var/lib/layman && /usr/bin/git clone https://github.com/gentoo/dlang.git /var/lib/layman/dlang )
Cloning into '/var/lib/layman/dlang'...
remote: Enumerating objects: 5285, done.
remote: Counting objects: 100% (514/514), done.
remote: Compressing objects: 100% (212/212), done.
remote: Total 5285 (delta 288), reused 501 (delta 280), pack-reused 4771
Receiving objects: 100% (5285/5285), 1.14 MiB | 6.39 MiB/s, done.
Resolving deltas: 100% (3108/3108), done.
* Running Git... # ( cd /var/lib/layman/dlang && /usr/bin/git config user.name "layman" )
* Running Git... # ( cd /var/lib/layman/dlang && /usr/bin/git config user.email "layman@localhost" )
* Successfully added overlay(s) dlang.
なお、laymanの代わりにeselect-repositoryを使うこともできるようになっていた。
# emerge -uDNtpv app-eselect/eselect-repository
These are the packages that would be merged, in reverse order:
Calculating dependencies... done!
Dependency resolution took 5.66 s.
[ebuild N ] app-eselect/eselect-repository-13::gentoo USE="-test" PYTHON_SINGLE_TARGET="python3_10 -python3_9 -python3_11" 9 KiB
[ebuild N ] dev-python/lxml-4.9.2::gentoo USE="threads -doc -examples -test" PYTHON_TARGETS="python3_10 (-pypy3) -python3_9 -python3_11" 935 KiB
Total: 2 packages (2 new), Size of downloads: 944 KiB
# emerge -uDN app-eselect/eselect-repository
# eselect repository list -i
Available repositories:
[90] dlang @
[135] gentoo # (https://gentoo.org/)
laymanで入れているのですでにdlangが含まれていたが、laymanを使っていなければ、下記で"dlang" overlayを追加できる
# eselect repository enable dlang
# emerge --sync dlang
ここからがハマったところ。
dev-lang/dmd-2.099.1:2.099のemerge時に、dmdコマンドが無いというエラー(下記)が出て先に進まない。
* Package: dev-lang/dmd-2.099.1:2.099
* Repository: dlang
* USE: abi_x86_64 amd64 elibc_glibc kernel_linux selfhost userland_GNU
* FEATURES: network-sandbox preserve-libs sandbox selinux sesandbox userpriv usersandbox
>>> Unpacking source...
>>> Unpacking dmd.2.099.1.linux.tar.xz to /data2/var/tmp/portage/dev-lang/dmd-2.099.1/work
>>> Source unpacked in /data2/var/tmp/portage/dev-lang/dmd-2.099.1/work
>>> Preparing source in /data2/var/tmp/portage/dev-lang/dmd-2.099.1/work/dmd2 ...
* Applying 2.097-link-32-bit-shared-lib-with-ld.bfd.patch ...
[ ok ]
>>> Source prepared.
>>> Configuring source in /data2/var/tmp/portage/dev-lang/dmd-2.099.1/work/dmd2 ...
>>> Source configured.
>>> Compiling source in /data2/var/tmp/portage/dev-lang/dmd-2.099.1/work/dmd2 ...
* Building dmd build script...
dmd dmd/src/build.d -L-O1 -L--as-needed -ofdmd/generated/build
/data2/var/tmp/portage/dev-lang/dmd-2.099.1/temp/environment: line 1273: dmd: command not found
* ERROR: dev-lang/dmd-2.099.1::dlang failed (compile phase):
* (no error message)
*
* Call stack:
* ebuild.sh, line 136: Called src_compile
* environment, line 3654: Called dmd_src_compile
* environment, line 1445: Called dlang_compile_bin 'dmd/generated/build' 'dmd/src/build.d'
* environment, line 1186: Called dlang_exec 'dmd' 'dmd/src/build.d' '-L-O1' '-L--as-needed' '-ofdmd/generated/build'
* environment, line 1273: Called die
* The specific snippet of code:
* ${@} || die
*
* If you need support, post the output of `emerge --info '=dev-lang/dmd-2.099.1::dlang'`,
* the complete build log and the output of `emerge -pqv '=dev-lang/dmd-2.099.1::dlang'`.
* The complete build log is located at '/data2/var/tmp/portage/dev-lang/dmd-2.099.1/temp/build.log'.
* The ebuild environment file is located at '/data2/var/tmp/portage/dev-lang/dmd-2.099.1/temp/environment'.
* Working directory: '/data2/var/tmp/portage/dev-lang/dmd-2.099.1/work/dmd2'
* S: '/data2/var/tmp/portage/dev-lang/dmd-2.099.1/work/dmd2'
gccもD言語のコンパイラを用意できるようなので、
# USE="d" emerge -uDN =sys-devel/gcc-12.2.1_p20230304
を行い(gcc-12ではなく、gcc-11がインストールされた。おまけにgcc-12はコンパイルでコケた。)、改めてdmdのインストールをしてみたが、同じエラー
dmdの公式サイトから、直接インストールをしてみたりといろいろやったが、最終的には、前述のように、手に入る最も古いバージョンをインストールして、徐々にアップグレードすることで対応できた。
0 件のコメント:
コメントを投稿