虽然用 Déjà Dup 计划了定期备份,但只备份了 home 目录。这篇文章本质上是篇流水帐,记录无聊的安装过程和使用 Ubuntu 开发时遇到的鬼畜的问题,以此避免自己未来重装时太痛苦。毕竟 shell 又不会写,只有记流水帐才能维持得了生活的样子。
基本配置
首先装好 Chrome。
删掉 Firefox:sudo apt autoremove --purge firefox firefox-locale-zh-hans
。
所有应用-软件和更新,更改为国内软件源。
关闭“软件和更新”窗口后会询问执行 sudo apt update
,完成后执行命令行 sudo apt upgrade
更新所有包。
然后安装一些常用的东西:
sudo apt install screenfetch htop git tig vim curl zsh materia-gtk-theme arc-theme vlc shutter synaptic deja-dup bleachbit telegram-desktop calibre copyq mycli ipython3
安装 Typora:
wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -
sudo add-apt-repository 'deb https://typora.io/linux ./'
sudo apt-get update
sudo apt-get install typora
Ubunt 自带一套 libreoffice,我不喜欢这么大的玩意所以装了 wps,我已经将缺失的字体上传到 Google Drive。下载解压后安装字体:
sudo mv ./* /usr/share/fonts
sudo mkfontscale
sudo mkfontdir
sudo fc-cache
“软件和更新”中安装附加驱动,使用 NVIDIA 专有驱动。
上 Jetbrains 官网下载 Toolbox App,双击即可安装,随后选择自己需要的 IDE 进行安装。
安装 ibus rime 输入法:sudo apt install ibus-rime
。
Visual Studio Code 可以直接在官网下载 deb 包。
安装 zsh 和 oh my zsh:
sudo apt install zsh curl
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
zsh 主题:vim ~/.zshrc
,ZSH_THEME
修改为 ys。
Gnome Terminal 主题:
wget -O gogh https://git.io/vQgMr && chmod +x gogh && ./gogh && rm gogh
修改为 Dracual。
科学上网
路由器直接代理是最方便的,遗憾我路由器性能造成了网速瓶颈,墙外访问最高只能跑 1.5 MB/s,所以选择使用桌面工具。目前比较方便的工具一个是提供 GUI 的 electron-ssr,另一个是 Python 版的 SSR。
electron-ssr
如果是最小安装,先安装 pythn2:sudo apt install python
。
直接在项目的 Release 页面下载 deb 文件并安装 electron-ssr,操作方法和 C# 版 Windows 客户端差不多,导入订阅链接、选择节点就好。
ShadowsocksR Python
git clone https://github.com/SSRbackup/shadowsocksr.git
cd shadowsocksr
vim user-config.json
config 模板大概是这样:
{
"server": "",
"server_ipv6": "::",
"server_port": ,
"local_address": "127.0.0.1",
"local_port": 1086,
"password": "",
"method": "",
"protocol": "",
"protocol_param": "",
"obfs": "",
"obfs_param": "",
"speed_limit_per_con": 0,
"speed_limit_per_user": 0,
"additional_ports" : {},
"additional_ports_only" : false,
"timeout": 120,
"udp_timeout": 60,
"dns_ipv6": false,
"connect_verbose_info": 0,
"redirect": "",
"fast_open": false
}
把节点配置信息填入就好,然后启动 ShadowsocksR 服务:
cd ./shadowsocks # 注意是 shadowsocksr 目录里的 shadowsocks 目录
sudo python ./local.py -d start
如果要停止,同级目录输入 sudo python ./local.py -d stop
即可。
SwitchyOmega
如果在系统设置里设置 socks/http 代理,Chrome 和终端的所有连接都会走代理,可能会造成一些不便。Chrome 的话可以使用 SwitchyOmega。可以上 GitHub 的 Release 页下载也可以在官网下载。可以参考其 Wiki 进行快速配置。
终端代理
编辑 .zshrc
文件:vim ~/.zshrc
,在文件末添加:
# proxy
alias proxy='export all_proxy=socks5://127.0.0.1:1086'
alias unproxy='unset all_proxy'
然后终端中输入 source ~/.zshrc
。
验证:首先在终端输入 proxy
,然后输入 curl cip.cc
,如果返回是代理服务器的 IP 和位置信息,说明终端已走代理端口。比如:
同样,可以使用 proxychains 来指定终端程序走代理,相关配置可以查看官方文档。
开发环境
Android Studio
代理
和 Jetbrains 家的产品类似,直接在设置搜 proxy 就能找到代理选项,根据配置填入代理地址和端口。Android Studio 会提示是否让 Gradle 使用代理,如果配置的是 socks 代理的话选否,否则 Gradle 无法完成同步,如果是 http 代理可以安心地选是。其实 Gradle 不用代理也挺快。
AVD
下载好虚拟机后可能无法启动,提示如下:
KVM is required to run this AVD.
/dev/kvm device: permission denied.
Grant current user access to /dev/kvm
一般是权限或者 qemu 的问题。解决如下:
egrep -c '(vmx|svm)' /proc/cpuinfo
返回值如果是 0 表示 CPU 不支持虚拟化,老实拿实机开发吧,其他值表示支持虚拟化。然后查看是否支持 KVM 加速:
sudo apt-get install cpu-checker
sudo kvm-ok
如果出现 BIOS VT 之类字样请进入 BIOS 打开 CPU 的虚拟化选项,我的显示如下:
# bolitao @ bolitao-desktop in ~ [20:50:26]
$ sudo kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
表示可以使用 KVM 加速。
安装 qemu-kvm:
sudo apt install qemu-kvm
把当前用户添加入 KVM 组:
sudo adduser username kvm
比如我的就是 sudo adduser bolitao kvm
:
# bolitao @ bolitao-desktop in ~ [20:47:57]
$ sudo adduser bolitao kvm
[sudo] bolitao 的密码:
正在添加用户"bolitao"到"kvm"组...
正在将用户“bolitao”加入到“kvm”组中
完成。
最后注销/重启使设置生效。对了,记得设置堆内存大小和启动器快捷方式。
Node.js
见 Node.js Binary Distributions。
Java
JDK: 直接从官网下载就好,也可以去下载各种各样的 openjdk。
Tomcat
软件源中有 Tomcat,我更喜欢直接到官网下,下载下来后记得 chmod 给予可执行权限。
Flutter
正常情况 home 下装 Flutter 和 Android SDK 再配置环境变量是没问题的。我把 SDK 和 Flutter 放在了一个挂载的 SSD 里,然后 VS Code 和 AS 的 Flutter 插件就死不认连接的设备,表现为:
-
终端
flutter doctor
能够识别设备:
bolitao @ pc in /mnt/XXXXXXXXXXX/ on git:master x [19:06:30]
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.2.1, on Linux, locale zh_CN.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Android Studio (version 3.3)
[✓] IntelliJ IDEA Ultimate Edition (version 2019.1)
[✓] Connected device (1 available)
• No issues found!
```
2. 在 Flutter 项目下 flutter run
能够在设备运行
3. VS Code 和 AS 插件始终提示 No device
解决办法是使用 flutter config --android-sdk
命令设置 SDK 位置。比如我的:
# bolitao @ pc in ~ [19:16:47] C:130
$ echo $ANDROID_HOME
/mnt/XXXXXXXXXXX/appsu/SDK
# bolitao @ pc in ~ [19:17:19]
$ flutter config --android-sdk /mnt/XXXXXXXXXXX/appsu/SDK
Setting "android-sdk" value to "/mnt/XXXXXXXXXXX/appsu/SDK".
这样设置后 Flutter 插件就能够识别连接的设备了。
再附上 ~/.zshrc
的部分环境变量配置:
# Flutter
export PATH="$PATH:/mnt/XXXXXXXXXXX/appsu/flutter/bin"
# ANDROID_HOME
export ANDROID_HOME="/mnt/XXXXXXXXXXX/appsu/SDK"
# export PATH="${PATH}:${ANDROID_HOME}tools/:${ANDROID_HOME}platform-tools/"
export PATH="$PATH:/mnt/XXXXXXXXXXX/appsu/SDK/platform-tools"
export PATH="$PATH:/mnt/XXXXXXXXXXX/appsu/SDK/tools"
export PATH="$PATH:/mnt/XXXXXXXXXXX/appsu/SDK/tools/bin"
MySQL
sudo apt update
sudo apt install mysql-workbench mysql-server
sudo mysql_secure_installation
这样子装好后是不能用 mysql -uroot -p
连接数据库的,当然 mycli 也连接不能。
对了,初次运行 mycli 时不要使用 sudo 命令,不然其配置文件所属组会成为 root,日后以普通用户身份使用 mycli 会报错,解决办法是删除其配置文件并重装。
回到正题,mysql -uroot
方式不能访问数据库的原因是 5.7 版本后 root 账户的验证方式变成了 auth_socket
,可以先使用 sudo mysql
看看 MySQL 各账户的验证方式:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *825307A82A365CD2FDE2CAF87DACB128C48A7845 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
可以看到 root 账户使用的验证方式是 auth_socket
,将其换成 mysql_native_password
:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user WHERE user = "root";
+------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------+-------------------------------------------+-----------------------+-----------+
| root | *4E497411576546ADAECC7719C5DD2ECEF7B3E97A | mysql_native_password | localhost |
+------+-------------------------------------------+-----------------------+-----------+
1 row in set (0.00 sec)
记得将 password 改成自己的密码,这样就可以使用 mycli 和 -uroot -p
方法访问数据库了。
然后再创一个非 root 账户:
mysql> CREATE USER 'bolitao'@'localhost' IDENTIFIED BY 'bolitao';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'bolitao'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
测试一下 mycli:
# bolitao @ bolitao-desktop in ~ [22:05:42]
$ mycli -u bolitao
Password:
Version: 1.8.1
Chat: https://gitter.im/dbcli/mycli
Mail: https://groups.google.com/forum/#!forum/mycli-users
Home: http://mycli.net
Thanks to the contributor - Steve Robbins
mysql bolitao@localhost:(none)>
还可以禁止 MySQL 的自启动:
sudo systemctl disable mysql
需要用到时可以使用 service mysql start
手动启动 MySQL。
OneDrive
项目链接:OneDrive Free Client。
我的安装完全步骤按照 README:
安装依赖:
sudo apt install git
sudo apt install libcurl4-openssl-dev
sudo apt install libsqlite3-dev
sudo snap install --classic dmd && sudo snap install --classic dub
编译:
git clone https://github.com/skilion/onedrive.git
cd onedrive
make
sudo make install
运行之前最好先配置一下需要同步的文件夹/文件:
vim ~/.config/onedrive/sync_list
直接输入要同步的文件夹名。
然后终端输入 onedrive
即可运行。首次运行会提供一个认证链接,打开这个链接并登入自己的账户会出现一个空白页,把这个空白页链接复制到终端中就开始同步了。
这个应用还提供了开机启动、多账户等功能,这里不多说了,在项目页面可以查看更多。
Numix Circle Icons
sudo add-apt-repository ppa:numix/ppa
sudo apt update
sudo apt install numix-icon-theme-circle
Gnome Shell Extensions
在 Chrome 中安装 gnome 拓展可能需要先安装这玩意:
sudo apt-get install chrome-gnome-shell
- User Themes
- Dash to Dock
- Dynamic Top Bar
- Hide Top Bar
参考:
- Mac OSX终端走shadowsocks代理
- GFWList · FelisCatus/SwitchyOmega Wiki
- How To Install MySQL on Ubuntu 18.04 | DigitalOcean
- 64bit - Android Studio: /dev/kvm device permission denied - Stack Overflow
- Unable to run a Flutter app because <no devices> even Device File Explorer can detect it · Issue #2084 · flutter/flutter-intellij