ubuntu16.04更新系统后桌面出错的解决办法

本文档详细记录了一名新手在Ubuntu16.04更新系统后遇到的问题及解决过程。更新时遇到dpkg错误,通过一系列命令行操作解决了此问题。随后系统重启后出现内核与桌面系统不匹配导致的错误,通过降级内核、重装Unity和相关组件成功修复。作者建议避免频繁更新系统,并在遇到问题时尝试解决而非直接重装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人是一名新手,不知道“更新系统”里面的门道,全然不知点了更新,就开始了痛苦的旅程。

一.更新时提示错误,无法完成更新

我认为更新是“很重要的”,所以要坚持完成更新,然后开始翻解决方案。

E: Sub-process /usr/bin/dpkg returned an error code (1)

以下是我使用的方案:

1.$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old

2.$ sudo mkdir /var/lib/dpkg/info

3.$ sudo apt-get update4.$apt-get -f install

5.$ sudo rm -rf /var/lib/dpkg/info

6.$ sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info

参看原文链接点击打开链接

二 重启之后发生错误

重启输入密码后,一直弹出系统内部错误的窗口,大概有10个,然后只显示桌面背景和鼠标键头,鼠标可以移动,但点击无任何反应,ctrl+alt+t无法进入终端。问题分析:升级之后内核版本和显示不匹配,桌面系统崩溃。解决方案:降低内核版本,重装桌面系统。

ctrl +alt +F1进入纯文本命令行模式,输入账户密码登录进入。

$startx        //进入图形界面,还是一片空白,不过右键单击可以打开终端。

