Ubuntu常用命令以及配置环境遇到的问题
作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/
一、Ubuntu常用命令
# 打开Anaconda Prompt
# 打开主目录
nautilus ~/
# 查看conda版本
conda -V
# 查看cuda版本
nvcc -V
# 查看cuDNN版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
# 查看ubuntu版本
cat /proc/version
# 打开指定路径
cd /home/xxx/xxx/RL
# ubuntu下载软件
sudo apt-get install vim
# 查看显存占用和GPU利用率
nvidia-smi
watch -n 1 nvidia-smi
# 查看CPU使用情况
top # 终止按q
# 查看系统的总内存、已用内存、空闲内存、以及交换空间的使用情况
free -h
# 查看显卡型号
nvidia-smi -a
# 查看已安装包
conda list
# 安装包
conda install numpy
# 删除包
conda remove numpy
# 删除索引缓存、锁定文件、未使用的缓存包、tarball 和日志文件
conda clean --all -y
# 查看当前存放的虚拟环境
conda env list
# 创建python虚拟环境
conda create -n pytorch python=3.8
# 激活虚拟环境
conda activate tensorflow
conda activate pytorch
# 关闭虚拟环境
conda deactivate
# 删除虚拟环境
conda remove -n tensorflow --all
conda remove -n pytorch --all
# 按照env.yml创建环境,并安装相应软件
conda env create -f env.yml
sh install_envs.sh
# 导出/导入环境配置(复制别人的环境)
conda env export > env.yml
conda env create -f env.yml
# 导出/导入所有依赖库(复制别人的依赖库)
pip freeze > requirements.txt
pip install -r requirements.txt
# 修改conda环境名称
conda create --name newENV(新环境名称) --clone OldNEV(旧环境名称)
conda remove -n OldNEV(旧环境名称)--all
# 离线安装本地目录下的包
cd /home/xxx/xxx/dm_control
pip install -e .
cd ../dmc2gym
pip install -e .
cd ../../..
# 安装tensorflow(用的2.8.0)
pip install tensorflow==2.8.0
###pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple
###conda install --channel https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ tensorflow-gpu==2.8.0
# 安装pytorch(python版本为3.8)
https://download.pytorch.org/whl/torch_stable.html
离线先下载好torch与torchvision,然后
cd /home/xxx/下载/
pip install torch-1.13.1+cu116-cp38-cp38-linux_x86_64.whl
pip install torchvision-0.14.1+cu116-cp38-cp38-linux_x86_64.whl
pip install torchaudio-0.13.1+cu116-cp38-cp38-linux_x86_64.whl
# 查看Mujoco是否安装成功
cd ~/.mujoco/mujoco-2.3.2/bin
./simulate ../model/humanoid/humanoid.xml
# 去掉Ubuntu文件夹锁
先进到当前目录,然后执行
sudo chown -R xxx filename
sudo chown -R xxx .
其中xxx为Ubuntu用户名,filename为待解锁的文件夹名称
第二行命令表示解锁当前目录下的所有文件夹与文件
# 多张显卡,选用指定显卡
device=torch.device("cuda:1" if args.cuda else "cpu")
# 去除requirement.txt中的版本号,只保留包名
sed 's/[=<>!~]=.*//' requirements.txt > requirements_no_version.txt
# 添加环境变量
gedit ~/ .bashrc
export xxx
source ~/ .bashrc
例如:
export LD_LIBRARY_PATH=~/.mujoco/mujoco-2.3.2/bin
export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}
export MJLIB_PATH=/home/xxx/.mujoco/mujoco-2.3.2/lib/libmujoco.so.2.3.2
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so.2.1.0
二、一些错误以及解决方案
问题:AttributeError: 'dict' object has no attribute 'env_specs'
解决:换版本,pip install gym==0.25.2, 我用的是gym==0.22.0这个版本
问题:安装gym==0.19.0时出错error: subprocess-exited-with-error以及ModuleNotFoundError: No module named 'gym.envs.atari'
解决:pip install setuptools==65.5.0 pip==21,pip install gym==0.19.0
问题:ModuleNotFoundError: No module named 'numpy.exceptions'
解决:pip install numpy==1.26.4 scipy==1.11.4 --force-reinstall
问题:AttributeError: module 'ml_dtypes' has no attribute 'float8_e4m3b11'
解决:pip install ml_dtypes==0.2.0
问题:安装mujoco_py并测试时提示Cython.Compiler.Errors.CompileError
解决:pip uninstall cython
pip install cython==0.29.21
问题:undefined symbol: __glewBindBuffer
解决:
sudo apt-get install libglfw3
apt-cache search glew
sudo apt-get install libglew-dev
sudo apt-get install libglew2.1
同时添加环境变量
sudo gedit ~/.bashrc
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so
source ~/.bashrc
问题:GLEW initalization error: Missing GL version
解决:sudo apt-get install -y libglew-dev
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so
如果还失败的话,在终端先输入unset LD_PRELOAD再执行python程序。
问题:RuntimeError: Failed to initialize OpenGL
解决:先输入unset LD_PRELOAD再执行python程序。
问题:复现别人的代码,各种版本不兼容问题
解决:不按照原文作者给出的requirement.txt或者env.yml文件下载相应版本的依赖库,把版本号去掉,直接pip install xxx。运行程序缺啥下啥,下载时也不要指明版本号。
问题:PackageNotFoundError: Packages missing in current channels
解决:
anaconda search -t conda kornia
anaconda show forklift/kornia
conda install --channel https://conda.anaconda.org/forklift kornia
问题:TensorBoard打不开,错误代码:ERR_CONNECTION_REFUSED
解决:关闭WiFi
问题:bash: ./hello : 权限不够
解决:chmod a+x hello
问题:python matplotlib保存图片不全的解决办法
解决:plt.savefig('example.png')变成plt.savefig('example.png', dpi=600, bbox_inches='tight')
问题:nvidia-smi出错,错误原因$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
解决:解决办法一:安装必要的内核头文件
如果之前是正常的,重启后出现这个错误,很可能是Ubuntu内核版本升级造成的。让我们重新安装内核头文件。
$ sudo apt install linux-headers-`uname -r`
#or
$ sudo apt install linux-headers-$(uname -r)
然后输入nvidia-smi,输出可能正常。如果仍然错误,请继续使用以下方法。
解决办法二:使用 DKMS 重新安装内核的 NVIDIA 驱动程序
有时,重新启动计算机后,NVIDIA SMI会显示NVIDIA驱动程序丢失,这是由于Linux内核升级,以前的NVIDIA驱动程序与连接不匹配。
DKMS(Dynamic Kernel Module System)可以在内核变化后自动编译模块,并适应新的内核。它允许离散内核模块更新,而无需修改整个内核。使用 dkms 重新安装内核的相应驱动程序:
$ sudo apt install dkms
$ sudo dkms install -m nvidia -v 470.182.03
$ dkms status nvidia
nvidia/470.182.03, 5.15.0-88-generic, x86_64: installed
注意:上述命令行中的 470.182.03 是 NVIDIA 的版本号。当您不知道它时,请输入 /usr/src 目录,您将看到带有后缀的 nvidia 文件夹。或者,使用以下命令进行查询。
$ ls /usr/src | grep nvidia
nvidia-470.182.03
再次输入 nvidia smi 时,正确输出。
解决办法三:安装NVIDIA驱动程序
第 1 步:在安装驱动程序之前,请确保更新软件包存储库。运行以下命令:
$ sudo apt update
$ sudo apt upgrade
第 2 步:搜索 Nvidia 驱动程序,运行以下命令。输出显示适用于 GPU 的可用驱动程序列表。
$ apt search nvidia-driver
第 3 步:从可用 GPU 驱动程序列表中选择要安装的驱动程序。最合适的是经过最新测试的专有版本。
$ sudo apt install nvidia-driver-470
在本教程中,我们安装了 nvidia-driver-470,这是该 GPU 最新测试的专有驱动程序。
第 4 步:使用以下命令重新启动计算机:
# sudo reboot
再次输入 nvidia smi 时,正确输出。
解决办法四:
1. sudo apt-get install dkms
2. sudo apt-get install nvidia-driver-550
但是在进行第二步之前,不知道自己服务器nvidia-driver的版本号,可以采用命令来查找一下ubuntu-drivers devices
外加一条:禁止内核自动更新:sudo gedit /etc/apt/apt.conf.d/10periodic,将双引号中的“1”全部置“0”即可,修改后保存
问题:dpkg: 处理软件包 cgmanager (--configure)时出错:子进程已安装 post-installation 脚本返回错误状态 1,由于已经达到 MaxReports 限制,没有写入 apport 报告。dpkg: 处理软件包 pulseaudio (--configure)时出错:依赖关系问题 - 仍未被配置
解决:由于所有用apt安装的软件会将解包信息放到 var/lib/dpkg/info/ 路径下, 所以我们只要重新生成一下info的内容就好了
cd var/lib/dpkg/ # 切路径
sudo mv info info.bak # 将原有的info更名
sudo mkdir info # 重建新的info
sudo apt update && sudo apt -f install # update一下, 并且安装所有的依赖
sudo mv info.bak/* info/ # 把info.bak中的文件全部移动到 info 中
sudo -rf info.bak # 删掉 info.bak
问题:Ubuntu文件夹点击不了
解决:1. 在命令行输入:killall nautilus
2. 尝试重新启动 GNOME Shell
使用 Alt + F2 打开运行命令的对话框
输入 r 然后按回车(重启Shell)
问题:Ubuntu系统Todesk网络异常
解决:对其进行初始化操作
sudo systemctl stop todeskd.service
sudo mv /opt/todesk/config/config.ini /opt/todesk/config/config.ini.bak
sudo systemctl start todeskd.service
问题:error: command 'swig' failed: No such file or directory
解决:sudo apt-get install swig
问题:ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
xxx requires xxx<3.20,>=3.9.2, but you have xxx 5.29.5 which is incompatible.
解决:要么按照要求安装相应版本,要么直接忽略依赖pip install xxx==0.xxx.0 --no-deps
问题:Ubuntu 里qq最小化消失,在后台运行但前台看不到
解决:按快捷键Ctrl+Alt+Z
问题:在Ubuntu下登录qq的时候显示“您已登录xxxxx,不能重复登录”
解决:先按快捷键Ctrl+Alt+Z,看看能不能弹出qq;不行的话,终端输入ps -e,找到qq对应的PID,然后杀死,例如我查到自己有两个qq进程,终端输入kill 17676
问题:wandb: W&B API key is configured. Use `wandb login --relogin` to force relogin
解决:可以配置也可以先关闭,这里选择关闭,os.environ["WANDB_MODE"] = "offline"或者wandb.init(mode="offline")
在线查看命令:wandb sync /home/xxx/wandb/offline-run-20250909_090918-evmcgt33
问题:Windows右击文件夹一直转圈
解决:卸载百度网盘
问题:Windows内存占用率高,但是找不到内存消耗大的程序
解决: 1、在传统界面按Win键+ R键,在搜索框中输入msconfig,按回车键。
2、点击”服务”选项,选择”隐藏所有的微软服务”,然后点击全部禁用。(如果可选)
3、点击”启动”选项,,点击”打开任务管理器”,然后禁用全部启动项并确定。
然后如何从干净模式状态回复到正常模式:
a. 按Win+R 打开运行窗口,在搜索框中输入msconfig,按回车键。
b. 在“常规”选项,单击“正常启动 - 加载所有设备驱动程序和服务”。
c. 单击“确定”。当提示您重新启动计算机时,单击“重新启动”。
如果后续遇到其他问题也会持续更新。
浙公网安备 33010602011771号