本想改造一下公司电脑的 Windows,后来干脆直接给电脑刷了个 Windows, 于是, 风扇不再是噪声源, 电脑不再是暖手宝, 一切都变得清爽了起来.
唯一美中不足的是 ubuntu 上的软件和 Windows 还是有些差异的, 所以就有了本篇, 将各个常用的软件(从程序员的角度)的安装和坑点列出来.
另附一个开发中的 Ubuntu 初始化脚本.
系统环境
Laptop: ThinkPad T480
BIOS Information
Vendor: LENOVO
Version: N24ET37W (1.12 )
Release Date: 03/14/2018
Address: 0xE0000
Runtime Size: 128 kB
ROM Size: 16 MB
CPU Information
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
安装 Ubuntu
ubuntu 的安装教程网上多种多样, 这里笔者是按照官网的流程进行安装.
关于换源
GUI 版的 ubuntu 默认会在中文环境下选择中国区的服务源, 所以不需要再手动换源.
安装 ssh 服务
由于 ubuntu 自带安装 ssh client, 所以如果只是连接其他服务器, 则不需要安装额外的东西. 如果是想要将本机作为 ssh 服务器, 则需要安装 ssh server.
sudo apt install openssh-server
ssh GUI
ubuntu 自带一个 ssh GUI, 也就是 Remmina . 不只是 ssh, rdp(远程桌面协议) 和 vnc 也很好地得到了支持. 搭配 ssh-config, 即使没有 Windows 上傻瓜式的 xshell, 也可以得到极佳的 ssh 终端体验.
clash
sudp mkdir -p /opt/clash
sudo chmod -R 777 /opt/clash
gunzip -k **.gz >/opt/clash/clash
随后手动启动 clash 即可.
当然, 每次开机都需要手动运行一次还是挺麻烦的, 所以推荐使用 systemd 托管. 参考 clash-as-a-daemon
git
git config --global user.name "$git_config_user_name"
git config --global user.email "$git_config_user_email"
github 加速
修改 .gitconfig 文件. 以上文安装的 clash 为例.
[core]
gitproxy = socks5://127.0.0.1:7890
[http]
proxy = socks5://127.0.0.1:7890
[https]
proxy = socks5://127.0.0.1:7890
git GUI
由于常用的 git GUI sourceTree 并不支持 ubuntu, 所以这里推荐使用 GitKraken.
这个 GUI 工具是付费的, 破解方法见于 GitKraken 工具的破解、BeyondCompare 配置.
Docker
# 基础依赖
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# 配置证书
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 使用稳定版docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 可选
## 为当前用户赋予docker权限
# sudo usermod -aG docker $USER && newgrp docker
sudo groupadd docker
sudo usermod -aG docker $USER
sudo chmod 777 /var/run/docker.sock
zsh
apt install zsh
on-my-zsh
需要先配置代理
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
plugins
- zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
## update to .zshrc
# plugins=(
# # other plugins...
# zsh-autosuggestions
# )
数据库可视化工具
wget https://github.com/dbeaver/dbeaver/releases/download/21.3.0/dbeaver-ce_21.3.0_amd64.deb
sudo dkpg -i dbeaver-ce_21.3.0_amd64.deb
rm -f dbeaver-ce_21.3.0_amd64.deb
文件同步
onedrive
由于微软官方并没有给出一个 onedrive linux 版本, 所以只能够使用第三方的服务来进行 onedrive 同步.
笔者使用的是 GitHub 上面的ondrive项目.
switchhosts
switchhosts 是一个管理 hosts 文件的应用,基于 Electron 、React、UmiJS 、Chakra UI、CodeMirror 等技术开发。
SwitchHosts 的数据文件存储于 ~/.SwitchHosts
(Windows 下存储于用户个人文件夹下的 .SwitchHosts 文件夹), 其中 ~/.SwitchHosts/data
文件夹包含数据,~/.SwitchHosts/config
文件夹包含各项配置信息。
wget https://github.com/oldj/SwitchHosts/releases/download/v4.1.1/SwitchHosts_linux_x86_64_4.1.1.6077.AppImage
欧陆词典
wget https://www.eudic.net/download/eudic.deb?v=2021-09-29
远程桌面
向日葵
rdp
sudo apt-get install xrdp
sudo systemctl enable xrdp
sudo ufw allow 3389/tcp
连接后黑屏
sudo nano /etc/xrdp/startwm.sh
## 在 line 30 (也就是 */etc/profile* 那一行) 前, 添加如下内容
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
##
sudo systemctl restart xrdp
多版本 Python
Ubuntu 20.04 默认的 Python 版本是 3.8, 如果需要其他版本, 如 3.6, 可以通过如下方式安装.
wine
微信(wechat)
问题
- 无法显示、发送图片
sudo apt-get install libjpeg62:i386
关于 kubernetes
minikube
国内的启动命令推荐为:
minikube start --registry-mirror=https://registry.docker-cn.com --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
快捷键冲突
一. 和 idea 的冲突 (ctrl + alt + <-_ 和 _ctrl + alt + ->)
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left "[]"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right "[]"
二. 简繁体转换和全局搜索的冲突 (Ctrl + Shift + F)
右上角输入法图标 -> 配置当前输入法 -> 附加组件 -> 简繁转换 -> 配置
一般也用不到繁体, 使用 esc
键禁掉即可.
屏幕截图
可以按照 相关的文档 替换掉 ubuntu 默认的截图快捷键, 或者自定义一个快捷键.
剪切板历史
copyq 支持图片 \ 富文本 等多种形式的剪切记录.
扩展功能
搭建 smb 服务
smb 可以用来共享局域网文件共享服务, 打破 Linux \ Mac \ Windows 的文件壁垒. 同时 iPad 上的一些软件, 如 VLC, 也可以通过 smb 来获取服务器上的共享文件进行播放, 十分方便.
参考
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"