admin 管理员组

文章数量: 887016

文章目录

    • 1.创建一个新的普通用户
    • 2.给用户授权
    • 3.删除用户
    • 4.新增用户添加至ubuntu的sudors文件中
    • 5.提高ubuntu下访问github的速度
      • 5.1 vscode在线打开github
    • 6.配置ubuntu国内镜像下载源的方法
      • 6.1 如果ping mirrors.tuna.tsinghua.edu无法ping通
    • 7.ubuntu包的安装方法
      • 问题:Package python3 is not configured yet或者 Package ** is not configured yet或者Errors were encountered while processing
    • 8.Ubuntu中将默认的dash改为bash
    • 9.pip很慢
    • 10. wsl2安装openssh-server
    • 11.wsl2安装docker
    • 12.wsl2将默认的NAT方式配置成网桥模式
    • 13.谷歌浏览器商店打不开怎么办?
    • 14.wsl增加组播路由
    • 15.Python默认查找包的环境
    • 16.vscode使用wsl插件出现的问题
    • 17.WSL2很卡
    • 18.vscode常用插件小结
    • 19.vim 整合插件
    • 20.curl直接下载github release文件
    • 21 git submodule问题
    • 22 ubuntu支持交叉编译
    • 23.Ubuntu 查看cpu个数及核心数
    • 23.如何在ubuntu22.04版本上安装libssl1.1?
    • 24.boost手册及安装
    • 25.WSL2端口映射
    • 26.Ubuntu 22.04 Minikube安装配置
    • 27.ubuntu 22.04 安装kubectl
    • 28.ubuntu22.04安装kOps
    • 29.在线生成asicc字符画网站
    • 30.连接dl.google超时的问题
    • 31.clang-tid静态检查工具
    • 32.起变量名网站CODELF
    • 33.wsl2中pip很慢
    • 34.Windows10或者Windows11主机无法PING通的解决方法
    • 35. Key is stored in legacy trusted.gpg
    • 36.wget --no-check-certificate 问题解决
    • 40.Windows设置暗黑主题方案
    • 41.pdf翻译
    • 42.ubuntu20.04 install/uninstall gcc11
    • 43.clang-format配置
    • 44.ubuntu 配置命令提示符
    • 45.wsl2中安装kali
    • 46.WSL2 install plantuml.jar
    • 47. The repository 'http://mirrors.kernel/ubuntu hirsute Release' does not have a Release file
    • 48.ubuntu 界面使用gparted进行扩容
    • 49.docker hub镜像
    • 50. 构建支持多种 CPU 架构的 Docker 镜像
      • 在amd64的docker上运行arm64的镜像
    • 51.gcc/clang/android-ndk docker镜像编译环境
    • 52.ubuntu22.04 安装高版本cmake
    • 53.Ubuntu linux下git命令无法自动补齐问题
    • 54.

1.创建一个新的普通用户

  • 创建了可以登录的meow用户并使用/bin/bash作为shell。
  • 设置密码。
  • 为meow用户增加管理员权限。
  • 切换登录用户为meow。
$ sudo useradd -m meow -s /bin/bash
$ sudo passwd meow
$ sudo adduser meow sudo
$ su meow

2.给用户授权

  • 查看meow所在的组。
  • 设置meow权限为superuser。
  • 查看sudoer的文本文件(suders含义),可以添加meow ALL=(ALL:ALL) ALL为meow设置superuser权限。
$ groups meow
$ usermod -aG sudo meow
$ visudo

visudo默认使用vim而不是nano的方法
在顶部附近的/etc/sudoers文件中添加一行:
Defaults editor=/usr/bin/vim 

或者

wangji@DESKTOP-QNG23J0:~$ ll /etc/alternatives/editor
lrwxrwxrwx 1 root root 9 Aug 30 05:40 /etc/alternatives/editor -> /bin/nano*
wangji@DESKTOP-QNG23J0:~$ sudo ln -sf /usr/bin/vim /etc/alternatives/editor

wangji@DESKTOP-QNG23J0:~$ sudo visudo
  • 参考:如何将visudo编辑器从nano更改为vim

3.删除用户

  • 会删除用户目录
$ deluser --remove-home meow

4.新增用户添加至ubuntu的sudors文件中

修改这2个位置,增加NOPASSWD:,注意NOPASSWD:的冒号,且前后有空格

一般上述方式即可,更通用

如果想要单独控制某个用户,可以参照如下的方式:

ALL  ALL=(ALL:ALL)    NOPASSWD:   ALL

用户 组=(用户:组)  NOPASSWD:  允许执行无需密码的程序
sudo cp /etc/sudoers /etc/sudoers.old
sudo chmod +w /etc/sudoers
sudo vim /etc/sudoers
# 加上如下行
%your_user_name% ALL=(ALL) NOPASSWD: ALL

1 youuser ALL=(ALL) ALL
2 %youuser ALL=(ALL) ALL
3 youuser ALL=(ALL) NOPASSWD: ALL
4 %youuser ALL=(ALL) NOPASSWD: ALL

解释如下:
第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.

参考:

  • 关于Ubuntu下is not in the sudoers file解决方法
  • wsl ubuntu 取消sudo密码:

5.提高ubuntu下访问github的速度

ubuntu下使用github很慢的解决办法1:

  • 提高ubuntu下访问github的速度

  • 注意:因为上述修改了wsl的host,若想在wsl中持久化生效,需要修改windows的host文件以永久保存到WSL中

