无root权限下在Linux Conda环境安装libgcrypt-1.5.3-14.el7.x86_64.rpm问询
无Root权限下在Conda环境手动安装libgcrypt-1.5.3-14.el7.x86_64.rpm的方法
问题背景
需在Linux的Conda环境中安装libgcrypt-1.5.3-14.el7.x86_64.rpm,但无root权限,常规安装方法失效。代码作者指出安装该RPM可解决运行元强化学习代码时的报错,提示将文件解压到用户专属的类root存储空间(搭建自定义环境时存放环境文件的位置)即可解决问题。
报错信息
Traceback (most recent call last): File "/home/yan/cemrl/analysis_runner.py", line 275, in <module> main() File "/home/yan/miniconda3/envs/test1/lib/python3.9/site-packages/click/core.py", line 1137, in __call__ return self.main(*args, **kwargs) File "/home/yan/miniconda3/envs/test1/lib/python3.9/site-packages/click/core.py", line 1062, in main rv = self.invoke(ctx) File "/home/yan/miniconda3/envs/test1/lib/python3.9/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/yan/miniconda3/envs/test1/lib/python3.9/site-packages/click/core.py", line 763, in invoke return __callback(*args, **kwargs) File "/home/yan/cemrl/analysis_runner.py", line 272, in main analysis(variant, cemrl_compatibility) File "/home/yan/cemrl/analysis_runner.py", line 31, in analysis res = analysis(variant, cemrl_compatibility) File "/home/yan/cemrl/analysis_runner.py", line 42, in analysis initialize_networks(variant, env, experiment_log_dir) File "/home/yan/cemrl/philipp_runner.py", line 163, in initialize_networks exploration_agent = construct_exploration_agent( File "/home/yan/cemrl/cemrl_edited/exploration_agent.py", line 36, in construct_exploration_agent return EnsembleURLBAgent(num_exploration_ensemble_agents, env_name, env_args, exploration_type, experiment_log_dir, max_timesteps, exploration_pretraining_steps, showcase_itr, state_preprocessor) File "/home/yan/cemrl/cemrl_edited/exploration_agent.py", line 253, in __init__ self.agents.append(URLBAgent(*args, ensemble_id=i, **kwargs)) File "/home/yan/cemrl/cemrl_edited/exploration_agent.py", line 156, in __init__ self.train_env = URLBAgent.URLBEnvWrapper(env, max_timesteps) TypeError: Can't instantiate abstract class URLBEnvWrapper with abstract methods reset, step
手动安装步骤
1. 解压RPM包到临时目录
使用rpm2cpio和cpio工具解压RPM包(无需root权限):
# 创建临时目录 mkdir -p ~/temp_libgcrypt cd ~/temp_libgcrypt # 替换为你的RPM文件实际路径 rpm2cpio /path/to/libgcrypt-1.5.3-14.el7.x86_64.rpm | cpio -idmv
2. 复制文件到目标位置
根据作者提示,可选择将文件复制到Conda环境目录或用户专属本地存储目录:
选项A:直接复制到Conda环境
将解压后的库文件和头文件复制到你的Conda环境(示例为test1)对应目录:
# 复制库文件 cp -r usr/lib64/* ~/miniconda3/envs/test1/lib/ # 复制头文件(如果存在) cp -r usr/include/* ~/miniconda3/envs/test1/include/
选项B:复制到用户专属本地存储
如果偏好使用独立的用户本地存储,先创建目录再复制:
# 创建用户本地存储目录 mkdir -p ~/local/lib ~/local/include # 复制文件 cp -r usr/lib64/* ~/local/lib/ cp -r usr/include/* ~/local/include/
然后设置环境变量,确保系统能找到这些文件:
export LD_LIBRARY_PATH=~/local/lib:$LD_LIBRARY_PATH export C_INCLUDE_PATH=~/local/include:$C_INCLUDE_PATH export CPLUS_INCLUDE_PATH=~/local/include:$CPLUS_INCLUDE_PATH
若需永久生效,可将上述环境变量添加到Conda环境的激活脚本中:
mkdir -p ~/miniconda3/envs/test1/etc/conda/activate.d echo 'export LD_LIBRARY_PATH=~/local/lib:$LD_LIBRARY_PATH' >> ~/miniconda3/envs/test1/etc/conda/activate.d/env_vars.sh echo 'export C_INCLUDE_PATH=~/local/include:$C_INCLUDE_PATH' >> ~/miniconda3/envs/test1/etc/conda/activate.d/env_vars.sh echo 'export CPLUS_INCLUDE_PATH=~/local/include:$CPLUS_INCLUDE_PATH' >> ~/miniconda3/envs/test1/etc/conda/activate.d/env_vars.sh
3. 验证安装
运行以下命令检查库文件是否可被识别:
ldd ~/miniconda3/envs/test1/lib/libgcrypt.so.11 # 若用选项B则执行:ldd ~/local/lib/libgcrypt.so.11
之后重新运行你的元强化学习代码,确认报错是否消失。
内容的提问来源于stack exchange,提问作者Yanm
相关产品推荐
相关产品推荐

