ROS 2 Galactic安装手册和踩过的坑

  • 官方流程
  • 准备工作
    • 魔术工具
    • 更换国内源
  • 安装前提
    • 系统要求
    • 安装选择
  • 安装流程
    • 设置语言区域
    • 设置源
    • 安装ROS2包
    • 环境配置
    • 验证样例
  • 参考

之前写过一篇18.04下安装ROS2E的手册,最近要用Moveit2了,发现还是要升级到Foxy Fitzroy,看了看,最新已经到了Galactic Geochelone,所以再记录一下在Ubuntu 20.04下安装ROS 2 Galactic Geochelone的过程,由于ROS 2在国内的安装过程里面确实很多坑,记录下来帮助大家避坑。

官方流程

ROS 2 Documentation: Galactic1

准备工作

魔术工具

众所周知,在国内各种下载不流畅,所以首要的是准备魔术工具。这里推荐Trojan-Qt5,可以简单搞定GUI以及终端的上网问题。

更换国内源

Ubuntu 20.04支持图形界面直接更换源了,操作上简便了不少。基本参考链接: Ubuntu 20.04 apt 更换国内源的实现方法。2

设置完软件源,可以大大地加速我们的apt更新安装速度。

安装前提

系统要求

按照官方,要求是
Ubuntu Linux - Focal Fossa (20.04)

安装选择

ROS2F在Ubuntu上有三种安装方法

  • 二进制包

    • Debian packages
    • “fat” archive
  • 源码编译

由于我目前不需要修改ROS2源码,还只是处于用的阶段,因此采用最简单的Debian packages来安装。

安装流程

设置语言区域

官方要求是需要确认支持UTF-8,虽然说起来似乎不一定需要,不过确认一下即可。
特别是在docker容器内使用时,由于locale经常会被最小化地设置为POSIX。

locale  # check for UTF-8sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8locale  # verify settings

运行结果如下