ubuntu下使用github很慢的解决办法2:

  • Ubuntu20.04 、windows10 解决无法ping通github的问题(亲测有效,避免入坑)

ubuntu下使用github很慢的解决办法3:

  • github下载代理

在windows store安装免费github加速器:watt tookit

  • powertoys工具:如果无法删除文件,可以下这个工具,同样来自windows store。操作方法:右键点击删除的文件,选中file locksmith

5.1 vscode在线打开github

vscode在线打开github-非句号方式

vscode在线打开github-句号方式

6.配置ubuntu国内镜像下载源的方法

ubuntu 的apt源配置方法见:Ubuntu配置apt的国内源地址,网站见:阿里云ubuntu镜像源网站

  • 镜像地址或网站
  • 阿里云镜像
  • 清华镜像
  • 网易镜像
  • 搜狐镜像

注意:不同的ubuntu系统需要修改镜像源的配置文件,上述的配置文件中一般为focal

wangji@DESKTOP-QNG23J0:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.5 LTS
Release:        20.04
Codename:       focal

所以需要参考将源的codename进行修改:Ubuntu更换apt源与Codename的关系

6.1 如果ping mirrors.tuna.tsinghua.edu无法ping通

  • 临时修改方法如下
1.打开/etc/resolv.conf;

$sudo vim /etc/resolv.conf

2.修改nameserver后的ip地址;

加入:

nameserver 8.8.8.8
nameserver 8.8.4.4

永久修改请参考以下的方法

wsl中永久修改/etc/resolv.conf

  • 按照先修改/etc/wsl.conf。然后再修改 /etc/resolv.conf文件的流程操作即可
  • ref:Make /etc/resolv.conf changes permanent in WSL 2,WSL2 Ubuntu20.04 /etc/resolv.conf重启丢失
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo chattr +i /etc/resolv.conf

7.ubuntu包的安装方法

一般所有的包基本都可以通过命令进行安装,有的是使用包,有的是开发者包,比如ostree,所以执行虾命令就可以完成包的安装

wangji@DESKTOP-QNG23J0:/usr/local/lib/x86_64-linux-gnu/pkgconfig$ sudo apt-cache search ostree
libendless-doc - documentation files for the Endless SDK
libostree-1-1 - content-addressed filesystem for operating system binaries (library)
libostree-dev - Development files for the libostree library
libostree-doc - Development documentation for the libostree library
ostree - content-addressed filesystem for operating system binaries
ostree-boot - libostree boot loader and initramfs integration
ostree-tests - content-addressed filesystem for operating system binaries - tests

安装方法

wangji@DESKTOP-QNG23J0:/usr/local/lib/x86_64-linux-gnu/pkgconfig$ sudo apt-get install libostree-dev 

默认下载包的位置:

  • ref:ubuntu软件默认安装位置
下载的软件存放位置
 /var/cache/apt/archives

查看dpkg的control信息

dpkg --info python3.8-examples_3.8.10-0ubuntu1~20.04.6_all.deb

问题:Package python3 is not configured yet或者 Package ** is not configured yet或者Errors were encountered while processing

  • “dpkg: error processing package openssh-server (–configure)” on apt install

  • ref:大量dpkg依赖错误

1、sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/
2、sudo mkdir /var/lib/dpkg/info/
3、sudo apt-get update
4、sudo apt-get -f install

问题:安装python3

sudo apt install python3.7
sudo apt install python-is-python3

问题4:卸载python2.7

  • ref:ubuntu完全卸载python2.7
1.卸载python2.7
sudo apt-get remove python2.7

2.卸载python2.7及其依赖
sudo apt-get remove --auto-remove python2.7

3.清除python2.7的一些配置文件
sudo apt-get purge python2.7 
sudo apt-get purge --auto-remove python2.7

dpkg -L +软件包的名字,可以知道这个软件包包含了哪些文件, 这个方法可以列出所有安装后留在系统里的文件

dpkg -L packagename
dpkg -l | grep 程序大概包含的程序名关键字

sudo dpkg --purge  libpython2.7-minimal:amd64 删除对应配置文件

即可查出安装后的文程序名,然后根据这个文件名即可完成对文件的卸载
sudo apt autoremove --purge 文件名

ubuntu安装deb包到指定目录

  • ref:ubuntu中apt-get的默认安装路径、安装、卸载以及查看等方法总结

8.Ubuntu中将默认的dash改为bash

sudo dpkg-reconfigure dash Enter

9.pip很慢

  • ref:
    pip安装使用清华源
    解决Ubuntu pip install下载慢的问题,其中pip配置文件需要对应进行修改
    配置pip源
(1)pip config set global.index-url https://mirrors.huaweicloud/repository/pypi/simple

 /home/wangji/.config/pip/pip.conf
wangji:是你自己的用户哦

(2)使用vi pip.conf命令打开pip.conf文件,写入如下内容:
[global]
index-url = http://mirrors.myhuaweicloud/pypi/web/simple
format = columns
[install]
trusted-host=mirrors.myhuaweicloud

pip用于查看 某个 库的名字、版本、位置等具体信息

pip show xxx
#如 pip show requests#

sudo pip show xxx是不一样的

其他命令类似

eg:

wangji@script-wang:~/framework/framework_master$ pip show gitpython



