ubuntu 20.04 命令行中 Nano 编辑器出现分段错误

Wal*_*l-E 4 linux sudo segmentation-fault tensorflow ubuntu-20.04

我有 Ubuntu 20.04。我的命令行文本编辑器(例如nano或 )pico无法再以用户身份在命令行中运行,我得到

user@hostname:~$ nano 
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

sudo nano但是,当我使用 sudo等执行此操作时,事情会起作用sudo pico...我没有这个问题vi

自从上次工作以来,我从 Ubuntu 进行了例行更新,并安装了几个带有conda. 我还编辑了使用 CUDA 工具包运行的张量流的 LD_LIBRARY_PATH:

echo $LD_LIBRARY_PATH

/usr/local/cuda-11.5/lib64:/usr/local/cuda/extras/CUPTI/lib64:/home/rattie/miniconda3/lib/

[更新] 看起来这个为张量流编辑的 LD_LIBRARY_PATH 是罪魁祸首。我在 conda 基本环境中编辑它,而不是隔离为使用张量流创建的虚拟环境中的更改(例如通过$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh)特别是,删除/home/rattie/miniconda3/lib/修复了问题,尽管我不明白为什么它导致我的命令(例如 nano)需要 sudo 权限。

Sax*_*owl 5

我认为您的问题来自库冲突或不兼容问题,您应该LD_LIBRARY_PATH仅针对需要它的特定虚拟环境(例如 TensorFlow 或 CUDA)进行设置。

让我们在虚拟环境中执行一个环境激活脚本:

首先让我们创建一个新目录mkdir -p $CONDA_PREFIX/etc/conda/activate.d,然后创建一个文件 env_vars.sh touch $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh并将其添加到其中:

#!/bin/sh
export OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.5/lib64:/usr/local/cuda/extras/CUPTI/lib64:/home/rattie/miniconda3/lib/:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

然后保存,我们将创建一个停用脚本来恢复原始LD_LIBRARY_PATH

mkdir -p $CONDA_PREFIX/etc/conda/deactivate.d 
Run Code Online (Sandbox Code Playgroud)

然后我们在其中创建一个文件 env_vars.shtouch $CONDA_PREFIX/etc/conda/deactivate.d/env_vars.sh

打开它并添加:

#!/bin/sh
export LD_LIBRARY_PATH=$OLD_LD_LIBRARY_PATH
unset OLD_LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

保存再试一下,冲突错误应该解决了