目录

Ubuntu 22.04 C++ 开发机的安装配置

前言

记录了一台全新安装的 Ubuntu 22.04 搭建开发环境的过程,其中命令行工具大多是可选项,按需安装。

桌面软件

ShadowSocks

由于是基于 Electron 很自然的可以跨平台使用,比命令行形式的好用很多。

Github 地址 : nojsja/shadowsocks-electro,下载地址 shadowsocks-electron/releases

如果没看到 deb 包,注意点击 show all assets 下拉按钮。

使用 sudo dpkg -i shadowsocks-electron_1.2.3_arm64.deb 安装。

安装后,先复制 SSR 订阅链接地址,点击左下角 “+” 号添加URL订阅地址,从剪切板解析添加。

添加后,启动连接,并设置好 IP 端口,尽量别用1080,可能会和一些网络管理软件冲突,选个其他的端口,比如 10811。

proxychains

命令行的代理工具 proxychains 堪称神器,可以在 http_proxy 失效的时候补位,甚至可以直接代替 http_proxy 的设置, 安装方式: sudo apt install proxychains

配置文件在:/etc/proxychains.conf ,在配置文件最末尾编辑如下:

1
2
3
4
5
# 默认的这句 sock4 注释掉   
# socks4 127.0.0.1. 9050
# 假设上述 shadow socks的代理端口是 10811
socks5 127.0.0.1. 10811
https 127.0.0.1. 10811

如何使用:

1
2
3
# 在需要访问代理网络(需要梯子)的命令添加前缀 proxychains 
# 举例如下:
proxychains wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh  

更多详细信息可以参考 知乎:Linux命令行代理神器-proxychains

Chrome 浏览器

只要执行以下 2 条命令即可:

1
2
3
4
5
# 下载最新 deb 的包
# 假设遇到 SSL 网路问题,搭个梯子吧,或者 prxychains 
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
# dpkg 安装
sudo dpkg  -i  install google-chrome-stable_current_amd64.deb

安装后可以点击图标运行,或者命令行运行 google-chrome 安装。

Switch Omega插件

下载地址为: FelisCatus/SwitchyOmega/releases

直接使用 chrome 浏览器下载可能一下载就被删掉了,可以鼠标右键复制下载地址,然后使用 wget 或 curl 命令行终端下载:

1
2
wget https://github.com/FelisCatus/SwitchyOmega/releases/download/v2.5.20/SwitchyOmega_Chromium.crx
# 如果网速不佳,用 proxychains 可能会更好

如何安装

新版chrome 已经不能直接拖拽到 chrome 安装了,需要解压后再加载:

  1. 先重命名下载的 crx 文件为 zip 文件;
  2. 再解压zip文件;
  3. 使用chrome 浏览器打开开发者模式,手动加载;

其中步骤 1,2 需要运行命令如下:

1
2
3
4
5
6
7
# 备份一下
cp SwitchyOmega_Chromium.crx SwitchyOmega_Chromium.crx.bak

mv SwitchyOmega_Chromium.crx SwitchyOmega_Chromium.zip
mkdir SwitchyOmega_Chromium 
sudo apt install unzip 
unzip SwitchyOmega_Chromium.zip  -d SwitchyOmega_Chromium

剩下步骤3:

  • 访问:chrome://extensions ,右上角 “开发者模式” 点击启用;
  • 左上角出现的 “加载已解压的扩展程序”,然后选中☑️ 上述解压的 SwitchyOmega_Chromium 文件夹。

远程桌面控制

参考本站另外一篇文章:Mac 远程桌面控制Ubuntu 22.04 (RDP)

飞书

访问官网飞书Download ,对得到的 deb 包使用 dpkg 安装即可。

SmartGit

Smart Git 官网 SmartGit 下载, 可以下载 tar.gz 或 deb 包,官网推荐 tar.gz 方式安装。

1
2
3
4
5
6
7
8
# 解压安装包 , 建议解压后拷贝到 /usr/local 目录
tar xzf <smartgit*.tar.gz>
# 手动执行,在 smart git 解压后的根目录
./bin/smartgit.sh
# 添加 smartgit 开始菜单启动项
./bin/add-menuitem.sh
# 移除 smartgit 开始菜单启动项
./bin/remove-menuitem.sh

Visual Studio Code