Name: GitPython
Version: 3.1.31
Summary: GitPython is a Python library used to interact with Git repositories
Home-page: https://github/gitpython-developers/GitPython
Author: Sebastian Thiel, Michael Trier
Author-email: byronimo@gmail, mtrier@gmail
License: BSD
Location: /home/wangji/.local/lib/python3.8/site-packages
Requires: gitdb
Required-by: 
wangji@script-wang:~/framework/framework_master$ 
wangji@script-wang:~/framework/framework_master$ sudo pip show gitpython
Name: GitPython
Version: 3.1.31
Summary: GitPython is a Python library used to interact with Git repositories
Home-page: https://github/gitpython-developers/GitPython
Author: Sebastian Thiel, Michael Trier
Author-email: byronimo@gmail, mtrier@gmail
License: BSD
Location: /usr/local/lib/python3.8/dist-packages
Requires: gitdb
Required-by: 

10. wsl2安装openssh-server

  • ref:wsl中安装openssh-server:会出现安装openssh-server报Depends: openssh-client (= 1:6.6p1-2ubuntu2.8)错误

启动:

不能使用(直接使用就会报错)sudo systemctl start sshd

得通过:
sudo /etc/init.d/ssh start 

由于WSL2默认使用NAT的方式,所以需要开启端口转发,这样其他主机就可以ssh进来了
参考去设置wsl2的端口转发:wsl2 设置端口映射,以及修改windows防火墙(进和出的规则),别人就可以访问了

11.wsl2安装docker

ubuntu:

  • ref:记一次Ubuntu19无法安装docker源
curl -fsSL https://download.docker/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker/linux/ubuntu/ $(lsb_release -cs) stable"

或者 vim /etc/apt/sources.list中增加:
deb [arch=amd64] https://download.docker/linux/ubuntu/ focal stable

focla:由$(lsb_release -cs)

安装docker以及docker-compose

sudo apt-get install docker-ce docker-ce-cli containerd.io -y

启动docker

 sudo /etc/init.d/docker start

可能存在的问题:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied
  • 原因:
wangji@script-wang:~/ota/OpenSource/ota-lith$ ll /var/run/docker.sock
srw-rw---- 1 root docker 0 Dec  2 12:43 /var/run/docker.sock=

可以看出,这个套接字文件所属组是docker,我们可以将该普通用户加入到docker这个组。
  • 解决办法:

 sudo gpasswd -a username docker   #将普通用户username加入到docker组
 $ newgrp docker  #更新docker组
  • ref:Docker权限 “Got permission denied while trying to connect to the Docker daemon socket at unix:///var/”

防火墙问题:

/var/log/docker.log

Error initializing network controller: error obtaining controller instance: unable to add return rule in DOCKER-ISOLATION-STAGE-1 chain:  (iptables failed: iptables --wait -A DOCKER-ISOLATION-STAGE-1 -j RETURN: iptables v1.8.7 (nf_tables):  RULE_APPEND failed (No such file or directory): rule in chain DOCKER-ISOLATION-STAGE-1
  • 解决办法
sudo update-alternatives --config iptables

选择:iptables-legacy
  • ref:Docker in WSL2 failed to start daemon: Error initializing network controller

  • ref:Docker hub使用国内镜像源:最新Docker hub 国内镜像方法

sudo vim /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://4sjn347i.mirror.aliyuncs",
    "https://docker.mirrors.ustc.edu"
  ],
  "max-concurrent-downloads": 10,
  "insecure-registries": [],
  "debug": true,
  "experimental": false,
  "features": {
    "buildkit": true
  }
}

接着重启docker即可

重要!!!!

  • Docker Hub 镜像加速器

⚠️⚠️⚠️ 自 2024-06-06 开始,国内的 Docker Hub 镜像加速器相继停止服务,可选择为 Docker daemon 配置代理或自建镜像加速服务。

12.wsl2将默认的NAT方式配置成网桥模式

条件:

  • 只有:win10专业版支持
  • ref:wsl关闭或者启用NAT或者桥接模式网络
    WSL系列内容:wsl2 通过桥接网络实现被外部局域网主机直接访问(更新一键执行powershell脚本)

13.谷歌浏览器商店打不开怎么办?

如何在国内,下载Chrome应用商店中的插件

14.wsl增加组播路由

  • ref:ubuntu增加组播路由

  • 参考:为Ubuntu系统添加新的普通用户,Ubuntu系统sudo不需要密码设置,使用Apt命令查找软件包– Ubuntu

15.Python默认查找包的环境

python -m site

16.vscode使用wsl插件出现的问题

问题1:openssl error:0A000126:SSL routines::unexpected eof while reading

  • 主要原因是wsl中使用wget下载vscode服务器端报错
首先尝试升级openssl
sudo apt-get update && sudo apt-get install openssl

若不可以,则需离线安装服务器端到wsl中
commit_id=f06011ac164ae4dc8e753a3fe7f9549844d15e35

# Download url is: https://update.code.visualstudio/commit:${commit_id}/server-linux-x64/stable
curl -sSL "https://update.code.visualstudio/commit:${commit_id}/server-linux-x64/stable" -o vscode-server-linux-x64.tar.gz

mkdir -p ~/.vscode-server/bin/${commit_id}
# assume that you upload vscode-server-linux-x64.tar.gz to /tmp dir
tar zxvf /tmp/vscode-server-linux-x64.tar.gz -C ~/.vscode-server/bin/${commit_id} --strip 1
touch ~/.vscode-server/bin/${commit_id}/0

17.WSL2很卡

问题:WSL2 Vmmem占用内存很高,用着用着就卡

  • 解决办法:打开cron的自启动服务,定时清内存