TWR:~$ locale  # check for UTF-8
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_ALL=
TWR:~$ sudo apt update && sudo apt install locales
Get:1 http://dl.google.com/linux/chrome/deb stable InRelease [1,811 B]
Hit:2 http://mirrors.ustc.edu.cn/ubuntu focal InRelease
Get:3 http://mirrors.ustc.edu.cn/ubuntu focal-updates InRelease [114 kB]
Get:4 http://mirrors.ustc.edu.cn/ubuntu focal-backports InRelease [101 kB]
Get:5 http://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,101 B]
Get:6 http://mirrors.ustc.edu.cn/ubuntu focal-security InRelease [114 kB]
Get:7 http://mirrors.ustc.edu.cn/ubuntu focal-updates/main amd64 Packages [1,031 kB]
Get:8 http://mirrors.ustc.edu.cn/ubuntu focal-updates/main i386 Packages [490 kB]
Get:9 http://mirrors.ustc.edu.cn/ubuntu focal-updates/main Translation-en [229 kB]
Get:10 http://mirrors.ustc.edu.cn/ubuntu focal-updates/main amd64 DEP-11 Metadata [283 kB]
Get:11 http://mirrors.ustc.edu.cn/ubuntu focal-updates/main amd64 c-n-f Metadata[13.5 kB]
Get:12 http://mirrors.ustc.edu.cn/ubuntu focal-updates/restricted amd64 Packages[272 kB]
Get:13 http://mirrors.ustc.edu.cn/ubuntu focal-updates/restricted Translation-en[39.5 kB]
Get:14 http://mirrors.ustc.edu.cn/ubuntu focal-updates/universe i386 Packages [576 kB]
Get:15 http://mirrors.ustc.edu.cn/ubuntu focal-updates/universe amd64 Packages [781 kB]
Hit:16 http://ppa.launchpad.net/appimagelauncher-team/stable/ubuntu focal InRelease
Get:17 http://mirrors.ustc.edu.cn/ubuntu focal-updates/universe Translation-en [170 kB]
Get:18 http://mirrors.ustc.edu.cn/ubuntu focal-updates/universe amd64 DEP-11 Metadata [330 kB]
Get:19 http://mirrors.ustc.edu.cn/ubuntu focal-updates/universe DEP-11 48x48 Icons [203 kB]
Get:20 http://mirrors.ustc.edu.cn/ubuntu focal-updates/universe amd64 c-n-f Metadata [17.7 kB]
Get:21 http://mirrors.ustc.edu.cn/ubuntu focal-updates/multiverse amd64 DEP-11 Metadata [2,468 B]
Get:22 http://mirrors.ustc.edu.cn/ubuntu focal-backports/universe amd64 DEP-11 Metadata [1,768 B]
Get:23 http://mirrors.ustc.edu.cn/ubuntu focal-security/main amd64 DEP-11 Metadata [24.4 kB]
Get:24 http://mirrors.ustc.edu.cn/ubuntu focal-security/universe i386 Packages [462 kB]
Get:25 http://mirrors.ustc.edu.cn/ubuntu focal-security/universe amd64 Packages  [588 kB]
Get:26 http://mirrors.ustc.edu.cn/ubuntu focal-security/universe Translation-en [95.2 kB]
Get:27 http://mirrors.ustc.edu.cn/ubuntu focal-security/universe amd64 DEP-11 Metadata [58.3 kB]
Get:28 http://mirrors.ustc.edu.cn/ubuntu focal-security/universe amd64 c-n-f Metadata [11.5 kB]
Get:29 http://mirrors.ustc.edu.cn/ubuntu focal-security/multiverse amd64 DEP-11 Metadata [2,468 B]
Fetched 6,014 kB in 2s (3,864 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree
Reading state information... Done
locales is already the newest version (2.31-0ubuntu9.3).
locales set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
TWR:~$ sudo locale-gen en_US en_US.UTF-8
Generating locales (this might take a while)...en_US.ISO-8859-1... doneen_US.UTF-8... done
Generation complete.
TWR:~$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
TWR:~$ export LANG=en_US.UTF-8
TWR:~$ locale  # verify settings
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_ALL=

设置源

1. 确认Ubuntu Universe仓库
我们需要将我们的ROS2 apt软件仓库加入系统,并运行以下命令确认Ubuntu Universe仓库是被enabled的。

TWR:~$ apt-cache policy | grep universe500 http://mirrors.ustc.edu.cn/ubuntu focal-security/universe i386 Packagesrelease v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=i386500 http://mirrors.ustc.edu.cn/ubuntu focal-security/universe amd64 Packagesrelease v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=amd64100 http://mirrors.ustc.edu.cn/ubuntu focal-backports/universe i386 Packagesrelease v=20.04,o=Ubuntu,a=focal-backports,n=focal,l=Ubuntu,c=universe,b=i386100 http://mirrors.ustc.edu.cn/ubuntu focal-backports/universe amd64 Packagesrelease v=20.04,o=Ubuntu,a=focal-backports,n=focal,l=Ubuntu,c=universe,b=amd64500 http://mirrors.ustc.edu.cn/ubuntu focal-updates/universe i386 Packagesrelease v=20.04,o=Ubuntu,a=focal-updates,n=focal,l=Ubuntu,c=universe,b=i386500 http://mirrors.ustc.edu.cn/ubuntu focal-updates/universe amd64 Packagesrelease v=20.04,o=Ubuntu,a=focal-updates,n=focal,l=Ubuntu,c=universe,b=amd64500 http://mirrors.ustc.edu.cn/ubuntu focal/universe i386 Packagesrelease v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=i386500 http://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 Packagesrelease v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=amd64

由于更换了清华的国内源,我们可以在运行结果中看到

 500 http://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 Packagesrelease v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=amd64

这边关于源的地址

http://mirrors.ustc.edu.cn/ubuntu

根据设置的不同可能不一致,只要确认有focal/universe amd64 Packages这一条就说明已经设置成功了,如果没看到,则执行第2步 设置Universe仓库。

2. 设置Ubuntu Universe仓库
执行以下命令:

sudo apt install software-properties-common
sudo add-apt-repository universe

结果如下:

TWR:~$ sudo apt install software-properties-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
software-properties-common is already the newest version (0.98.9.5).
software-properties-common set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
TWR:~$ sudo add-apt-repository universe
'universe' distribution component is already enabled for all sources.

3. 增加ROS 2 apt软件仓库

  1. 我们需要将我们的ROS2 apt软件仓库加入系统。
    首先要验证我们的GPG key
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
  1. 将仓库加入我们的软件源
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
  1. 执行结果如下
TWR:~$ sudo apt update && sudo apt install curl gnupg lsb-release
Hit:1 http://mirrors.ustc.edu.cn/ubuntu focal InRelease
Hit:2 http://mirrors.ustc.edu.cn/ubuntu focal-updates InRelease
Hit:3 http://mirrors.ustc.edu.cn/ubuntu focal-backports InRelease
Hit:4 http://mirrors.ustc.edu.cn/ubuntu focal-security InRelease
Hit:5 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:6 http://packages.ros.org/ros2/ubuntu focal InRelease
Hit:7 http://ppa.launchpad.net/appimagelauncher-team/stable/ubuntu focal InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree
Reading state information... Done
lsb-release is already the newest version (11.1.0ubuntu2).
curl is already the newest version (7.68.0-1ubuntu2.5).
gnupg is already the newest version (2.2.19-3ubuntu2.1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
TWR:~$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
TWR:~$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

注意:
这里如果直接执行的话,有可能会遇到raw.githubusercontent.com的DNS污染问题。

解决方法:

  1. 通过IPAddress.com,可以查到raw.githubusercontent.com的真实IP地址为 .*..

  2. 通过sudo vi /etc/hosts
    在hosts文件最后加入IP和域名的绑定即可解决。

***.***.**.*** raw.githubusercontent.com

安装ROS2包

设置仓库后,更新apt仓库的缓存

sudo apt update

桌面版安装(推荐):包括ROS, RViz, demos, tutorials.

sudo apt install ros-galactic-desktop

ROS-Base版安装 (裸骨架): 通信库, 消息包, 命令行工具. 没有GUI工具.

sudo apt install ros-galactic-ros-base

在执行过程中,出现了broken packages错误

TWR:~$ sudo apt install ros-galactic-desktop
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:The following packages have unmet dependencies:ros-galactic-desktop : Depends: ros-galactic-action-tutorials-cpp but it is not going to be installedDepends: ros-galactic-action-tutorials-interfaces but it is not going to be installedDepends: ros-galactic-action-tutorials-py but it is not going to be installedDepends: ros-galactic-composition but it is not going to be installedDepends: ros-galactic-demo-nodes-cpp but it is not going to be installedDepends: ros-galactic-demo-nodes-cpp-native but it is not going to be installedDepends: ros-galactic-demo-nodes-py but it is not going to be installedDepends: ros-galactic-depthimage-to-laserscan but it is not going to be installedDepends: ros-galactic-dummy-map-server but it is not going to be installedDepends: ros-galactic-dummy-robot-bringup but it is not going to be installedDepends: ros-galactic-dummy-sensors but it is not going to be installedDepends: ros-galactic-examples-rclcpp-minimal-action-client but it is not going to be installedDepends: ros-galactic-examples-rclcpp-minimal-action-server but it is not going to be installedDepends: ros-galactic-examples-rclcpp-minimal-client but it is not going to be installedDepends: ros-galactic-examples-rclcpp-minimal-composition but it is not going to be installedDepends: ros-galactic-examples-rclcpp-minimal-publisher but it is not going to be installedDepends: ros-galactic-examples-rclcpp-minimal-service but it is not going to be installedDepends: ros-galactic-examples-rclcpp-minimal-subscriber but it is not going to be installedDepends: ros-galactic-examples-rclcpp-minimal-timer but it is not going to be installedDepends: ros-galactic-examples-rclcpp-multithreaded-executor but it is not going to be installedDepends: ros-galactic-examples-rclpy-executors but it is not going to be installedDepends: ros-galactic-examples-rclpy-minimal-action-client but it is not going to be installedDepends: ros-galactic-examples-rclpy-minimal-action-server but it is not going to be installedDepends: ros-galactic-examples-rclpy-minimal-client but it is not going to be installedDepends: ros-galactic-examples-rclpy-minimal-publisher but it is not going to be installedDepends: ros-galactic-examples-rclpy-minimal-service but it is not going to be installedDepends: ros-galactic-examples-rclpy-minimal-subscriber but it is not going to be installedDepends: ros-galactic-image-tools but it is not going to be installedDepends: ros-galactic-intra-process-demo but it is not going to be installedDepends: ros-galactic-joy but it is not going to be installedDepends: ros-galactic-lifecycle but it is not going to be installedDepends: ros-galactic-logging-demo but it is not going to be installedDepends: ros-galactic-pcl-conversions but it is not going to be installedDepends: ros-galactic-pendulum-control but it is not going to be installedDepends: ros-galactic-pendulum-msgs but it is not going to be installedDepends: ros-galactic-quality-of-service-demo-cpp but it is not going to be installedDepends: ros-galactic-quality-of-service-demo-py but it is not going to be installedDepends: ros-galactic-ros-base but it is not going to be installedDepends: ros-galactic-rqt-common-plugins but it is not going to be installedDepends: ros-galactic-rviz-default-plugins but it is not going to be installedDepends: ros-galactic-rviz2 but it is not going to be installedDepends: ros-galactic-teleop-twist-joy but it is not going to be installedDepends: ros-galactic-teleop-twist-keyboard but it is not going to be installedDepends: ros-galactic-tlsf-cpp but it is not going to be installedDepends: ros-galactic-topic-monitor but it is not going to be installedDepends: ros-galactic-turtlesim but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
TWR:~$ sudo apt install ros-galactic-ros-base
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:The following packages have unmet dependencies:ros-galactic-ros-base : Depends: ros-galactic-geometry2 but it is not going to be installedDepends: ros-galactic-robot-state-publisher but it is not going to be installedDepends: ros-galactic-ros-core but it is not going to be installedDepends: ros-galactic-rosbag2 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

注意:
试着根据依赖一个个修复,发现底下都有继续依赖的项目,这样也不是办法。
查了一圈,发现了 解决apt install包损坏问题方法3

解决方法:
主要说来就是采用aptitude install命令替代apt install命令,在执行了

sudo aptitude install ros-galactic-desktop

sudo aptitude install ros-galactic-ros-base

如果系统中没有aptitude命令,先执行以下命令安装aptitude:

sudo apt-get install aptitude

aptitude命令与apt-get命令一样,都是Linux中的包管理工具。
但aptitude在处理依赖问题上比apt要更优秀一些。
举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。它通过文本操作菜单和命令两种方式管理软件包。
感兴趣的同学可以参考aptitude命令4

当然在解决依赖的过程中,存在一些降级的需求,可以看我的另一篇博文Ubuntu20下用aptitude替代apt安装ROS包5

环境配置

source /opt/ros/galactic/setup.bash

验证样例

在一个终端(A)里,运行配置,启动C++的talker

source /opt/ros/galactic/setup.bash
ros2 run demo_nodes_cpp talker

在另一个终端(B)里,运行配置,启动Python的listener

source /opt/ros/galactic/setup.bash
ros2 run demo_nodes_py listener

终端A中显示

TWR:~$ ros2 run demo_nodes_cpp talker
[INFO] [1623401499.188649472] [talker]: Publishing: 'Hello World: 1'
[INFO] [1623401500.188617681] [talker]: Publishing: 'Hello World: 2'
[INFO] [1623401501.188593316] [talker]: Publishing: 'Hello World: 3'
[INFO] [1623401502.188556101] [talker]: Publishing: 'Hello World: 4'
[INFO] [1623401503.188479541] [talker]: Publishing: 'Hello World: 5'
[INFO] [1623401504.188489280] [talker]: Publishing: 'Hello World: 6'
[INFO] [1623401505.188454974] [talker]: Publishing: 'Hello World: 7'
[INFO] [1623401506.188441022] [talker]: Publishing: 'Hello World: 8'
[INFO] [1623401507.188367939] [talker]: Publishing: 'Hello World: 9'
[INFO] [1623401508.188375095] [talker]: Publishing: 'Hello World: 10'
[INFO] [1623401509.188330276] [talker]: Publishing: 'Hello World: 11'
[INFO] [1623401510.188318712] [talker]: Publishing: 'Hello World: 12'
[INFO] [1623401511.188298142] [talker]: Publishing: 'Hello World: 13'
[INFO] [1623401512.188284017] [talker]: Publishing: 'Hello World: 14'
[INFO] [1623401513.188240477] [talker]: Publishing: 'Hello World: 15'
[INFO] [1623401514.188066415] [talker]: Publishing: 'Hello World: 16'
[INFO] [1623401515.188242309] [talker]: Publishing: 'Hello World: 17'
[INFO] [1623401516.188110920] [talker]: Publishing: 'Hello World: 18'
[INFO] [1623401517.188080784] [talker]: Publishing: 'Hello World: 19'
[INFO] [1623401518.188069913] [talker]: Publishing: 'Hello World: 20'
[INFO] [1623401519.187919954] [talker]: Publishing: 'Hello World: 21'
[INFO] [1623401520.188002262] [talker]: Publishing: 'Hello World: 22'
[INFO] [1623401521.187967031] [talker]: Publishing: 'Hello World: 23'
[INFO] [1623401522.187975595] [talker]: Publishing: 'Hello World: 24'
[INFO] [1623401523.188033320] [talker]: Publishing: 'Hello World: 25'
[INFO] [1623401524.187846522] [talker]: Publishing: 'Hello World: 26'
[INFO] [1623401525.187901371] [talker]: Publishing: 'Hello World: 27'
[INFO] [1623401526.187828211] [talker]: Publishing: 'Hello World: 28'
[INFO] [1623401527.187834611] [talker]: Publishing: 'Hello World: 29'
[INFO] [1623401528.187805688] [talker]: Publishing: 'Hello World: 30'
[INFO] [1623401529.187782235] [talker]: Publishing: 'Hello World: 31'
[INFO] [1623401530.187745137] [talker]: Publishing: 'Hello World: 32'
^C[INFO] [1623401530.710697371] [rclcpp]: signal_handler(signal_value=2)

直到收到Ctrl^C的中断

终端B中显示

TWR:~$ ros2 run demo_nodes_py listener
[INFO] [1623401519.208580911] [listener]: I heard: [Hello World: 21]
[INFO] [1623401520.188769293] [listener]: I heard: [Hello World: 22]
[INFO] [1623401521.190202256] [listener]: I heard: [Hello World: 23]
[INFO] [1623401522.190453180] [listener]: I heard: [Hello World: 24]
[INFO] [1623401523.190435333] [listener]: I heard: [Hello World: 25]
[INFO] [1623401524.188595768] [listener]: I heard: [Hello World: 26]
[INFO] [1623401525.190340553] [listener]: I heard: [Hello World: 27]
[INFO] [1623401526.190241530] [listener]: I heard: [Hello World: 28]
[INFO] [1623401527.190022097] [listener]: I heard: [Hello World: 29]
[INFO] [1623401528.190283940] [listener]: I heard: [Hello World: 30]
[INFO] [1623401529.190121333] [listener]: I heard: [Hello World: 31]
[INFO] [1623401530.190186865] [listener]: I heard: [Hello World: 32]

大功告成~~~

参考


  1. https://docs.ros.org/en/galactic/Installation.html ↩︎

  2. https://www.jb51.net/article/187442.htm ↩︎

  3. https://askubuntu.com/questions/363200/e-unable-to-correct-problems-you-have-held-broken-packages ↩︎

  4. https://man.linuxde.net/aptitude ↩︎

  5. https://blog.csdn.net/amuro_ray027/article/details/117820800 ↩︎

ROS2学习(一).Ubuntu 20.04安装ROS2 Galactic相关推荐

  1. 【Ubuntu 20.04安装和深度学习环境搭建 4090显卡】

    Ubuntu安装步骤参考文章 知乎:Ubuntu 20.04系统安装及初始配置 目录 一. 制作启动盘 1.1 下载镜像文件 1.2 制作启动盘 二. 安装系统 2.1 启动计算机并进入BIOS 2. ...

  2. Ubuntu 20.04安装Ros Noetic及Ubuntu 18.04安装ROS Melodic(两版本详细填坑)

    Ubuntu 20.04安装Ros Noetic及18.04安装ROS Melodic 表1-1 ROS的历史版本 1. 设置安装源 2. 添加秘钥 3. 更新列表 4. 开始安装 5. 配置ROS环 ...

  3. ubuntu18.0.4 不能下载 libgd2-dev(ubuntu 20.04 安装perl 中GD 模块失败的解决办法)

    ubuntu18.0.4 不能下载 libgd2-dev 一.错误信息: Unable to locate package libgd2-dev 二.原因 没有对应源 到 https://packag ...

  4. Win10 和 Ubuntu 20.04 安装 face_recognition 和 dlib

    face_recognition是一个人脸识别库. WIN10安装: 首先改一下下载源: 1.C:\Users\xx\pip,新建文件pip.ini 2.文件里面输入: [global] index- ...

  5. ubuntu 20.04安装各类软件

    ubuntu 20.04安装各类软件 一.前言 ubuntu 20.04安装后,我输入gcc -v,出现了下面的情况,差点裂开了,20.04居然没有自带gcc编译器,以前安装的版本12.04 16.0 ...

  6. ubuntu 20.04 安装 flameshot截图工具

    ubuntu 20.04 安装 flameshot截图工具 安装命令 使用命令 设置快捷键 效果图 安装命令 sudo apt-get install flameshot 安装日志 $ sudo ap ...

  7. ubuntu 20.04 安装软件踩坑

    ubuntu 20.04 安装软件踩坑 1.搜狗输入法 安装后需要重启一次 重启后讲sogoupinyin添加好,右上角如果没有搜狗就再重启一下 右上角出现了搜狗也是打不出中文的,因为没有安装依赖 安 ...

  8. Ubuntu 20.04安装CUDA失败导致系统黑屏消息nvidia 0000:01:00.0: can‘t change power state from D3cold to D0 的解决方法

    Ubuntu 20.04安装CUDA失败导致系统黑屏消息nvidia 0000:01:00.0: can't change power state from D3cold to D0 的解决方法 贺志 ...

  9. ubuntu 20.04 安装ibus-rime输入法

    ubuntu 20.04 安装ibus-rime输入法 为什么安装这个输入法 ibus-rime 安装 使用命令安装 基本设置 为什么安装这个输入法 没有安装搜狗输入法是因为安装完搜狗输入法之后再安装 ...

最新文章

  1. 驳斥苹果“诊断后门论”,声援扎德尔斯基
  2. 【涛声依旧】华为的“大服务”
  3. 【Java语法】抽象类、接口、内部类
  4. JAVA基础知识之网络编程——-基于AIO的异步Socket通信
  5. 论文阅读 - Large-scale weakly-supervised pre-training for video action recognition
  6. C#LeetCode刷题-深度优先搜索
  7. java freemarker 模版_Java模版引擎Freemarker
  8. IOS9 微信支付报 prepayid 获取失败 ErrorDomainSSL, -9802
  9. Spark核心RDD详述
  10. python怎么读中文-python读取中文txt文本的方法
  11. 直播防盗链,域名设置
  12. 解决-win10软件默认安装路径为C盘——修改注册表
  13. 自考本科的单科成绩包括英语和计算机吗,自考问题自考统考科目(例如:英语,计算机等 – 手机爱问...
  14. 博科查看光功率_博科系交换机光模块信号强度查看
  15. 你想要的宏基因组-微生物组知识全在这(2020.6)
  16. 常见的http状态码有哪些?分别表示什么意思?
  17. 看一眼就会马上收藏的宝藏设计网站
  18. 云端部署 vs 本地化部署
  19. Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(二)统计篇
  20. Android中InCallUI显示太慢问题分析

热门文章

  1. java反射机制_java反射机制的讲解
  2. python爬虫技术路线_爬虫学习——中国大学最好排名(技术路线:requests库和bs4)(来源于北理工Python网络爬虫与信息提取网络公开课)...
  3. mysql limit括号_采坑笔记——mysql的order by和limit排序问题
  4. f12控制台如何查看consul_基于 Consul 的 Go Micro 客户端服务发现是如何实现的
  5. 获取IPhone相册中图片的方法(包括获取所有图片)
  6. 在linux操作系统中启动oracle数据库程序,Linux系统下Oracle数据库的安装和启动关闭操作教程...
  7. BZOJ3527:[ZJOI2014]力(FFT)
  8. zookeeper -- 第四章 zookeeper watcher讲解
  9. MySql详解(六)
  10. truncate与delete的区别