NixOSでは、FHS環境を使用してunixODBC
。sqlite-odbc
libreoffice
{ pkgs ? import <nixpkgs> {} }:
( pkgs.buildFHSUserEnv {
name = "odbc-sqlite-libreoffice";
targetPkgs = pkgs: with pkgs; [libreoffice unixODBC unixODBCDrivers.sqlite];
}).env
/etc/odbcinst.ini
しかし、これはoptionsで生成された設定ファイルと連携しますenvironment.unixODBCDrivers
が、それをchrootのファイルシステムに渡す方法がわかりません。
このオプションを試してみましたextraBuildCommands
。
extraBuildCommands = "ln -s /host/etc/odbcinst.ini /etc/odbcinst.ini";
しかし、これは正しいアプローチではないように見え、エラーが発生します。ln: failed to create symbolic link '/etc/odbcinst.ini': Permission denied
構成ファイルをどのように配置しますか?特定のシステム構成/ビルドに基づいて環境を作成する方法が必要です。
NixOSでODBCとSQLiteを構成する他の方法がある場合は、大歓迎です。
ベストアンサー1
だから調査してみることにしました。源泉、文書が非常に悪いからです。
明らかに派生した出力/ etcまたは/ varフォルダのファイルをbuildTargetsに追加すると、buildFHSUserEnvはそのファイルをFHS環境の適切な場所に自動的にコピーします。
私の場合は、設定ファイルを$ out / etc / odbcinst.iniに配置し、それをbuildTargetsに追加する簡単な派生コードを書きました。
odbcinst = pkgs.stdenv.mkDerivation {
name = "odbcinst";
buildCommand = ''
mkdir -p $out/etc
cp $odbcinst $out/etc/odbcinst.ini
'';
odbcinst = pkgs.writeTextFile {
name = "odbcinst-ini";
text = ''
[SQLite]
Description = ODBC driver for SQLite
Driver = /lib/libsqlite3odbc.so
'';
};
}
望むより:
[...]$ nix-shell odbc.nix
odbc-chrootenv:[...]$ ls /etc
asound.conf hosts mtab pam.d resolv.conf sudoers
default localtime nsswitch.conf passwd shadow sudoers.d
fonts login.defs odbcinst.ini profile ssl zoneinfo
group machine-id os-release profile.d static
Libreofficeはファイルを認識しましたが、sqliteライブラリを読み取れないというあいまいなエラーが発生しました。だからあきらめてUbuntu仮想マシンで実行しました。