(1)配置cron服务
sudo crontab -e 
添加:*/5 * * * * sync; echo 3 > /proc/sys/vm/drop_caches &&  touch /tmp/success_drop_caches_last_run || touch /tmp/faliure_drop_caches_last_run

(2)自动启动cron服务
sudo vim ~/.bashrc
添加:[ -z "$(ps -ef | grep cron | grep -v grep)" ] && sudo /etc/init.d/cron start &> /dev/null
配置sudo命令:若配置过则不需要配置
sudo visudo
sudo ALL=NOPASSWD: /etc/init.d/cron start

(3)在powershell中:wsl --shutdown

18.vscode常用插件小结

(1)vscode使用markdown:VS Code 插件之 Markdown 篇

  • 说明:若需要对markdown的表格对齐的话,建议使用markdown all in one 格式化工具,不要去用markdown-formatter(很难用)

(2)离线环境下仅使用vscode remote ssh方式远程连接服务器操作指南

(3)vscode 的tab与空格设置 ,vscode使用sftp配置 ,vscode代码补全插件

(4)vsocde跳转python代码,vscode实现RF框架代码跳转功能

(5)vscode中使用TIMELINE和GIT插件查看代码的历史记录

(6)VSCode 的扩展包C/C++ IntelliSense, debugging, and code browsing的IntelliSense功能无法使用

(7)Windows 下 VSCode 使用 SSH 连接报 Bad owner or permissions on C:\Users\Administrator/.ssh/config 错误问题解决

  • ref:wsl导致vmmem占用高解决办法

19.vim 整合插件

vimrc

  • 教程:Vim命令全解

(1)vim搜索设置高亮

  • ref:vim搜索设置高亮
有两种方法:
1、临时设置:vim打开文档-->命令行形式输入 set hlsearch。
缺点:关闭文档后,下次打开,又需要重新设置一遍。

2、永久设置(推荐):在~/.vimrc中配制
vim ~/.vimrc
在文件中加上set hlsearch 
然后保存退出便可。
优点:一次设置,永久生效。

(2)vim常用操作

hjkl左上下右
i当前字符前插入
a当前字符后插入
I当前行开头插入
A当前行末尾插入
o在后一行插入
O在前一行插入
v选择
V选择整行
y复制
p粘贴在当前字符后
P粘贴在当前字符前
c修改
d删除
x删除一个字符
s修改当前字符
r仅修改当前字符
f跳转到下一个字符上
t跳转到下一个字符前
0开头
$结尾
^除去空格的开头
w下一个单词
b上一个单词
e下一个单词的末尾
W下一个单词(无视符号)
B上一个单词(无视符号)
E下一个单词的末尾(无视符号)
ZZ保存并退出
ZQ不保存强制退出
<<减小缩进
>>增大缩进
==自动调整缩进
#向前查找当前光标下单词
*向后查找当前光标下单词
?向前查找
/向后查找
n下一个
N上一个
{上一段落
}下一段落
u撤销上一次操作,ctrl+r则为反撤销操作
全词匹配:/int\>
不区分大小写::set ignorecase //忽略大小写,:set noignorecase //恢复到大小写敏感

vim其他操作

(1)vim批量注释
v或者V选中后,命令行输入:'<,'>norm I//
等价于26,32norm I//

批量取消注释
v或者V选中后,命令行输入:'<,'>norm 0x


(2)ctrl+u,ctrl+d快速翻页

(3)V选中部分批量替换
'<,'>s/wang/ji/g

全文替换:1,$s/wang/ji/g

(4)取消高亮选中
:noh

(5)vim中打开目录
:NERDTreeToggle

(6)Plug
:PulgInstall

eg:"Plug 'vim-scripts/vim-airline' ->"Plug 'vim-scripts/vim-airline'
去掉前面的"
" no longer used vim-airline:
"let g:airline#extensions#coc#enabled = 1
"let g:airline#extensions#tabline#enabled = 1
"let g:airline#extensions#tabline#left_alt_sep = '|'
"let g:airline#extensions#tabline#buffer_nr_show = 0
"let g:airline#extensions#tabline#formatter = 'default'
"let g:airline#extensions#keymap#enabled = 1
"let g:airline#extensions#tabline#buffer_idx_mode = 1


则需要在vim下执行:PulgInstall

(7)wsl ubuntu中vim拷贝到windows剪切板
apt-get install -y vim-gtk3
检查一下是否安装成:
vim --version | grep \"clipboard\"
+clipboard         +keymap            +printer           +vertsplit

vim中的内容保存至windows剪切板:
:'<,'>w !clip.exe

(8)ctrl t 下面打开终端,ctrl w在终端和代码中切换
将代码拷贝到终端:y拷贝vim中的内容,然后换到终端中输入:ctrl w\"\"

(9)F7编译代码,编译选项:/home/wangji/.vim/tasks.ini
F5构建和运行Cmake工程

(10)gd寻找定义
可能打开多个文件F2文件往左,F3文件往右
跳转回来:ctrl o,跳转进去ctrl i

gr查看这个函数被谁引用了


  • ref:wsl vim无法复制到系统剪贴板,解决方法,WSL2环境下VIM的clipboard解决方案

20.curl直接下载github release文件

方法1:
curl -LsO https://github/archibate/vimrc/releases/vimrc-install.sh
# -L 参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。
# -s 是silent,就是不输出详细过程
# -O 把输出写到该文件中,保留远程文件的文件名


方法2:
git clone git@github:archibate/vimrc.git
注释掉./vimrc/.vim/install.sh文件中的set -e
./vimrc/.vim/install.sh

