Ubuntu 22.04 にマルチユーザー nix インストールがあります。 gzipに依存するRパッケージを開発しようとしていますが、gzip圧縮機能を使用できるようにヘッダーを使用してインストールすることはdata.table
できません。data.table
zlib
fwrite
これがdefault.nix
私が使用するものですdirenv
:
with import <nixpkgs> {};
let
rlibs = with rPackages; [
R
Rcpp
data_table
roxygen2
pkgbuild
];
_libs = with pkgs; [
zlib
ccls
];
in mkShell {
nativeBuildInputs = [
rlibs
_libs
];
}
すべてがうまくインストールされ実行されますが、電話すると
fwrite(iris, "iris.txt.gz', compress="gzip")
わかりました。
Compression in fwrite uses zlib library. Its header files were not found at the time data.table was compiled. To enable fwrite compression, please reinstall data.table and study the output for further guidance.
最初はダメなので追加してzlib
再default.nix
インストールもしてみました。これを行うには、パッケージ全体を消去する必要があります。これは可能ですが、nix-store --delete
これにより指定されたすべてのパッケージをガベージコレクションすることもできます。しかし、再インストールしても問題は解決しませんでした。確認する出力も表示されません。
zlib
依存関係として指定する方法は? nixを使ってパッケージを再インストールする方法はありますか?オンラインでこれに関するドキュメントが見つかりません。結果は個々のパッケージではなくnixの完全な再インストールに関するものです。
更新:私も試してみました
nix-shell -p pkg-config zlib R rPackages.data_table
。
インストール中にdata.table
pkg-configが見つからないというメッセージが表示されます。ただし、そのシェルで実行すると、次のようにpkg-config --libs zlib
なります。
-L/nix/store/37a5krk4a1a8vhl93q2bm9nbv8hymyii-zlib-1.2.13/lib -lz
nix 手動オーバーライドを試しても機能しません。
{
packageOverrides = super: let self = super.pkgs; in
{
rEnv = super.rWrapper.override {
packages = with self.rPackages; [
data_table
];
};
};
}
答え1
通常、インタプリタを使用する場合は、インタプリタの一部として宣言されたパッケージのみを使用できます。 Rの場合、これは次のように達成できます。rWrapper
書く。