Ubuntu系统Buglist(不定时更新)
一、环境/库
1.1 curl: error while loading shared libraries
- 在机器上查找丢失的共享库
1 | find ~ -name libssl.so.1.0.0 |
得到返回值/home/huffie/anaconda3/pkgs/openssl-1.0.2p-h14c3975_0/lib/libssl.so.1.0.0
- 查看软件安装路径
1 | which curl |
得到返回值~/anaconda3/bin/curl
,说明是使用anaconda安装的
- 建立软连接
1 | ln -s /home/huffie/anaconda3/pkgs/openssl-1.0.2p-h14c3975_0/lib/libssl.so.1.0.0 ~/anaconda3/lib/libssl.so.1.0.0 |
- 同样的方法补全
libcrypto.so.1.0.0
1 | ln -s /home/huffie/anaconda3/pkgs/openssl-1.0.2p-h14c3975_0/lib/libcrypto.so.1.0.0 ~/anaconda3/lib/libcrypto.so.1.0.0 |
1.2 调整Docker下载速度
- 备份配置文件
1 | sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.backup |
- 打开配置文件,删除所有内容,并添加以下内容
1 | sudo vim /etc/docker/daemon.json |
1 | { |
1.3 由于没有公钥,无法验证下列签名:NO_PUBKEY的解决方法
(1)问题描述
今天运行apt-get update时突然出现了由于没有公钥,无法验证下列签名的问题,尝试了网上许多方法,最终找到了一种亲测有效的解决方法:
(2)解决方法
在终端输入:
1 | sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 76F1A20FF987672F |
其中最后的代码为报错语句中的最后一部分:由于没有公钥,无法验证下列签名: NO_PUBKEY 76F1A20FF987672F
(3)解决结果
1 | Executing: /tmp/apt-key-gpghome.uBwlOPqFFF/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 76F1A20FF987672F |
1.4 Cmake 版本更新
更新cmake
(1)报错信息
1 | CMake Error at CMakeLists.txt:15 (cmake_minimum_required): |
(2)解决方法
首先尝试一下
1 | sudo apt update |
如果还不行,那么就到官网安装新版cmake。
到cmake官网的下载页面下载最新的cmake安装包,以cmake-3.25.2.tar.gz为例。
解压安装包
1 | tar -zxvf cmake-3.25.2.tar.gz |
进入安装包
1 | cd cmake-3.25.2 |
开始安装
1 | chmod 777 ./configure |
(3)解决结果
运行下列命令检查cmake
是否正确安装
1 | cmake --version |
1.5 cudnn问题,apt upgrade出现警告/sbin/ldconfig.real
问题描述:
安装软件,或使用sudo apt upgrade
时,命令行出现警告信息:
1 | /sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 is not a symbolic link |
问题原因:
CUDA和cuDNN库的符号链接失效,重新创建符号链接:
解决方法:
注意按照自己的报错信息修改路径
1 | sudo ln -sf /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.9.1 /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 |
1.6 conda环境导致的源码安装包问题
问题描述:
如果在conda环境下从源码编译安装某个包,在cmake阶段,可能会出现下面的问题:
1 | CMake Warning at cmake/CMakeHelper.cmake:103 (add_executable): |
解决方法:
退出conda环境,然后再编译安装。
1 | 临时退出 |
1.7 the provided PTX was compiled with an unsupported toolchain
问题描述:
从源码编译安装某些包,完成之后无法使用,例如我的colmap一直报错如下:
1 | CuTexImage::BindTexture: invalid device symbol |
解决方法:
更新显卡驱动,亲测有效。
二、ROS
2.1 使用其它工作空间的包,未加载其它工作空间的source
(1)报错信息
1 | Failed to load nodelet '/camera/realsense2_camera` of type `realsense2_camera/RealSenseNodeFactory` to manager `realsense2_camera_manager' |
(2)报错原因
原因是找不到realsense2_camera包,在安装D435的包时,以为bashrc文件里已存在要添加的路径故没有执行
(3)解决方法
1 | source ~/catkin_ws/devel/setup.bash |
或者
1 | echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc |
2.2 有多个.so文件同时被引用
(1)报错信息
1 | symbol lookup error: /home/huffie/catkin_ws/devel/lib//librealsense2_camera.so: undefined symbol: _ZN20ddynamic_reconfigure19DDynamicReconfigureC1ERKN3ros10NodeHandleE |
(2)报错原因
系统内librealsense2_camera.so的数量不唯一,在多个路径下都存在此库
(3)解决方法
查找一下动态库路径
1 | echo $LD_LIBRARY_PATH |
将显示的其它工作空间的build和devel文件夹都删掉就可以了
2.3 PCL要求C++11及以上
(1)报错信息
1 | error: #error PCL requires C++14 or above |
(2)报错原因
CMakeLists.txt没有添加C++14的配置
(3)解决方法
在CMakeLists.txt
中添加下面这几行代码
1 | add_compile_options(-std=c++11 ) |
2.4 error while loading shared libraries
(1)报错信息
1 | /opt/ros/noetic/lib/rosout/rosout: error while loading shared libraries: libxmlrpcpp.so: cannot open shared object file: No such file or directory |
(2)问题原因
链接器找不到库文件,搜索libxmlrpcpp.so
,发现其位置为/opt/ros/noetic/lib
(3)解决方法
1 | sudo gedit /etc/ld.so.conf.d/libc.conf |
在其中添加libxmlrpcpp.so
的目录
1 | /opt/ros/noetic/lib |
然后执行
1 | sudo ldconfig |
就ok了
三、系统问题
3.1 Windows+Ubuntu双系统,Win更新后Ubuntu引导项消失
首先在BIOS里确定Ubuntu的启动顺序是不是在Windows之前,一定要启动ubuntu,然后才有引导
插入ubuntu启动盘,重启电脑,选择U盘启动,进入后选择 try ubuntu without install
进入界面后连接网络
输入以下命令
1 | sudo apt-add-repository ppa:yannubuntu/boot-repair |
安装成功后继续在终端输入以下命令:
1 | boot-repair |
期间会检索引导项,等待即可
完成后点击Recommended repair
等待一下,成功找回
3.2 Ubuntu启动后左上角光标闪烁,且出现snd_hda_intel cannot probe codecs的错误信息
问题描述:
系统运行正常的情况下,重启了服务器,再开机就进入不了桌面了,一直左上角光标闪烁,并且等待一段时间后出现snd_hda_intel cannot probe codecs的报错。
解决方法:
清空回收站,本人遇到的问题是磁盘没有空间了,无法启动某个驱动,通过ssh连接系统后使用下面命令清空回收站即可
1 | sudo rm -rf ~/.local/share/Trash/* |
3.3 Kernel panic - not syncing: Attempted to kill init!
问题描述:
我在正常使用电脑时,突然所有图标全都变成空白方框(左侧 dock 栏、右上角所有系统图标),系统完全卡死,所有软件包括命令行无法打开,设置无法打开,点击重启无效。
强制重启后,ubuntu 无法进入,显示许多行代码,最后一行为 Kernel panic - not syncing: Attempted to kill init!
,此时双系统的 Win11 仍然正常。
解决方法:
经查阅资料,应该是系统自动更新内核导致的问题(也有的说是因为/boot 分区满了出现问题)。
开机后在引导界面选择 Advance option for ubuntu
,前两个为最新版本的内核,不要选择这两个,选择第三个,进入旧版本的内核。
检查 /boot
分区是否占用为 100%
1 | df |
查看所有已安装内核
1 | dpkg --get-selections| grep linux |
查看当前正在使用的内核
1 | uname -a |
删除最新的(有错误的/如果 boot 满了则删过老的)内核,我这里新内核版本相关的只有这两个包,请根据自己情况调整。==注意一定不要误删==
1 | sudo apt-get remove --purge linux-modules-5.15.0-88-generic linux-image-5.15.0-88-generic |
完成后清理
1 | sudo dpkg -P linux-modules-5.15.0-88-generic |
3.4 惠普暗影精灵9/光影精灵9,无法拓展显示器
问题描述
惠普暗影精灵9/光影精灵9,安装ubuntu20.04,已经正常安装显卡驱动,nvidia-smi
输出正常,但是外接显示器不识别。
输入xrandr
发现只有笔记本显示器。
打开nvidia控制面板,发现nvidia识别到了外接显示器。
尝试了切换显卡驱动无效,关闭secure boot
无效。
解决方法
进入BIOS,在配置中,将独显直连(NVIDIA ... Advance
,具体是什么记不清了),改为混合模式(Discrete
),然后就可以了。
3.5 系统启动后进入(initramfs)
问题描述:
我在 ubuntu+win 双系统中,使用 windows 访问了 ubuntu 的文件,再次启动 ubuntu 后发现出现错误,开机后进入了命令行界面,显示如下内容:
1 | BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash) |
解决方法:
参考 How To Fix Busybox Initramfs Error On Ubuntu
使用 fsck
命令修复损坏分区中的文件系统:
(可以使用 cat /proc/partitions
或 blkid
或 lsblk
命令在 Busybox 中获取您的 Linux 分区详细信息。)
1 | # 如果是机械硬盘,则为sdax,例如 |
几分钟后,你会看到如下输出,说明修复完成:
1 | /dev/sda1: ***** FILE SYSTEM WAS MODIFIED ***** |
然后重启系统(如果 reboot 无效,输入 exit 后回车重启)
1 | reboot |
3.6 A stop job is running for session X of user XXX
问题描述:
Ubuntu 在关机或重启时,速度非常慢,在关机界面中按下任意按键会看到 A stop job is running for session 2 of user mahaofei
的提示。
解决方法:
编辑文件
1 | sudo nano /etc/systemd/system.conf |
将 DefaultTimeoutStopSec
行取消注释,并将时间修改为想要的时间,例如 5s。
1 | DefaultTimeoutStopSec=5s |
重新加载配置文件
1 | sudo systemctl daemon-reload |
四、小工具
4.1 解压当前目录下所有 zip 压缩包到 zip 文件同名目录
直接使用 unzip
会讲 zip 中的内容解压到当前目录下,使用以下脚本则会将当前目录下的所有 zip 压缩包解压成对应文件夹
1 | !/bin/bash |