21 git submodule问题

submodule

22 ubuntu支持交叉编译

  • ref:Linux环境中安装指定版本的gcc-aarch64-linux-gnu、gcc-arm-linux-gnueabi工具包
会在你的环境中安装一个默认适配你环境的较新版本
 sudo  apt-get install gcc-aarch64-linux-gnu -y
查询版本号
root@bruce:/# aarch64-linux-gnu-gcc -v
如果CMake中制定特定版本的交叉编译器,eg:
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc-9)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++-9)

则可以执行这个命令,ubuntu会告诉你如何安装
wangji@script-wang:~/time/timesync/build/install/bin$ aarch64-linux-gnu-g++-9
sudo apt install g++-9-aarch64-linux-gnu -y

23.Ubuntu 查看cpu个数及核心数

  • ref:
查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l


查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

查看线程数
grep 'processor' /proc/cpuinfo | sort -u | wc -l    

23.如何在ubuntu22.04版本上安装libssl1.1?

链接

24.boost手册及安装

boost中文手册:
Boost C++ 库

boost英文手册:
Chapter 22. Boost.PropertyTree

Boost常用组件概览:链接

boost安装:
在Ubuntu上安装Boost的五种方法(全网最全,建议收藏)
main/release/1.71.0/source

25.WSL2端口映射

将ip地址的对应的端口映射到宿主win10对应的端口
# netsh interface portproxy add v4tov4 listenport=[win10端口] listenaddress=0.0.0.0 connectport=[虚拟机的端口] connectaddress=[虚拟机的ip]
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.29.41.233

删除端口转发
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0


检测是否设置成功
netsh interface portproxy show all

接着,还需要配置windows的防火墙规则,可以参考:vm虚拟机中使用NAT模式特别说明

wsl2 设置端口映射

  • ref:How can I install vscode-server in linux offline [duplicate]

26.Ubuntu 22.04 Minikube安装配置

Ubuntu 22.04 Minikube安装配置,Minikube-ubuntu系统安装minikube,minikube配置,–registry-mirror=https://registry.docker-cn

MacOS 安装 minikube 后执行 “minikube start” 卡在 “Booting up control plane …”

如果改用国内镜像源还是无法下载,则参看链接,自己使用docker下载并重新tag

自己docker pull然后改名字

问题:

shaokun@shaokun:~/wangji/ota-community-edition$ make start
😄  minikube v1.2.0 on linux (amd64)
✅  using image repository registry-hangzhou.aliyuncs/google_containers
E0413 18:31:19.631161    3057 start.go:559] StartHost: Error loading existing host. Please try running [minikube delete], then run [minikube start] again.: registry: driver not found

💣  Unable to start VM: Error loading existing host. Please try running [minikube delete], then run [minikube start] again.: registry: driver not found

😿  Sorry that minikube crashed. If this was unexpected, we would love to hear from you:
👉  https://github/kubernetes/minikube/issues/new
make: *** [Makefile:14: start-minikube] Error 70
shaokun@shaokun:~/wangji/ota-community-edition$ minikube delete

解决:
安装minikube v1.4.0版本

27.ubuntu 22.04 安装kubectl

在 Linux 系统中安装并设置 kubectl

28.ubuntu22.04安装kOps

kOps

29.在线生成asicc字符画网站

在线生成ascii字符画网站

30.连接dl.google超时的问题

解决Android studio 连接 dl.google超时的问题

31.clang-tid静态检查工具

clang-tidy——静态代码分析框架

32.起变量名网站CODELF

CODELF

33.wsl2中pip很慢

如果已经配置pip源,还是很慢,可以执行:

 python -m pip install --upgrade pip wheel setuptools

34.Windows10或者Windows11主机无法PING通的解决方法

步骤:Windows10或者Windows11主机无法PING通的解决方法

检查:
打开windows安全中心->打开防火墙和网络保护->打开高级设置

可以看到入站规则中显示ICMP回显请求,说明设置成功了

35. Key is stored in legacy trusted.gpg

问题:

apt-get update -y 出现以下告警
Reading package lists... Done
W: https://download.docker/linux/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

解决办法:
sudo apt-key list

wangji@DESKTOP-9TAUMH9:~$ apt-key list
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2015-05-29 [SC]
      2EE0 EA64 E40A 89B8 4B2D  F734 99E8 2A75 642A C823
uid           [ unknown] sbt build tool <scalasbt@gmail>
sub   rsa4096 2015-05-29 [E]

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker>
sub   rsa4096 2017-02-22 [S]

/etc/apt/trusted.gpg.d/sbt.gpg
------------------------------
pub   rsa4096 2015-05-29 [SC]
      2EE0 EA64 E40A 89B8 4B2D  F734 99E8 2A75 642A C823
uid           [ unknown] sbt build tool <scalasbt@gmail>
sub   rsa4096 2015-05-29 [E]

/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]
      8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092
uid           [ unknown] Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu>

/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
------------------------------------------------------
pub   rsa4096 2018-09-17 [SC]
      F6EC B376 2474 EDA9 D21B  7022 8719 20D1 991B C93C
uid           [ unknown] Ubuntu Archive Automatic Signing Key (2018) <ftpmaster@ubuntu>

选择出现告警的key进行修复,我这里显然是docker,且仅取出上述key最后的8个字符即可0EBF CD88

wangji@DESKTOP-9TAUMH9:~$ sudo apt-key export 0EBFCD88| sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

