RoboMaster视觉教程Linux(一)保姆级换源教程

感觉Linux的平台学习最好的方法是直接使用Linux系统,什么命令不懂就学习什么命令,如果身边能有一个比较了解Linux的同学,有什么不会的直接请教。学习的速度会大大加快!

像一些书比如《鸟哥的Linux私房菜》,《Linux就该这么学》都比较厚,看了也不一定用得上。如果一定要看,感觉《Linux就该这么学》要更易读一些。

基本指令本系列就不说了。用着用着就会了。除了各种指令,还有Linux下Gcc以及Clang的编译,也应该掌握基本内容。

首先说换源,因为这个东西很重要,但是出错还很坑爹。

文章目录

一 为什么要换源

拿Ubuntu来说,安装软件一般使用​​sudo apt install panckage-name​​命令,而ubuntu 的默认软件源是美国的,所以下载起来特别慢,所以需要将软件下载的源改成国内。

所谓换源,其实就是更改软件下载的网址,从美国网址换到国内网址。而所谓的源(网址)保存在/etc/apt/sources.list中。

二 注意事项

不要直接粘贴复制更改sources.list中的内容。

因为不同的系统,不同的硬件平台,sources.list中的内容都不一样。

比如有的平台网址前面试http,有的是https,如果不搭配就会报一个关于https的错误。需要运行

apt-get install

从而能够使用HTTPS,但这时你可能已经改了sources.list文件,那么你的apt就用不了了。所以陷入死循环。不要轻易复制粘贴

三 sources.list文件解析

