conda env create 退出并验证交易:/被杀死

Posted

技术标签:

【中文标题】conda env create 退出并验证交易:/被杀死【英文标题】:conda env create exiting with Verifying transaction: / Killed 【发布时间】:2019-08-12 21:27:02 【问题描述】:

我正在尝试通过 Ubuntu18 上的 conda 从现有环境创建一个环境。我想通过导出一个 environment.yml 文件然后使用它来创建另一个环境来实现这一点。问题是它在创建环境之前终止而没有错误消息。

(nenv) nick ~$ conda env export --name nenv > nenv.yml
(nenv) nick ~$ sudo su - testusr
testusr@ip:~$ conda env create --name myenv --file /home/nick/nenv.yml 
Collecting package metadata (repodata.json): done
Solving environment: done
Preparing transaction: done
Verifying transaction: / Killed

无论出于何种原因,它一直在“验证交易”上崩溃。我已经在一个安装到公共路径的环境和另一个安装到用户目录的环境上尝试过这个。

一些注意事项:

    这是 linux 上的多用户 anaconda 安装

    根 conda 环境位于 /opt/conda/

    用户正在使用conda env create 中的根conda 二进制文件

    conda 4.7.11

我已经能够在用户之间创建共享环境,但我还想弄清楚如何使用需求文件类型方法(对于 JupyterHub 内核)为两个不同的用户拥有相同 conda 环境的副本。


在非常有用的评论之后,我看到有很多权限错误。我很可能从这里得到它。绝对应该考虑寻找详细标志??????如果我找到解决方案将在此处更新:

... (much more ☝️)
DEBUG conda.gateways.disk.create:create_link(363): PermissionError(1, 'Operation not permitted')
DEBUG conda.gateways.disk.create:create_link(367): hard-link failed. falling back to copy
  error: PermissionError(1, 'Operation not permitted')
  src: /opt/conda/pkgs/seaborn-0.9.0-py37_0/info/index.json
  dst: /home/scientist/.conda/envs/nenv/.tmp.index.json.ce11d637
DEBUG conda.gateways.disk.create:create_link(363): PermissionError(1, 'Operation not permitted')
DEBUG conda.gateways.disk.create:create_link(367): hard-link failed. falling back to copy
  error: PermissionError(1, 'Operation not permitted')
  src: /opt/conda/pkgs/anaconda-2019.03-py37_0/info/index.json
  dst: /home/scientist/.conda/envs/nenv/.tmp.index.json.26122231
DEBUG conda.core.link:_get_python_version(812): found in current transaction python version 3.7.3
done
Verifying transaction: ...working... Killed

【问题讨论】:

添加详细标志(-v 用于 INFO;-vv 用于 DEBUG;-vvv 用于 TRACE)至少应该让您更准确地跟踪故障。我知道的唯一日志在 conda-meta/history 中,但这是特定于环境的,如果您未能创建环境,我认为不会记录任何内容。 谢谢!我想我看到了问题。 【参考方案1】:

所以,答案是我的 anaconda 安装方式存在权限问题。我最初以 root 身份将它安装到 /opt/conda,这使得包括环境创建在内的一些功能显然不起作用。

有趣的是,我炸毁了服务器并重新创建了它(它有一个可以设置它的 ansible 剧本)并且安装(虽然仍然由 root 拥有)没有我在这个问题中提出的相同问题。也许新版本的 conda 在创建环境时不会出现这个问题。


记录我在这里所做的事情,因为它进步;但是,如果有人从我的最新观点中知道出了什么问题,我会将其标记为正确答案!

按照此处的指南进行操作:https://support.anaconda.com/hc/en-us/articles/360023865574-Multi-User-Anaconda-Installation-on-Linux

(nenv) nick ~$ ls -al /opt/
total 12
drwxr-xr-x  3 root root 4096 Jul 14 10:22 .
drwxr-xr-x 23 root root 4096 Aug 12 18:45 ..
drwxr-xr-x 26 root root 4096 Aug 12 22:10 conda
(nenv) nick ~$ sudo chgrp -R developers /opt/conda/
(nenv) nick ~$ ls -al /opt/
total 12
drwxr-xr-x  3 root root       4096 Jul 14 10:22 .
drwxr-xr-x 23 root root       4096 Aug 12 18:45 ..
drwxr-xr-x 26 root developers 4096 Aug 12 22:10 conda
(nenv) nick ~$ sudo chmod 770 -R /opt/conda/
(nenv) nick ~$ ls -al /opt/
total 12
drwxr-xr-x  3 root root       4096 Jul 14 10:22 .
drwxr-xr-x 23 root root       4096 Aug 12 18:45 ..
drwxrwx--- 26 root developers 4096 Aug 12 22:10 conda

此时根据 conda 文档,我应该能够创建环境..但我不能。现在的错误是:

DEBUG conda.gateways.disk.permissions:make_writable(38): tried make writable but failed: /opt/conda/envs/nenv/.tmp.index.json.42434629
PermissionError(1, 'Operation not permitted')
DEBUG conda.gateways.disk.permissions:make_writable(38): tried make writable but failed: /opt/conda/envs/nenv/.tmp.index.json.c45bcb48
PermissionError(1, 'Operation not permitted')
DEBUG conda.gateways.disk.permissions:make_writable(38): tried make writable but failed: /opt/conda/envs/nenv/.tmp.index.json.11a11e9d
PermissionError(1, 'Operation not permitted')
DEBUG conda.core.link:_get_python_version(812): found in current transaction python version 3.7.3
done
Verifying transaction: ...working... Killed

相当混乱,因为用户是拥有整个目录的组的一部分。

【讨论】:

以上是关于conda env create 退出并验证交易:/被杀死的主要内容,如果未能解决你的问题,请参考以下文章

pycharm配置深度学习环境:conda env create -f environment.yml报错

conda 迁移环境

conda env create -f environment.yml报错ResolvePackageNotFound和Found conflicts的解决方案已解决

linux中conda虚拟环境使用(便于项目切换)pip和conda换源

Linux下conda虚拟环境

text 创建一个conda env并安装gradupwarp