ref:

  • Fixing “Key is stored in legacy trusted.gpg keyring” Issue in Ubuntu

36.wget --no-check-certificate 问题解决

添加 --no-check-certificate
使用.wgetrc 文件(以后都就可以了)

echo "check_certificate = off" >> ~/.wgetrc

ref:

  • wget --no-check-certificate 问题解决

40.Windows设置暗黑主题方案

10 个适用于 Google Chrome 的最佳黑暗模式扩展

最好用的感觉还是浏览器自带的暗模式
Step1

  • 依次点击:设置 > 个性化 > 颜色 > 选择默认应用模式 > 深色,来开启系统深色主题。
  • 此时,Chrome的标题栏和状态栏,应该会变成深色,但是网页的主体部分没有变化。

    Step2
  • 打开 Chrome,并在地址栏中输入(或复制+粘贴)“ chrome://flags ”,然后按 “Enter”
  • 然后,在搜索框中,输入 “dark mode”,找到选项之后,把右侧的状态,改为 “Enable”
  • 重新启动浏览器,即可完成设置。

41.pdf翻译

知云文献翻译

42.ubuntu20.04 install/uninstall gcc11

sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt install -y gcc-11
gcc-11 --version
sudo apt purge --autoremove -y gcc-11
sudo rm -rf /etc/apt/trusted.gpg.d/ubuntu-toolchain-r_ubuntu_test.gpg
sudo rm -rf /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-focal.list
  • How to install GCC 11 on Ubuntu

43.clang-format配置

vscode安装clang-format插件

jiang下属配置放到工程目录的.clang-format即可:

---
Language: Cpp
# BasedOnStyle: Google
AccessModifierOffset: -4
AlignAfterOpenBracket: DontAlign
# T503 : 2-2-5
AlignConsecutiveAssignments: Consecutive
AlignConsecutiveDeclarations: false
AlignConsecutiveMacros: false
AlignEscapedNewlines: Left
AlignOperands: false
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: Never
# T503 : 2-4-1
AllowShortLambdasOnASingleLine: Empty
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
# To be included in T503
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
  # T503 : 2-2-2, 2-1-2
  AfterCaseLabel: true
  AfterClass: true
  # T503 : 2-1-2
  AfterControlStatement: Always
  AfterEnum: true
  AfterFunction: true
  AfterNamespace: true
  AfterObjCDeclaration: false
  AfterStruct: true
  AfterUnion: true
  AfterExternBlock: false
  BeforeCatch: false
  # T503: 2-1-2
  BeforeElse: true
  IndentBraces: false
  SplitEmptyFunction: false
  SplitEmptyRecord: false
  SplitEmptyNamespace: false
BreakAfterJavaFieldAnnotations: false
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
# To be included in T503
BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeComma
BreakStringLiterals: true
# T503 : 2-1-1
ColumnLimit: 80
CommentPragmas: '^ clang-format:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: false
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH
IncludeBlocks: Preserve
# To be included in T503
IncludeCategories:
  - Regex: '^<.*\.h>'
    Priority: 1
  - Regex: '^<.*'
    Priority: 2
  - Regex: '.*'
    Priority: 3
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: false
IndentPPDirectives: BeforeHash
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: '^MR_HEADER$'
MacroBlockEnd: '^MR_FOOTER$'
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: false
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left
ReflowComments: true
SortIncludes: false 
SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
Standard: Auto
TabWidth: 4
UseCRLF: false
UseTab: Never
...

44.ubuntu 配置命令提示符

Bash 命令提示符定制指南

可用的配置如下:

## PS1&PS2
## get current branch in git repo
function parse_git_branch() {
 BRANCH=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
 if [ ! "${BRANCH}" == "" ]
 then
  STAT=`parse_git_dirty`
  echo "[${BRANCH}${STAT}]"
 else
  echo ""
 fi
}

## get current status of git repo
function parse_git_dirty {
 status=`git status 2>&1 | tee`
 dirty=`echo -n "${status}" 2> /dev/null | grep "modified:" &> /dev/null; echo "$?"`
 untracked=`echo -n "${status}" 2> /dev/null | grep "Untracked files" &> /dev/null; echo "$?"`
 ahead=`echo -n "${status}" 2> /dev/null | grep "Your branch is ahead of" &> /dev/null; echo "$?"`
 newfile=`echo -n "${status}" 2> /dev/null | grep "new file:" &> /dev/null; echo "$?"`
 renamed=`echo -n "${status}" 2> /dev/null | grep "renamed:" &> /dev/null; echo "$?"`
 deleted=`echo -n "${status}" 2> /dev/null | grep "deleted:" &> /dev/null; echo "$?"`
 bits=''
 if [ "${renamed}" == "0" ]; then
  bits=">${bits}"
 fi
 if [ "${ahead}" == "0" ]; then
  bits="*${bits}"
 fi
 if [ "${newfile}" == "0" ]; then
  bits="+${bits}"
 fi
 if [ "${untracked}" == "0" ]; then
  bits="?${bits}"
 fi
 if [ "${deleted}" == "0" ]; then
  bits="x${bits}"
 fi
 if [ "${dirty}" == "0" ]; then
  bits="!${bits}"
 fi
 if [ ! "${bits}" == "" ]; then
  echo " ${bits}"
 else
  echo ""
 fi
}