Ubuntu使用apt来管理软件包,apt可以将软件库存储在如下文件中:
/etc/apt/sources.list和/etc/apt/sources.list.d/*.list

sources.list储存Ubuntu官方软件。​​/etc/apt/sources.list.d/​​​目录下的​​*.list​​文件为在单独文件中写入源的地址提供了一种方式,通常用来安装第三方的软件。

我们换源是换sources.list,关于第三方软件的安装,我们需要自己写入apt repository,一般没有多余的选择。

随便打开一个sources.list文件(已经换为USTC的源):

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

以字符’#'开头的行代表该行是一行注释
不以’#'开头的行是apt repository,

每一个apt仓库可以分为档案类型、仓库地址、四大部分。

3.1 档案类型(Archive type)

条目的第一个词 deb 或是 deb-src 表明了所获取的软件包档案类型。

deb: 二进制包仓库
deb-src: 二进制包的源码库

我们一般是使用deb包直接安装。所以有的人换源的时候只更改deb,deb-src直接注释掉了。我觉得还是都保留吧。

3.2 仓库地址 (Repository URL)

条目的第二个词就包所在的地址,可以是网络地址,也可以是本地的镜像地址。

换源就是更改这个网址,所以其他三大部分不要改,只改这个部分,更换仓库地址为其他地理位置更靠近自己的镜像来提高下载速度

一般阿里云的时延低,我都换成阿里云。

3.3 发行版 (Distribution)

跟在仓库地址后的是发行版。许多系统使用Linux内核,这些使用Linux内核的系统成为发行版。

RoboMaster视觉教程Linux(一)保姆级换源教程_linux


发行版有两种分类方法,一类是发行版的具体代号,如 ​​xenial​​​,​​trusty​​​, ​​precise​​​ 等;还有一类则是发行版的发行类型,如​​oldstable​​​, ​​stable​​​, ​​testing​​​ 和 ​​unstable​​。

另外,在发行版后还可能有进一步的指定,如 ​​xenial-updates​​​, ​​trusty-security​​​, ​​stable-backports​​ 等。

可以用命令lsb_release -sc来查看当前系统的代号。

3.4 软件包分类 (Component)

debian和Ubuntu有着不的分类。

拿Ubuntu来说:

自由软件

非自由软件

官方支持的

Main

Restricted

非官方,社区支持

Universe

Multiverse

PS:当然,大家可能已经发现最上面的示例,URL网址后是五个字符串:他们除了指明了按发行版和软件包类型之外,其实还是那个网址里面的五个文件夹。表示从对应文件夹下载。大家可以打开URl看一下。

四 最佳换源步骤

注意:在更改sources.list之前,最好先备份一下:

sudo cp
sudo apt install

1.修改sourses.list

cd /etc/apt
sudo vim sources.list
//在vim里做的修改是利用替换功能,Ubuntu官方的源换为阿里云的源,命令为下面这句:
//:%s/ports.ubuntu/mirrors.aliyun/
sudo apt clean
sudo apt update
sudo

在输入sudo gedit sources.list后,会打开这个sources.list文件,把cn.archive.ubuntu(其他人的电脑可能是id.archive.ubuntu或者是ports.ubuntu ​​security.ubuntu​​)换成mirrors.aliyun

其实就是将http://与/ubuntu之间的内容改为mirrors.aliyun.com。(或者是https://与/ubuntu之间的内容)

比如,原来是

​deb http://cn.archive.ubuntu.com/ubuntu/ bionic-proposed main restricted universe multiverse​

改为

​deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse​

2.换源后更新

sudo apt  clean
sudo apt update
sudo

正常情况下,上面的指令可以很方便地执行,但是也有可能出错。出的错有太多种可能。这里放置一个链接,大家如果有错可以从这里找,或者干脆百度。

五 测试是否成功

怎么测试呢?只要你安装下面这些库成功了。那么就是换源成功。一些库很有用

sudo apt-get install build-essential cmake git
sudo apt-get install openssh-server -y
service ssh

六 报错参考集锦

6.1 报错如:

http://packages.ros.org/ros/ubuntu xenial InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXXXXXX
404 Not Found
The repository 'http://ppa.launchpad.net/bzindovic/suitesparse-bugfix-1319687/ubuntu xenial Release' does not have a Release file.
The repository 'http://ppa.launchpad.net/bzindovic/suitesparse-bugfix-1319687/ubuntu xenial Release' does not have a Release file.
An error occurred during the signature verification. The repository is not updated and the previous index files will be used.

比如说缺少公钥publickey,还有无法fetch等等,我按照上面进行过的步骤删除或者添加公钥,最后也没有成功。这些错误是一起报出来的,但是像我这样一个个上网搜索,按照网络教程弄,最后能够达到不报错的目的,但是更新完后不成功。

如果按照每一个报错提示上网搜索解决方案其实没用。
最终做法是在sources.list.d文件夹里删除了ros-latest.list和bzindovic-ubuntu-suitesparse-bugfix-1319687-xenial.list这两个东西就成功了。秘钥什么的不用管

/etc/apt sources.list.d/
ls
sudo mv ubuntu-toolchain-r-ubuntu-test-xenial.list ubuntu-toolchain-r-ubuntu-test-xenial.list.bk
//
sudo rm bzindovic-ubuntu-suitesparse-bugfix-1319687-xenial.list
sudo mv ubuntu-toolchain-r-ubuntu-test-xenial.list.bk ubuntu-toolchain-r-ubuntu-test-xenial.list
sudo rm ros-latest.list

删除这些东西之后,再次执行

sudo apt clean
sudo apt update
sudo apt upgrade

6.2 Temporary failure resolving ‘mirrors.aliyun.com’

是没有设置好dns ​​设置dns链接​

也可以用移动之后重命名的方式

dji@manifold2:/etc/apt$ cd sources.list.d/
ls
sudo mv ubuntu-toolchain-r-ubuntu-test-xenial.list ubuntu-toolchain-r-ubuntu-test-xenial.list.bk
//
sudo rm bzindovic-ubuntu-suitesparse-bugfix-1319687-xenial.list
sudo mv ubuntu-toolchain-r-ubuntu-test-xenial.list.bk ubuntu-toolchain-r-ubuntu-test-xenial.list
sudo rm ros-latest.list

6.3 manifold网络报错


Failed to fetch http://mirrors. aliyun. com/ubuntu-ports/dists/bionic/InRelease 
Temporary failure resolving ' mirrors. aliyun. com'

这个无法连接有可能是网络不好,登录百度或者ping一下看看网络连接

6.4 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?

sudo rm /var/lib/dpkg/lock
sudo rm

微信公众号

欢迎大家关注我的个人公众号,现阶段主要总结Robomaster相关的计算机视觉知识。
公众号名称:三丰杂货铺

RoboMaster视觉教程Linux(一)保姆级换源教程_换源_02