cpan对.local目录的使用可以重定向吗?
Can cpan's use of the .local directory be redirected?
我有一个 setuid 程序,然后代表用户以 root 身份调用 cpan。这适用于像 yum 这样的命令,但不适用于 cpan。我的问题是用户的主目录是 NFS 挂载共享,并使用 root-squash 选项,因此 root 无法访问用户的主目录。
Cpan 尝试在用户的主目录中创建 .local 目录,但由于 root-squash 而失败。
有没有办法配置 cpan,使其使用另一个路径作为构建包的基础?或者,有没有办法将 root 设置为记录的用户标识,以便 cpan 尝试在那里创建 .local 文件?
示例输出:
./cloudSoftware cpan foobar
mkdir /home/auto/ts00086/.local: 权限在 /usr/share/perl5/CPAN/HandleConfig.pm 第 589 行被拒绝。
cpan_home_dir_candidates
生成目录列表。
- 使用列表中包含
CPAN/MyConfig.pm
的第一个目录。
- 否则,使用列表中存在的第一个目录。
- 否则,使用列表中的第一个目录。
那么这个列表是如何构建的呢?
if ($CPAN::META->has_usable('File::HomeDir')) {
if ($^O ne 'darwin') {
push @dirs, File::HomeDir->my_data;
# my_data is ~/Library/Application Support on darwin,
# which causes issues in the toolchain.
}
push @dirs, File::HomeDir->my_home;
}
# Windows might not have HOME, so check it first
push @dirs, $ENV{HOME} if $ENV{HOME};
...
选项包括:
- 更改
HOME
环境变量(如果未安装 File::HomeDir)。
- 在
CPAN/HandleConfig.pm
中编辑 cpan_home_dir_candidates
以添加 push @dirs, "/alt/dir";
- ...
我有一个 setuid 程序,然后代表用户以 root 身份调用 cpan。这适用于像 yum 这样的命令,但不适用于 cpan。我的问题是用户的主目录是 NFS 挂载共享,并使用 root-squash 选项,因此 root 无法访问用户的主目录。
Cpan 尝试在用户的主目录中创建 .local 目录,但由于 root-squash 而失败。
有没有办法配置 cpan,使其使用另一个路径作为构建包的基础?或者,有没有办法将 root 设置为记录的用户标识,以便 cpan 尝试在那里创建 .local 文件?
示例输出:
./cloudSoftware cpan foobar mkdir /home/auto/ts00086/.local: 权限在 /usr/share/perl5/CPAN/HandleConfig.pm 第 589 行被拒绝。
cpan_home_dir_candidates
生成目录列表。
- 使用列表中包含
CPAN/MyConfig.pm
的第一个目录。 - 否则,使用列表中存在的第一个目录。
- 否则,使用列表中的第一个目录。
那么这个列表是如何构建的呢?
if ($CPAN::META->has_usable('File::HomeDir')) {
if ($^O ne 'darwin') {
push @dirs, File::HomeDir->my_data;
# my_data is ~/Library/Application Support on darwin,
# which causes issues in the toolchain.
}
push @dirs, File::HomeDir->my_home;
}
# Windows might not have HOME, so check it first
push @dirs, $ENV{HOME} if $ENV{HOME};
...
选项包括:
- 更改
HOME
环境变量(如果未安装 File::HomeDir)。 - 在
CPAN/HandleConfig.pm
中编辑cpan_home_dir_candidates
以添加push @dirs, "/alt/dir";
- ...