## return
function get_return() {
    RETVAL=$?
    # Normal
    [ $RETVAL -eq 0 ] && echo -e "\033[32m▶ \033[0m"
    # Ctrl + C
    [ $RETVAL -eq 130 ] && echo -e "\033[32m▶ \033[0m"
    # Ctrl + Z
    [ $RETVAL -eq 148 ] && echo -e "\033[32m▶ \033[0m"

    # Error
    [ $RETVAL -ne 0 ] && [ $RETVAL -ne 130 ] && [ $RETVAL -ne 148 ] && echo -e "\033[31m✗ \033[0m"
}

export PS1="\`get_return\`\[\e[36m\][\W]\[\e[m\]\[\e[35m\]\`parse_git_branch\`\[\e[m\]\[\e[33m\]\\$\[\e[m\] "
export PS2="\[\e[32m\]>\[\e[m\] "

在新建一个~/.bashrc_ps1_ps2文件,然后填入上述内容;
在/.bashrc中,填入以下内容即可:

. ~/.bashrc_ps1_ps2

45.wsl2中安装kali

(1)打开微软商店安装kali

安装完毕后打开kali,可能会出现WslRegisterDistribution failed with error: 0x80004005错误
在PowerShell中执行wsl --update即可

(2)配置kali源

sed -i "s@http://http.kali/kali@https://mirrors.tuna.tsinghua.edu/kali@g" /etc/apt/sources.list

(3)Install the dependencies

sudo apt update 
sudo apt install kali-win-kex

(4)open the GUI

  • 可能需要输入密码,输入即可
kex

(5)install burpsuit

  • built-in version:
sudo apt-get install -y burpsuite 
  • free profession version(for Linux version, WIndows版本也支持)
  • ZIP压缩包,或者从Pentesting Club下载也可以

使用步骤如下:

下载 Zip 文件并解压。
使用 Sudo 执行 Kali_Linux_Setup.sh 文件,sudo ./Kali_Linux_Setup.sh

Burp Suite Pro 激活步骤
修改加载窗口中的许可证字符串 “license to Siddharth Sangwan”。
从加载窗口复制许可证密钥并粘贴到 Burp Suite Pro 中,然后点击下一步。
选择 Burp Suite Pro 右下方的手动激活选项。
从 BurpSuite_Pro 中复制许可证请求并粘贴到加载器中。
从加载器中复制许可证响应并粘贴到 Burp Suite Pro 中,然后点击下一步并完成。
现在 Burp Suite Pro 已为根用户激活,要重新启动它,只需在终端运行以下命令:sudo burp

结果展示:

启动

sudo burp

参考:

  • Install kali linux on wsl2
  • How do i fix the error “WslRegisterDistribution failed with error: 0x80004005” which comes when I try to install kali linux?
  • Kali 软件仓库
  • Burp-Suite-Pro

46.WSL2 install plantuml.jar

下载jar包:

放在~/.java/下面:

[test]$ 
▶ [test]$ ll ~/.java/
total 9540
drwxr-xr-x  4 wangji wangji    4096 Mar 18 13:55 ./
drwxrwxr-x 71 wangji wangji    4096 Mar 18 13:58 ../
drwx------  3 wangji wangji    4096 Nov 15  2022 .userPrefs/
drwxr-xr-x  5 wangji wangji    4096 Mar 18 13:51 fonts/
-rwxr-xr-x  1 wangji wangji 9749978 Mar 18 13:59 plantuml.jar*
▶ [test]$ 

vscode 的preview enhance中配置plantuml.jar包的绝对路径:

参考:

  • PlantUML Downloads and Source Code

47. The repository ‘http://mirrors.kernel/ubuntu hirsute Release’ does not have a Release file

执行sudo apt-get update -y,出现以下的结果:

E: The repository 'http://mirrors.kernel/ubuntu hirsute Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details

解决办法:

sudo vim /etc/apt/sources.list
在出问题的deb后面增加[trusted=yes]

参考:

  • “Repository does not have a release file” error [closed]

48.ubuntu 界面使用gparted进行扩容

参考:

  • ubuntu图形化界面根目录简单快速扩容

49.docker hub镜像

  • 最新Docker hub 国内镜像方法

位置:/etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://4sjn347i.mirror.aliyuncs",
    "https://docker.mirrors.ustc.edu"
  ],
  "max-concurrent-downloads": 10,
  "insecure-registries": [],
  "debug": true,
  "experimental": false,
  "features": {
    "buildkit": true
  }
}

很多镜像已经无法从docker hub拉取了。国内的镜像仓库很多也被迫关闭了。新方法可以参考:pull docker镜像

50. 构建支持多种 CPU 架构的 Docker 镜像

Docker Buildx 是 Docker CLI 的一个插件,它是默认 Docker Build 命令的拓展,完全支持 Moby BuildKit 构建器的特性并提供与 Docker Build 一致的体验,它带来的新特性之一就是支持构建多架构镜像。

参考:

  • 构建支持多种 CPU 架构的 Docker 镜像
  • docker 使用QEMU,构建多平台镜像;docker buildx
  • tonistiigi/binfmt 是一使用 Docker 镜像分发的跨平台仿真模拟器集合
  • tonistiigi/binfmt github

Pick specific emulators:

# 安装所有 CPU 架构模拟器
sudo docker run --privileged --rm tonistiigi/binfmt --install all

# 安装指定 CPU 架构模拟器
sudo docker run --privileged --rm tonistiigi/binfmt --install arm64,riscv64,arm

# ls /proc/sys/fs/binfmt_misc/qemu-*
/proc/sys/fs/binfmt_misc/qemu-aarch64

