Mirror-DTC の Ubuntu 16.04 用 Client を NixOS で実用してみた
読了まで:約2分
と
Mirror-DTC とは?
で、
な
Mirror-DTC の Ubuntu 16.04 用 Client を NixOS で実用したとは?
それで、
- Windows 7 - Windows 10(Client, Server)
- OSX 10.8 - macOS 10.13 (Client, Server)
- Ubuntu 14.04 LTS - Ubuntu 16.04 LTS (Client, Server)
- Android 2.3 - Android 7.1 (Client)
と
……のだけれども、
で、nixpkgs
向けの
{ stdenv, requireFile, unzip, patchelf,
xorg, gtkmm3, atkmm, pangomm, cairomm, glibmm, glib, gtk3, gdk_pixbuf,
libsigcxx, expat, zlib, libdrm, libpulseaudio }:
stdenv.mkDerivation rec {
name = "mirror-dtc-client-${version}";
version = "1.3.1";
src = requireFile {
name = "MirrorDTC_U131.zip";
sha256 = "1i3s7sxb4y7vqsql0d1k400cqy1pmjmh3zvcpy9bmi8779n0kyh3";
url = "http://t-ishii.la.coocan.jp/hp/mc/index.html";
};
nativeBuildInputs = [ unzip patchelf ] ;
buildInputs = (with xorg; [
libpthreadstubs libxcb libxshmfence libXdamage libXfixes libX11 libXxf86vm libXext libXau libXdmcp
]) ++ [
gtkmm3 atkmm pangomm cairomm glib glibmm gtk3 gdk_pixbuf libsigcxx zlib libdrm libpulseaudio stdenv.cc.cc
];
libPath = (stdenv.lib.makeLibraryPath buildInputs) + ":/run/opengl-driver/lib";
unpackPhase = ''
unzip ${src}
'';
dontStrip = true;
dontPatchelf = true;
installPhase = ''
mkdir -p $out/bin
cp MirrorDTC_U131/Client/bin/MCClient.ini $out/bin
cp MirrorDTC_U131/Client/bin/mcclientu1604_64 $out/bin/mcclient
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath ${libPath} \
$out/bin/mcclient
'';
}
それで、
ちなみに、
で
Headless で、
かつ 4k (実際には 3k) での 表示可能に した
と
但し、
以上
ちなみに、
ldd
で実行バイナリが 依存する 動的ライブラリを 調べる - そのライブラリの
パスを patchelf
でrpath
に仕込む - かつ、
実行バイナリの interpreter
に$(cat $NIX_CC/nix-support/dynamic-linker)
でNixOS の glibc に リンクさせる
と
ただ、patchelf
とLD_LIBRARY_PATH
linux-ld.so