nix-shell default.nix:zlib依存関係を使用してrPackages.data_tableをインストールする方法は?

nix-shell default.nix:zlib依存関係を使用してrPackages.data_tableをインストールする方法は?

Ubuntu 22.04 にマルチユーザー nix インストールがあります。 gzipに依存するRパッケージを開発しようとしていますが、gzip圧縮機能を使用できるようにヘッダーを使用してインストールすることはdata.tableできません。data.tablezlibfwrite

これが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.

最初はダメなので追加してzlibdefault.nixインストールもしてみました。これを行うには、パッケージ全体を消去する必要があります。これは可能ですが、nix-store --deleteこれにより指定されたすべてのパッケージをガベージコレクションすることもできます。しかし、再インストールしても問題は解決しませんでした。確認する出力も表示されません。

zlib依存関係として指定する方法は? nixを使ってパッケージを再インストールする方法はありますか?オンラインでこれに関するドキュメントが見つかりません。結果は個々のパッケージではなくnixの完全な再インストールに関するものです。

更新:私も試してみました

nix-shell -p pkg-config zlib R rPackages.data_table

インストール中にdata.tablepkg-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書く

おすすめ記事