# 创建一个名称为 multiarch 的 buildx 构建实例并立即使用
sudo docker buildx create --name multiarch --use

# 列出所有的 buildx 构建实例状态,可以看到这个新的 buildx 构建实例还未启动
sudo docker buildx ls
NAME/NODE    DRIVER/ENDPOINT             STATUS   BUILDKIT PLATFORMS
multiarch *  docker-container
  multiarch0 unix:///var/run/docker.sock inactive
default      docker
  default    default                     running  20.10.22 linux/arm64, linux/arm/v7, linux/arm/v6, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386

# 我们可以立即启动这个构建实例(不是必须的)
sudo docker buildx inspect --bootstrap
Name:   multiarch
Driver: docker-container

Nodes:
Name:      multiarch0
Endpoint:  unix:///var/run/docker.sock
Status:    running
Buildkit:  v0.11.0
Platforms: linux/arm64, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6

# 再次查看所有 buildx 构建实例状态,可以看到已经在运行了
sudo docker buildx ls
NAME/NODE    DRIVER/ENDPOINT             STATUS  BUILDKIT PLATFORMS
multiarch *  docker-container
  multiarch0 unix:///var/run/docker.sock running v0.11.0  linux/arm64, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
default      docker
  default    default                     running 20.10.22 linux/arm64, linux/arm/v7, linux/arm/v6, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386

打镜像并推送

# qiangge80800880 是我的用户名,镜像打完,并推送到docker hub
[root@]# docker buildx build --platform linux/arm64,linux/amd64 -t qiangge80800880/ubuntu-arm-test:v1 . --push

清理

# 镜像构建并推送完成后,如果没有特殊需求,可以删除构建缓存
# 查看 buildx 构建缓存
sudo docker buildx du
ID						RECLAIMABLE	SIZE		LAST ACCESSED
no7ihggdz0dg9w916xfqdgpo4*              	true 		1.649GB   	19 hours ago
zfsooeun4nk9wuuhzkbs13bvg*              	true 		1.631GB   	19 hours ago
17luobonj5ah02zvbvvjemxhr               	true 		981.7MB   	19 hours ago
...
9kdh9ldirubp6ulj6h5anjsrn*              	true 		8.192kB   	19 hours ago
Reclaimable:	14.79GB
Total:		14.79GB

# 删除 buildx 构建缓存
sudo docker buildx prune

# 删除 buildx 实例
sudo docker buildx ls
NAME/NODE    DRIVER/ENDPOINT             STATUS  BUILDKIT PLATFORMS
multiarch *  docker-container
  multiarch0 unix:///var/run/docker.sock running v0.11.0  linux/arm64, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
default      docker
  default    default                     running 20.10.22 linux/arm64, linux/arm/v7, linux/arm/v6, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386
  
# 停止 buildx 实例
sudo docker buildx stop multiarch

# 删除 buildx 实例
sudo docker buildx rm multiarch

注意:Dockerfile 中的基础镜像不支持某些特定的 CPU 架构、某些项目缺少特定的的链接库

在amd64的docker上运行arm64的镜像

直接拉取arm64版本的镜像,就可以执行拉!!

#拉取镜像:
bash -c "$(curl -sSLf https://xy.ggbond/xy/docker_pull.sh)" -s tonistiigi/binfmt
bash -c "$(curl -sSLf https://xy.ggbond/xy/docker_pull.sh)" -s arm64v8/ubuntu

docker run --privileged --rm tonistiigi/binfmt --install arm64
docker run -it --rm arm64v8/ubuntu bash -l

其他方法:

  • 在x86/amd64的机器上使用Docker运行arm64v8/ubuntu并安装ROS1
#拉取镜像:
sudo docker pull arm64v8/ubuntu:20.04
#或者
bash -c "$(curl -sSLf https://xy.ggbond/xy/docker_pull.sh)" -s arm64v8/ubuntu:20.04

# 为了在 AMD64 主机上运行 ARM64 容器,你需要安装 QEMU 并注册 binfmt 支持。以下是详细步骤:
# 安装 QEMU 用户模式仿真器:
sudo apt-get update
sudo apt-get install -y qemu-user-static

#注册 binfmt:
#Docker 提供了一个方便的镜像来注册 binfmt,可以使用以下命令:
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

# 验证 QEMU 是否正确安装
docker run --rm --privileged multiarch/qemu-user-static:register --reset

# 运行 ARM64 容器
sudo docker run --platform linux/arm64 -it arm64v8/ubuntu:20.04

51.gcc/clang/android-ndk docker镜像编译环境

location

52.ubuntu22.04 安装高版本cmake

参考:

  • How To Install CMake 3.22 Ubuntu 22.04
sudo apt update
sudo apt install build-essential 
sudo apt install libssl-dev
export OPENSSL_ROOT_DIR=/usr/include/openssl
wget https://cmake/files/v3.29/cmake-3.29.2.tar.gz
tar -xzvf cmake-3.29.2.tar.gz
cd cmake-3.29.2
./bootstrap
make -j$(nproc)
sudo make install
# Update PATH Environment Variable
which cmake
/usr/local/bin/cmake
export PATH=/usr/local/bin/cmake:$PATH
source ~/.bashrc
cmake --version

53.Ubuntu linux下git命令无法自动补齐问题

参考

  • Ubuntu linux下git命令无法自动补齐问题
apt-get install bash-completion

#编辑~/.bashrc 文件
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi

54.

本文标签: 普通用户 系统 Ubuntu