前往官方网站 [Visual Studio Code下载](下载页面 https://code.visualstudio.com/download) deb 包,假设包名为 code_1.77.3-1681292746_amd64.deb ,执行下述命令安装:

1
sudo dpkg -i code_1.77.3-1681292746_amd64.deb

配置方式可以参考官网:Using C++ on Linux in VS Code.

简单说就是需要配置得到 3 个 json 文件,分别是,tasks.jsonlaunch.jsonc_cpp_properties.json,具体步骤如下:

  1. 首先 gcc -v , g++ -v确认安装了 gcc/g++ (Ubuntu 22.04 默认安装了)。然后安装插件 C++ extension for VS Code;

  2. 创建新工程以及添加新文件 helloworld.cpp ,点击右上角 run 运行,选择“g++ 构建与调试活动文件”,则在 .vscode 目录下生成了 tasks.json 文件;

    如果编译目录下多个 cpp 文件,可以考虑将 json 文件中的 ${file} 换成 ${workspaceFolder}/*.cpp

  3. 类似步骤 2, 点击右上角三角形旁边下拉框调试,选择“g++ 构建与调试活动文件”,则在 .vscode 目录下生成了 launch.json 文件,负责管理调试的命令选项;

    args 设置命令行参数,env 设置环境变量;

  4. 按下快捷键 shift ⇧ + command/win ⌘ + P,并输入"C/C++",选择弹出来的待选项 “C/C++编辑配置(UI)”,则在 .vscode 目录下生成了 c_cpp_properties.json 文件。

⚠️注意:当前的 3 个json 文件在当前目录的 .vscode 目录内,只对当前工程生效。

如何复用上述的设置呢?

拷贝 .vscode 文件夹📁到指定的项目工程目录即可,或者定义 alias 命令,快速拷贝。

那么,除了上述的 3 个 json 文件,还有其他方式吗,那当然是 CMake 了,具体的就不赘述了,也比较简单。

Android Studio

方式1: 命令行安装最新版

除了下载官网的 tar.gz 的包去运行 /studio.sh ,更推荐的是使用命令行直接安装,在菜单栏还能点击,用起来也更稳定。

1
2
3
4
5
6
7
8
9
# 可以视情况而定,安装什么版本
sudo apt install openjdk-11-jdk
# 检查 jdk 安装情况
java --version
# 添加 android studio 的 ppa 
sudo apt-add-repository ppa:maarten-fonville/android-studio

sudo apt update 
sudo apt install android-studio

还有 snap 方式也能安装,不喜欢也不推荐。

如果有需要的可以参考 Install latest Android Studio on Linux Mint 20 and Ubuntu 20.04 的 Method2 自行安装。

方式2: 官网下载安装指定版本

首先安装 64 位 linux 需要的一些开发组件:

1
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386

可以去官网 :https://developer.android.com/studio/archive 下载指定版本的 tar.gz 的包。

解压后拷贝到 /usr/local 或 /opt 目录下,假设拷贝到/opt 目录,运行 /opt/android-studio/bin/studio.sh

提示:如需使 Android Studio 出现在应用列表中,请从 Android Studio 菜单栏中依次选择 Tools > Create Desktop Entry。

上述步骤也可以直接参考官网android developer :android studio linux 版安装

挂载磁盘

开机挂载磁盘,需要编辑 /etc/fstab 文件,使用磁盘 UUID 进行指定,blkid 获取磁盘的 UUID。 如果没打印想要的 UUID,可能是磁盘未识别,可以先打开 gparted 软件,然后再执行 blkid 查询。
添加如下示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#  brand: westdata element mech disk, 1T.  /dev/sdb5
UUID=9bd1c628-b827-438f-b46c-79c68696b89c /mnt/westdata_mech ext4 auto,users,rw,exec   0 0 

#  brand: SOLIDIGM P44 Pro. windows c:/ssd_win11 300G, /dev/nvme0n1p3  
UUID=EC0521C59651AD47 /mnt/c_win11 auto  defaults 0 0 

#  brand: SOLIDIGM P44 Pro. windows d:/software 1.6T, /dev/nvme0n1p4  
UUID=5BE1D52CB5656C7B /mnt/d_software  ntfs auto,users,rw 0 0 

# brand: WD BLACK SN770. windows e:/documents 1T, /dev/nvme1n1p1 
UUID=E0655797691ABAFC /mnt/e_documents  ntfs auto,users,rw 0 0 

挂载网盘

先安装 cifs 工具:

1
sudo apt-get install cifs-utils

然后再挂载网盘:

1
2
3
4
5
# 创建本地挂载目录
sudo mkdir /media/my_net_disk
# 假设网盘地址是 110.0.62.88, 用户名 Benjamin
sudo mount -t cifs -o username=Benjamin  //110.0.62.88/share_dir  /media/my_net_disk
# 然后会打印一句 Password for Benjamin@//110.0.62.88/share_dir ,输入密码即可

命令行工具

在安装下述命令之前,最好先更新一下软件源,使用国内源会少很多问题。

oh my zsh

Ubuntu 默认是没有 zsh 的,要先安装 sudo apt install zsh;

可以看下默认的 Shell 应该是bash :echo $SHELL ;

其次 修改下终端 shell 为 zsh : chsh -s /bin/zsh;

再次检查下 shell ,如果没生效,重启试下。

下载安装 oh my zsh :

1
2
3
cd  ~
wget  https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
sh install.sh

如果遇到网络 443 端口拒绝访问的问题,别犹豫,就是梯子有问题。

如果用梯子,使用神器 proxychains 工具吧 ,我的网络就是有问题,上述在 wget 最前面加上 proxychains 前置即可。

实测参考:同样是 wget 下载 smartgit 的安装包,使用 proxychains 和不使用的对比速度是 88 KB/s 和 4.4MB/s

oh-my-zsh 的默认会将已有的 ~/.zshrc 拷贝并改名为 .zshrc.pre-oh-my-zsh ,并将所有 oh-my-zsh 的配置文件写于 ~/.zshrc 。我不是很喜欢这样,我更喜欢将配置文件改名

1
2
3
4
# 这三句要严格按照顺序执行
mv  ~/.zshrc  ~/.oh_my_zsh.rc 
mv  ~/.zshrc.pre-oh-my-zsh  ~/.zshrc 
echo "source  ~/.oh_my_zsh.rc"  >>  ~/.zshrc 

按照上述修改后,ohMyZsh 的配置文件为 ~/.oh_my_zsh.rc ,Theme 变量为 ZSH_THEME。

有非常多的主题样式可以选择,具体效果可以参考: https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

cmake

一行命令安装:sudo apt install -y cmake

adb

执行一句即可: sudo apt -y install adb

安装后可以愉快的使用 adb 命令了😊。

scrcpy

一款非常优秀的 Android 投屏 + 控制 软件,名字 scrcpy 是 “screen copy” 的缩写。

在 Linux/Mac/Windows 均可用,Github 地址:Genymobile/scrcpy,安装非常简单:

1
sudo  apt  -y  install  scrcpy

安装好之后,在命令行执行 scrcpy 即可启动连着 PC 的 Android 机,可以投屏+鼠标键盘控制输入。

如果连着多台 Andriod,使用 adb devices 打印设备id,然后 scrcpy -s <设备id> 控制指定设备。

ncdu

可以在终端很方便的查看指定的文件夹/磁盘的文件磁盘空间占比。

安装方式 : sudo apt install -y ncdu

更多使用时的命令选项和快捷键可以参考:https://linuxpip.org/install-ncdu-ubuntu/

htop

终端查看系统当前状态,包括 CPU,内存等资源的占用,是对系统命令 top 的加强和补充。

安装较为简单 sudo apt install htop

fanyi

是一个非常好用的终端翻译软件,只能支持中英互译,Linux / Mac 都能用,github 地址: afc163/fanyi

先安装 node.js 和 npm :

1
sudo  apt  install  nodejs  npm

一行语句安装:

1
npm install fanyi -g

如何使用:在命令行终端使用 fy 命令即可。

1
2
3
4
# fanyi <中文或者英语> ,也可以使用 fy 代替 fanyi
# 举例如下:
fy  经济
fy  grace

这个翻译软件还能与时俱进,可以配置 OpenAI 的 Key,接入 ChatGpt 助力翻译,🐮。

ag

silver search,也叫 ag,是一个非常高效的命令行搜索工具(目录内定位那些指定文本内容的文件),是比 ack 命令更快的代替品,Linux / Mac/ Windows 都能用,github 地址 ggreer/the_silver_searcher .

如何安装:

1
sudo  apt  install  silversearcher-ag

如何使用:

命令格式如下:

1
Usage: ag [FILE-TYPE] [OPTIONS] PATTERN [PATH]

除了 ag -h 查看命令行选项之外,介绍几个常用用法备忘:

1
2
3
4
5
6
7
8
# 最常用用法,找到包含 MainWidget 关键词的文件 (注意,默认是大小写不敏感)
ag MainWidget

# 在指定目录找到包含 MainWidget 关键词的文件, 且 -s 大小写敏感, 以及 -g 限定文件类型为 md
ag  -s MainWidget  ../Projects  -g  *.md 

# 也支持中文
ag 你好

fzf

Fuzzy,一个根据关键词模糊搜索文件/文本的终端工具,可用于 Linux/Mac/Windows,并可以插件形式组合 vim 等编辑器使用,github 地址: junegunn/fzf

何为模糊搜索:假设最终我们要搜的是 app/src/main/cpp/core/decode.cc ,那么我们搜 appcodeco,也可以找到该文件。

安装方式:

1
sudo apt  install  fzf 

如何使用:

基本使用方式:可以直接 fzf 在当前目录模糊搜文件,也可以组合其他命令使用,如下

1
2
3
4
5
# 基于find 结果进一步搜索过滤
find  ~  -type f  | fzf 

# 对 sed 的命令帮助信息进行搜索过滤
man sed | fzf -e 

常用的快捷键:

Ctrl + J/ Ctrl + K :移动鼠标下一行/上一行;

Page Up/ Page Down : 上一页/下一页;

Ctrl + C : 退出;

常用的命令选项使用方式:

fzf -e : 精确指定关键词;

fzf -i :忽略大小写;

fzf +s: 不对输出结果排序;

fzf -m : 多选模式,multi select,使用 tab 键选中多个;

更多用法直接看 help 信息: man fzf

ffmpeg

ffmpeg 是鼎鼎大名的音视频处理的开源工具/开源库。

对于音视频/图像领域开发者,处理一些简单的媒体文件,使用命令行非常方便。

执行一行命令安装:

1
sudo  apt  install  -y  ffmpeg 

安装完后,我的电脑对 ffmpeg 命令无法自动补全,并且会优先提示 _ffmpeg 命令,所以我直接写 alias 好了:

1
2
3
4
5
# 如果是用的 bash, 那就是 ~/.bashrc
echo "\n# ffmpeg alias definition"    >> ~/.zshrc
echo "alias  ffmpeg=/usr/bin/ffmpeg"  >> ~/.zshrc
echo "alias  ffplay=/usr/bin/ffplay"  >> ~/.zshrc
echo "alias  ffprobe=/usr/bin/ffprobe"  >> ~/.zshrc

axel

是支持多线程下载的终端工具,大多数情况下,比 wget 和 curl 都要更快速高效。

一行语句安装:sudo apt -y install axel

tldr

tldr –> 即 too long don’t read, “太长不看”的意思。

用于简化命令行的 ManPage 解释的,对纷繁复杂的 man <command> 的内容做了简化输出,让每个人都能快速上手命令。

安装和使用:

1
2
sudo apt -y install tldr
tldr -u 

FAQ

扩容根分区

安装的时候没有分配好根分区的大小,只有 50G,旁边有 150G 是未挂载到文件系统。不想用挂载形式,而是想并入根分区。

⚠️:我这里遇到的情况比较简单,是同一块磁盘,相邻分区,而且是向右扩容。

本来使用 gparted 是个不错的选择,不过我这边一直报 gtk 的错,可能是远程桌面原因吧,那就使用 parted 工具吧。

⚠️:后来才知道,远程桌面使用 gparted 是可能会打不开,去真机连显示器就可以了。

先看看磁盘的情况:

1
2
3
4
# 查看文件系统的大致情况,确认根分区是哪块盘
sudo df -h 
# 查看磁盘和各分区的情况, 根据 df 的情况,关注根分区所在盘 /dev/sdc 的情况
sudo fdisk --list

fdisk 内容太多了不贴了,我这边 df -h 的打印内容是:

1
2
3
4
5
6
7
8
9
benjamin@bjm-Ubuntu:~$ sudo df -h 
文件系统        大小  已用  可用 已用% 挂载点
tmpfs           3.2G  2.1M  3.2G    1% /run
/dev/sdc5       50G    43G  7G     96% /
tmpfs            16G   42M   16G    1% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
/dev/sdc3       189M  5.3M  183M    3% /boot/efi
tmpfs           3.2G  100K  3.2G    1% /run/user/127
tmpfs           3.2G  100K  3.2G    1% /run/user/1000

可以看到根分区基本满了(96% 的占用),然后 fdisk 查看到的信息是 /dev/sdc6 这个相邻分区有140G,但是没挂载到文件系统。

执行:

1
2
3
4
benjamin@bjm-Ubuntu:~$ sudo parted /dev/sdc
GNU Parted 3.4
使用 /dev/sdc
欢迎使用 GNU Parted!输入 'help' 来查看命令列表。

进入 parted 模式,可以输入 help 看看帮助信息打印如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
  align-check 类型 N                         检查分区 N 是否为 (最小=min|最佳=opt) 对齐类型
  help [COMMAND]                           打印通用求助信息,或 COMMAND 的帮助
  mklabel,mktable LABEL-TYPE               创建新的磁盘卷标 (分区表)
  mkpart 分区类型 [文件系统类型] 起始点 结束点 创建一个分区
  name 编号 名称                           将指定“编号”的分区命名为“名称”
  print [devices|free|list,all|数字]        显示分区表、可用设备、剩余空间、所有分区或特殊分区
  quit                                     退出程序
  rescue 起始点 终止点                      挽救临近“起始点”、“终止点”的遗失的分区
  resizepart NUMBER END                    改变 NUMBER 的大小
  rm NUMBER                                删除编号为 NUMBER 的分区
  select 设备                              选择要编辑的设备
  disk_set 旗标 状态                       变更已选设备上的旗标
  disk_toggle [旗标]                       切换已选设备上的旗标状态
  set 编号 旗标 状态                       改变指定“编号”分区的旗标
  toggle [编号 [旗标]]                     切换“编号”分区上的“旗标”状态
  unit 单位                                设置缺省的“单位”
  version                                  显示目前 GNU Parted 的版本与版权信息

并且可以输入 print 查看 /dev/sdc 这块盘的细节:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
(parted) print
型号:ATA Samsung SSD 870 (scsi)
磁盘 /dev/sdc: 1000GB
扇区大小 (逻辑/物理):512B/512B
分区表:gpt
磁盘标志:

编号  起始点  结束点  大小    文件系统        名称                          标志
 1    17.4kB  16.8MB  16.8MB                  Microsoft reserved partition  msftres
 2    16.8MB  785GB   785GB   ntfs            Basic data partition          msftdata
 3    785GB   786GB   200MB   fat32                                         启动, esp
 4    786GB   802GB   16.4GB  linux-swap(v1)                                交换
 5    802GB   853GB   50GB    ext4
 6    854GB   999GB   145GB   ext4

需要做的简述如下:

  1. 删掉 /dev/sdc6;
  2. resize /dev/sdc5 扩容;
  3. 更新分区列表信息以及文件系统;

继续在parted 命令模式下依次执行如下:(parted)是命令模式前缀,命令内容是后面的。

1
2
3
(parted) rm  6
(parted) resizepart 6 999GB
(parted) quit

退出了parted 之后,执行下述2句,刷新分区列表和文件系统信息,让文件系统知道分区改变了:

1
2
benjamin@bjm-Ubuntu:~$ sudo partprobe 
benjamin@bjm-Ubuntu:~$ sudo resize2fs -p /dev/sdc5

此时再使用系统的df, fdisk ,或磁盘工具、磁盘占用分析助手等软件查看,分区扩容成功

1
2
3
4
5
6
7
8
9
benjamin@bjm-Ubuntu:~$ sudo df -h
文件系统        大小  已用  可用 已用% 挂载点
tmpfs           3.2G  2.1M  3.2G    1% /run
/dev/sdc5       181G   43G  131G   25% /
tmpfs            16G   67M   16G    1% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
/dev/sdc3       189M  5.3M  183M    3% /boot/efi
tmpfs           3.2G  100K  3.2G    1% /run/user/127
tmpfs           3.2G  100K  3.2G    1% /run/user/1000

扩容 home 目录

安装Ubuntu 系统的时候,根分区和 home 给的大小都不够,这下眼看要满了。

因为我是双系统,ubuntu 是安装在windows 的 F 盘(一块 1T 的三星SSD)。

目前打算这么做:

  1. 在 ubuntu 系统下,从同一块盘的 windows SSD 那儿切 300 GB 出来;

  2. 这 300 GB新建个 ext4 格式的分区;

  3. 编辑 /etc/fstab 设置开机挂载该磁盘到 /home/USER_NAME/data ;

    其中,USER_NAME 是用户名,data 随便取;

  4. 这样挂载出来的目录应该是从属于root 用户的,chown 到自己用户,例如我的用户名是 benjamin

具体的操作如下:

  1. Ubuntu 安装一下 gparted,执行 sudo apt install gparted 即可,然后 sudo gparted 即可启动界面管理器,使用方法很简单,和一般的磁盘管理助手差不多,切个空闲分区出来,假设叫 /dev/sdc6 吧;

    注意,远程桌面操作时会打不开 gparted,去真机连接显示器即可。

  2. 前面我们知道了新建的分区是 /dev/sdc6,那么执行 sudo blkid | grep sdc ,得到如下信息:

    1
    2
    3
    4
    5
    6
    
    /dev/sdc4: UUID="cd7caf9b-4785-4e61-acc3-b75bc8ee945b" TYPE="swap" PARTUUID="5bf679ac-850f-46e2-b9d4-26c6fb50a3a7"
    /dev/sdc5: UUID="90ec6ddb-b262-4375-9b48-620f5eb584a1" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="11372470-1ba0-49eb-afd1-d386cbc7964b"
    /dev/sdc2: LABEL="SSD" BLOCK_SIZE="512" UUID="1822F6E122F6C2B4" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="df0e569e-25e3-47d2-9ac2-01bc3ee0af97"
    /dev/sdc3: UUID="7386-BF96" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="460a5a51-e590-4a39-8435-408cc4f330f4"
    /dev/sdc1: PARTLABEL="Microsoft reserved partition" PARTUUID="ec079113-2f27-4fc9-b175-57e73e7bb85e"
    /dev/sdc6: UUID="5e2aa47a-34b2-46f2-84ef-640a57cacabd" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="/dev/sdc6" PARTUUID="ffb8b3e1-a8f4-4cc7-88d1
    
  3. 创建挂载目录 mkdir /home/benjamin/data , 然后编辑文件系统表, sudo vim /etc/fstab 或 界面编辑sudo gedit /etc/fstab ,末尾添加如下内容:

    1
    
    UUID=5e2aa47a-34b2-46f2-84ef-640a57cacabd /home/benjamin/data  ext4 defaults 0 2
    

    含义分别是:分区UUID、挂载目录、磁盘格式、挂载选项、是否备份dump、磁盘检查顺序等。后面三项 defaults 0 2 是比较符合我们个人日常使用的。

    更详细的参数含义可以参考: 博客园:Linux之/etc/fstab文件讲解

  4. 重启机器。会发现 挂载目录下有个 lost+found 目录了,不过可以看到目录所有者是root,改一下owner.

    1
    2
    
    # 我的用户名是 benjamin
    sudo chown -R  benjamin:benjamin  /home/benjamin/data
    

    大功告成。

Git Credential 凭证

Linux 平台不像win 和 mac 那么方便,对 credential 的管理可能还是需要手动配置一下。

具体问题:在 git 同步远端代码时(https仓库地址,比如 submodule 同步),总会被要求输入 username 和 password

原理:crendential 可以cache方式暂存,也可以文件形式永久存储,对 https 形式访问仓库时需要身份认证。后者干脆不用https形式,该用ssh形式的仓库地址亦可。

方法一:改远程仓库地址为 ssh 形式:

1
2
# gitlab 地址话也是类似的,改为gitlab地址即可
git remote set-url origin git@github.com:username/your-repo.git

方法二:新建 credential 文件保存 git 仓库账号密码 :

我遇到的是子仓库用的 https 地址,不去手动改为 ssh 形式地址了,而是采用 file 形式保存账号密码。

1
2
3
4
5
6
touch ~/.my-credentials
# benjamin 是git username,  myPassword123 是密码,gitlab.myCompany.com 是 git-host,
# 我这里写的是公司的gitlab地址(公司名信息隐去,逃~)
echo 'https://benjamin:myPassword123@gitlab.myCompany.com' > ~/.my-credentials
# 配置全局,git 命令行不会再问你 账号密码了
git config --global credential.helper 'store --file ~/.my-credentials'

编辑桌面菜单栏

假设安装了一款软件 (假设 android-studio 4.1) ,之后升级重装了另外一个版本 4.2,会发现开始菜单图标点击失效了。

需要手动编辑图标链接信息:

1
ls /usr/share/applications  | grep -i android 

找到文件为:android-studio.desktop , 编辑该配置文件,其中执行路径变量 Exec 尤其需要注意,软件升级后主要是可能这个执行路径变了。

Android Studio Sync Failed

考虑是不是被全局的代理配置影响了,有些工程不需要代理就能跑,挂了代理反而不行。

全局代理文件 ~/.gradle/gradle.properties ,检查是否对 system.proxy 是否有设置,如果需要关掉,使用 # 号注释掉。

参考链接

  1. 博客园:挂载其他磁盘到 home 目录扩容
  2. GitBook: 凭证存储
  3. Install latest Android Studio on Linux Mint 20 and Ubuntu 20.04
  4. Microsoft: Visual Studio Code Docs