<think>好的,我现在需要帮用户在Ubuntu 16.04上安装RTAB-Map和rtabmap_ros,并且不能使用git clone,同时还要确保两者的版本一致。首先,用户提到不能使用git clone,可能是因为网络问题,无法连接到GitHub或者其他代码托管平台。所以,我需要找到其他方法,比如通过APT包管理器或者下载源码包来安装。 首先,我需要确定Ubuntu 16.04对应的ROS版本。Ubuntu 16.04通常对应的是ROS Kinetic Kame。所以,用户应该已经安装了ROS Kinetic。接下来,RTAB-Map和rtabmap_ros在ROS中的版本需要一致,这样才能兼容。因为用户不能使用git clone,所以可能需要从ROS的二进制包安装,或者下载特定版本的源码包进行编译。 但是,用户提到要版本一致,所以需要确认哪些版本的RTAB-Map和rtabmap_ros是兼容的。通常,ROS的软件包会对应特定的版本。例如,rtabmap_ros在ROS Kinetic中可能有对应的版本,可以通过APT安装。然而,RTAB-Map本身可能分为ROS包和独立库,需要同时安装兼容的版本。 首先,检查是否可以通过APT安装。ROS Kinetic的软件源中可能有rtabmap_ros和RTAB-Map的二进制包。用户可以尝试运行以下命令: sudo apt-get install ros-kinetic-rtabmap-ros 这可能会自动安装rtabmap_ros及其依赖,包括RTAB-Map库。但需要确认安装的版本是否一致。如果通过这种方法安装,通常ROS的包管理器会处理依赖,确保版本兼容。但可能的问题是,有些时候RTAB-Map的最新功能可能不在二进制包中,需要源码编译。但用户不能使用git clone,所以需要其他方法。 如果APT安装的版本过旧或者不符合需求,用户可能需要下载特定版本的源码压缩包,然后手动编译。例如,从RTAB-Map的官方网站或GitHub发布页面下载.tar.gz或.zip的源码包。同样,对于rtabmap_ros,也需要找到对应版本的源码包。这需要用户手动查找正确的版本号,并确保两者兼容。 例如,RTAB-Map 0.20.7对应rtabmap_ros 0.20.7,用户需要下载这两个版本的源码包。然后,按照编译指南进行编译安装。但用户需要确保所有依赖项都已安装,可能需要通过APT安装依赖库。 可能的步骤: 1. 安装ROS Kinetic桌面完整版,如果尚未安装。 2. 安装RTAB-Map的依赖项,如PCL、OpenCV、G2O等。 3. 下载RTAB-Map的源码包(如.tar.gz),解压后编译安装。 4. 下载rtabmap_ros的源码包,解压到ROS工作空间,编译安装。 5. 确保编译过程中版本一致,没有兼容性问题。 需要特别注意,在编译RTAB-Map和rtabmap_ros时,两者的版本必须匹配。例如,rtabmap_ros 0.20.x需要RTAB-Map 0.20.x。因此,用户需要从发布页面下载对应的版本,而不是使用master分支的代码,因为master可能不稳定或版本不一致。 另一个问题是,用户无法使用git clone,所以必须找到源码的压缩包下载链接。例如,GitHub上的项目通常在每个版本发布时提供.tar.gz文件。用户需要手动下载这些文件,然后解压进行编译。 例如,RTAB-Map的发布页面是https://github.com/introlab/rtabmap/releases,用户可以选择对应版本,下载Source code (tar.gz)。同样,rtabmap_ros的发布页面是https://github.com/introlab/rtabmap_ros/releases,同样下载对应版本的源码包。 然后,用户需要将这两个源码包分别解压到适当的位置。RTAB-Map作为独立库需要先安装,然后rtabmap_ros作为ROS包需要放在ROS工作空间的src目录下,进行编译。 编译RTAB-Map时,可能需要安装一些依赖项,例如: sudo apt-get install libsqlite3-dev libpcl-dev libopencv-dev libqt4-dev libvtk6-dev libproj-dev 编译完成后,安装到系统目录,或者设置环境变量。接着,编译rtabmap_ros时,需要确保找到正确版本的RTAB-Map库。 可能的困难在于依赖项的管理,以及版本匹配。如果用户下载的源码包版本不匹配,编译时会出现错误。此外,手动下载和编译可能需要较多的时间和步骤,容易出错,需要仔细检查每一步。 总结步骤: 1. 确保已安装ROS Kinetic。 2. 安装RTAB-Map和rtabmap_ros的依赖项。 3. 下载对应版本的RTAB-Map和rtabmap_ros源码包。 4. 编译安装RTAB-Map。 5. 将rtabmap_ros源码放入ROS工作空间,编译。 6. 测试安装是否成功。 需要注意,如果用户遇到编译错误,可能需要安装额外的依赖,或者检查版本是否匹配。此外,可能需要调整CMakeLists.txt中的路径,确保找到正确版本的RTAB-Map库。 另外,如果用户无法访问GitHub,可能需要通过其他途径下载源码包,比如通过镜像网站或者使用wget直接下载源码包的链接。例如,使用wget https://github.com/introlab/rtabmap/archive/refs/tags/0.20.7.tar.gz 来下载指定版本的源码。 最后,用户需要确保在编译过程中,RTAB-Map的安装路径被正确添加到系统的库路径中,或者通过catkin_make的CMAKE_PREFIX_PATH指定,以便rtabmap_ros能够找到。</think>以下是在Ubuntu 16.04(ROS Kinetic)上安装RTAB-Map和rtabmap_ros的详细步骤,**无需`git clone`且保证版本一致**: --- ### 一、安装ROS Kinetic(若未安装) ```bash # 1. 设置软件源 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 # 2. 安装ROS完整桌面版 sudo apt-get update sudo apt-get install ros-kinetic-desktop-full # 3. 初始化rosdep sudo rosdep init rosdep update ``` --- ### 二、手动下载源码包(替代git clone) #### 1. **下载RTAB-Map核心库** 访问 [RTAB-Map Releases](https://github.com/introlab/rtabmap/releases),选择与ROS Kinetic兼容的版本(推荐 **0.20.7**): ```bash wget https://github.com/introlab/rtabmap/archive/refs/tags/0.20.7.tar.gz -O rtabmap-0.20.7.tar.gz tar -zxvf rtabmap-0.20.7.tar.gz ``` #### 2. **下载rtabmap_ros** 访问 [rtabmap_ros Releases](https://github.com/introlab/rtabmap_ros/releases),下载对应版本(必须与RTAB-Map版本一致): ```bash wget https://github.com/introlab/rtabmap_ros/archive/refs/tags/0.20.7.tar.gz -O rtabmap_ros-0.20.7.tar.gz tar -zxvf rtabmap_ros-0.20.7.tar.gz ``` --- ### 三、编译安装RTAB-Map核心库 ```bash # 1. 安装依赖项 sudo apt-get install libsqlite3-dev libpcl-dev libopencv-dev libqt4-dev libvtk6-dev libproj-dev # 2. 编译安装 cd rtabmap-0.20.7 mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/usr .. make -j$(nproc) sudo make install ``` --- ### 四、编译rtabmap_ros #### 1. 创建工作空间 ```bash mkdir -p ~/catkin_ws/src mv rtabmap_ros-0.20.7 ~/catkin_ws/src/rtabmap_ros ``` #### 2. 安装ROS依赖 ```bash cd ~/catkin_ws rosdep install --from-paths src --ignore-src -y ``` #### 3. 编译 ```bash catkin_make -DCMAKE_INSTALL_PREFIX=/opt/ros/kinetic ``` --- ### 五、验证安装 #### 1. 设置环境变量 ```bash echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc ``` #### 2. 运行测试节点 ```bash roscore & rosrun rtabmap_ros rtabmap ``` - 若终端无报错且显示节点启动成功,则安装完成. --- ### 六、版本一致性检查 ```bash # 检查RTAB-Map版本 rtabmap --version # 检查rtabmap_ros版本(查看package.xml) cat ~/catkin_ws/src/rtabmap_ros/package.xml | grep "<version>" ``` - 两者应均显示 **0.20.7** --- ### 常见问题解决 #### **问题1:编译时提示找不到RTAB-Map** - **原因**:CMake未找到库路径 - **修复**: ```bash export RTABMAP_DIR=/usr/local/lib/cmake/rtabmap-0.20 # 路径需与实际安装位置一致 ``` #### **问题2:OpenCV版本冲突** - **原因**:ROS Kinetic默认使用OpenCV 3.x,需显式指定版本 - **修复**: ```bash sudo apt-get install libopencv-dev=3.2.0+dfsg-4ubuntu0.1 ``` --- ### 附:手动下载替代方案(若wget受限) 1. 通过浏览器直接访问上述GitHub Releases页面,手动下载`.tar.gz`文件 2. 使用U盘从其他设备拷贝到Ubuntu系统 3. 将文件放入对应目录后继续执行解压和编译步骤 通过以上步骤,您可以在完全离线或断网环境下完成匹配版本的安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值