写在使用 Linux 工作一年后
start
去年公司空了几台台式机,当时看了下似乎配置比我用的乞丐版 air 略高一些,而且除了 ssd 以外还有一个 1T 的大硬盘,加上后面可能会有一段时间不做 iOS 了,那就不需要 macOS 了,于是顺了一台过来桌上用来打算做开发机,当时可选的方案有 Windows 10 和 Linux,思考了下机器上 60G 的 ssd 估计是不能装那么多东西的,而 Windows 要把好多东西装到 D 盘,其实用起来好麻烦,感觉自己不太会用,于是选择了 Linux
本文写在我使用 Linux 作为开发环境后的三个月,也就是主力开发环境为纯 Linux 环境,偶尔使用虚拟机做配合,Linux 是天生为喜欢折腾的人准备的,当然也是为了知道自己想要做什么和想要什么的人准备的,所以本文的目的是为了以 Linux 作为生产开发环境为目标的人准备的,如果只有想要装个 Linux 的想法,或者只有想要试试玩玩的想法,个人建议使用自己熟悉的环境(Windows 或者 macOS)搭配虚拟机从完整配置一个 ArchLinux 开始学习
本文主要是为了将要以 Linux 作为自己主力开发环境的同学准备的一些意见建议,以及自己的踩坑经历,如果你想要以 Linux 作为主力开发环境可以把本文作为开始,但是本文绝对不是结束,linux 的折腾是无止境的
好处和坏处
- 好处
- 开箱即用的开发环境,和 macOS 一样,Linxu 几乎为所有主流开发平台、语言提供了开箱即用的环境
- 大量开箱即用的开源工具,后来我喜欢上了 Kate(KDE 上提供的一个文本编辑器,虽然插件少,但是本身功能完善)
- 很少让人分心的东西(没有 QQ,基本没有游戏)
- 超好用的终端模拟器
- 很多好用的开源工具,有些甚至带到了 mac 上继续使用
- 高度可配置,只要你有心思,外表想做成什么样都可以
- 折腾
- 折腾
- 折腾
- 坏处
- 折腾
- 折腾
- 折腾
- 没有 QQ,只能虚拟机或者 wine,smart qq 消息或者群多,就二了
- 微信,只有 web 微信,或者经过 electronic 包装的 Electronic-Wechat 或者非官方的 wewechat,但是一直用 web 版本微信,容易被封号,前几天我被封号了,用户反馈了,理所当然的未果,用了两周虚拟机,莫名的解封了
- 高度可配置,双刃剑,配置的后果,杀敌1000,起码自损300,用了一些暗色系主题。。。结果有些文本,button 看不清了,wps 的表格居然变黑了(暂时懒得解,用 libreoffice 其实挺顺畅的,之前在 mac 上这东西可卡了)
Linux 中折腾,既是好处也是坏处,好的地方是让你知道盒子里到底是哪个齿轮坏了,坏的地方是找来找去,发现盒子里齿轮没坏,只是每个齿轮都有那么一丢丢不正常,所以我一直觉得开源那帮人其实是非常不靠谱的,如果没有需求,真心不需要折腾 Linux,你看得没错,我在劝退
开始折腾
上面介绍完了,有兴趣的同学继续往下看吧,接下来我们开始正题吧,Linux 之路折腾无限,但是作为开发环境,我们需要在折腾和稳定之间找到平衡点
折腾的背景
下面是我在 Linux 世界探索(碰壁)以及对我使用 Linxu 有帮助的一些经验,希望对大家有用
- 很多的 Windows 安装经验和 Linux 安装经验,多体验不同的发行版,找到合适自己使用的,以前电脑性能很差跑虚拟机很费劲,对于现在电脑来说,有虚拟机会很方便你的学习
- 通过配置一个完整的 ArchLinux 环境,学习整个 Linux 系统的配置,启动,桌面环境相关的所有基础知识
- 4年的 macOS 使用经验,大家别说,从 macOS 迁移到 Linux 除了开发者们给我们准备的各色精致的 mac 应用以外,整个迁移过程非常顺滑
- 知道自己想要什么
- 遇到问题能自己解决
上面几点,是我这次能成功把工作环境迁移到 Linux 的一个基本保障,接下来我在下面列下我折腾了哪些东西,让我的工作丝般顺滑
发行版选择
作为生产开发环境不同于实验研究环境,最主要是需要稳定能够持续支持工作,至少不经常崩溃或者每过几个月就需要重装系统。我曾经在大学时候和工作以后,体验过很多主流的发行版(这里说主流就是真的主流主要包括,Debina,Fedora,Ubuntu,openSuse,ArchLinux),最终选择了 Fedora 27(当时是测试版,但是我相信自己有坑能踩过并且正式版还有一个月就发布了,不太信自己的同学可以在选择的时候选择正式版,毕竟是用于支持生产开发的环境,最主要是稳如老狗)
-
排除的理由
- Debian:排除,装的次数太少了,熟悉程度不高
- Ubuntu:安装了两次,每次都有奇奇怪怪的问题(可能跟我安装的是非 LTS 版本有关)
- openSusu:上大学的时候用的最多的就是他,但是那时候总有些奇奇怪怪的问题没办法解决
- ArchLinux:太过于折腾,工作以后装了几次,从安装到桌面环境,一般需要一到两天的时间,个人感觉坚守 Arch 的简单哲学 pacman 其实没有 dnf 那么完善,但是如果初学 linux,那么这个是首选
-
选择的理由
- 我第一次折腾 Linux 的时候,尝试了 RedHat 9,之后尝试了 Fedora Core(那时候 Fedora 的原名),选择 Fedora 有种熟悉的配方的感觉
- 服务器大多数用 CentOS,依然是熟悉的配方的感觉,将来部署应用也会有熟悉的味道
- 知呼看介绍,Fedora 是 Linux 的 Cutting-Edge,想要体验最新最棒的 Linux 就靠他了
- 两次 Ubuntu 的安装失败。。。让我怀疑这最广的发行版,不是为我准备的(我真不是黑 Ubuntu,在想要切换的一开始就想到他了,也动手装上了)
桌面环境的选择
Linux 上的开放性,所以,我们在不喜欢当前用着的桌面环境的时候,可以换一个。。。这似乎是个很美好的事情。。。但是很遗憾,开源社区再次 show 出了他们的不靠谱
最终我选择了 GNOME on Xorg,原因如下:
- KDE 依然是炫技的平台,高端大气上档次,但是各种 bug 不断
- GNOME on Wayland,不能用 shutter 截图,偶尔整个 GNOME 挂,Wayland 离稳定使用还有一些距离
- 虽然 GNOME 的臃肿是大家一直诟病的问题,但是我只是需要一个常用的工作环境,并不想花一两天去折腾,而 GNOME 确实符合这个需求
- 感觉 GNOME 的文件管理器跟 Finder 很类似,稍微好用一些了
为什么不直接全盘命令行?
- 我虽然熟悉以及喜爱命令行,但是我倡导合适的地方使用合适的工具,我们主要的目的是工作,而不是炫技,并不是所有人都能只用命令行完成所有工作
- 相比每次找到项目路径,敲入 push,pull 我还是喜欢用点下鼠标就能 push pull 代码还能分组库的 GitEye
- VSCode – 我的主力开发工具,并没有命令行版
- 图形界面下,有 Tilix 这样方便的神器,可以类似 iTerm 一样分割窗口各种,也有 Hyper 这样能随意扩展的现代命令行工具
- 多窗口管理,对,我还要聊天呢
这里可以说下,个人建议使用 KDE 或者 GNOME,因为我的目的是稳定,当然大家也可以尝试其他的桌面环境,毕竟 linux 最大的优势就是开放
安装
安装指引
- 需要材料
上面就是安装 fedora 需要的所有材料了
- 安装步骤
- 使用 Etcher 将 fedora 的镜像写入到优盘中
- 重启电脑,在 BIOS 中设置通过优盘启动
- 启动后会进入到 fedora 的 live 界面中,在 live 界面中找到安装程序并打开
- 根据提示选择安装位置,语言,市区等各种东西,之后点击开始安装,这样就开始了安装之旅
因为安装的时候我没有截图,这里用虚拟机打开了镜像给大家看下安装界面,等待半小时左右,就可以安装完成了,安装完成后重启就会进入到新的系统了,我们就进入纯 linxu 的世界了
系统调配
安装完成后,这只是一个刚好可以用,并附带了 GNOME 所附带的大部分应用程序的系统,那么离我们可以使用,其实还是有距离的,接下来我会介绍我对系统的初步调配
将消耗空间的东西链接到磁盘上去
我的初衷就是为了想要一个启动快速的系统,并且能安装大量应用,所以第一步,我将会把很多消耗磁盘空间的路径链接到 1T 的机械硬盘上(哎呀,好长,下面统一叫 HDD 了),如果这一步失败了,那么也不会有剩下的步骤了,链接后给我的感觉是,整体系统速度并没有变慢很多,不过在打开大应用(比如 Jetbrain 家的大型 Java 应用)时会有一些卡顿,但是打开后,整个使用体验是很流畅的,不过也因为本机内存不是很大(8G)所以应用开多了还是会卡,特别开了虚拟机以及某些大型 Java 应用的时候很容易出现卡顿的现象
下面是我电脑上磁盘使用的截图,data 1 - 3 就是 HDD(切勿嘲笑别人取名无力),这里没有显示 home 的分区,我的 home 分区大约是 20G,root 分区大约是 40G(当然还有 boot 啊之类的分区,这个在选择自动分区的时候,安装程序会帮你搞定)
磁盘截图- data1 作为 home 的延伸,主要用来存放文档,开发中的项目等
- data2 用作虚拟机存储空间,单独分区,方便管理
- data3 就是这一环节的主角了,大部分的系统应用都链接到了这里
不过我并不是一次性把所有的路径链接好的,而是在用的过程中发现 SSD 空间不足的时候,找到一些消耗空间大的路径,把他链接到 HDD 上,这里是我链接的一部分路径,供大家参考下:
-
~/.icons
和~/.themes
:主题和图标路径,链接这个主要是装主题方便 -
~/.local
:当前用户的应用数据,链接这个帮你解决大部分的空间问题 -
~/.var
:当前用户的 var 路径,一部分(主要是 flatpak 打包的)应用会把数据写到这个路径 -
/opt
:部分应用会安装到这个路径 -
/var/lib/flatpak
:flatpak 的应用会安装到这里 -
/var/log
:日志
把这些路径链接后,相信磁盘空间会空闲出很多了,这样小 SSD 的电脑也能愉快玩耍了
另外,除了上面的路径外,还有一些比较特殊的路径也会占用大量空间,这里也列举下
-
~/.stack
:学 haskell 的时候,stack 是 haskell 的包管理器,通过 stack 安装的包会在这里 -
~/.nixnote
:nixnote 是 linux 下的 evernote 实现,他的数据会放这里 -
/usr/share/dotnet
:.net 相关的东西,老占空间了 -
/usr/lib64/ghc-x.x.x
:haskell 的编译器,老占空间了
除了这些如果大家在使用过程中发现某个路径,或者某个应用特别占空间,也可以把他们链接到 HDD 上,节约 SSD 上宝贵的空间
安装大概率用得到的包
- 启用 RPMFusion 源
参考 -> RPMFusion 配置 根据系统版本启用 RPMFusion 自由(free)和非自由(nonfree)的软件源配置
- 启用 FDZH 源
参考 -> FDZH 配置 根据系统启用 FDZH 中的源,同时 FDZH 的 wiki 中也包含了一些常用软件的安装配置,大家可以参考下
- 刷新下 dnf 源
第一次安装完成,或是添加了 RPMFusion 和 FDZH 的源后,需要刷新一下 dnf 的源,这样我们就能安装到新添加的软件包了
sudo dnf update --refresh
- 安装 Development Tools 软件组
Development Tools 包含了开发使用到的各种工具,所以我们首先要把他装上
sudo dnf group install "KDE Plasma Workspaces"
- 安装 KDE
这一步是可选的,如果喜欢 KDE 的,那么可以输入下面的命令安装
sudo dnf group install "KDE Plasma Workspaces"
- 看看还需要什么
使用 Linux 作为主力环境最方便的地方就是我们需要什么那么就安装什么,可以使用下面的命令看下还有些什么软件组可以安装使用
dnf group list
配置工具系统
- Font Tweaks Tool:调配字体渲染的,如果看着字体不舒服,就靠他了
- Fedy:fedora 调教工具,附带了一些调教脚本以及一些应用商店没有的应用的安装渠道
存活指引
安装配置结束后,接下来介绍下 linux 的日常存活指引
开发存活指引
本文介绍是以主力使用 Linux 开发为主,所以优先介绍开发使用到的工具,其实大部分工具都是开源或是跨平台的,在其他系统中我们也能用到
- Visual Studio Code:微软搞的开源代码编辑器,个人认为最好的编辑器之一,曾经我觉得我不会放弃 vim 的,后来真香
- CherryTree:代码笔记上品,代码贴大集合,也是跨平台的(Mac 上没有独立包,最近尝试达了一个,但是始终不是那么顺利)
- Tilix:媲美 iTerm 的终端模拟器
- GitEye:基于 eclips 平台开发的 git 工具
- Zeal:linux 上的 Dash,文档库兼容 Dash 的,并且也可以直接下载 Dash 的文档
- Jetbrains:全家桶,不得不说 Jetbrains 为我们提供了最好用的 IDE 系列,要说缺点的话,那就一个字 —— 贵!
- StarUML:画 UML 的好工具,跨平台
- neovim:作为 vim 党,这个必推,虽然现在主力已经是 VSCode 了,但是我也要 VSCode 掺着 vim 插件才能真香
- MySQL Workbench:MySQL 官方提供的数据库工具,只用 MySQL 没有比他好的
- DataGrip:多数据库链接工具,贵!
- GitKraken:相比 GitEye 是一个更好看的 git 客户端,不过只能免费用于开源项目
- Kate:KDE 默认的文本编辑器,好用,快速,稳定,但是插件少很多,无法作为主力开发担当
- 小程序开发工具:https://github.com/cytle/wechat_web_devtools开发小程序必备
有了上面的一堆开发工具相信是可以从容面对日常开发工作了,linux 上除了 DataGrip,Navicat 之类的商业软件以外确实没找到很好用的多数据库链接工具,这点算是一个遗憾了,大家要是有推荐的可以联系我
虚拟机建议
如果虚拟系统是 linux 系并且不使用 GUI,建议直接使用系统自带的 qemu 或是 kvm,另外不要使用 GNOME 带的 Boxes,Boxes 是为了简化虚拟机操作而开发的应用,但是实际上还不是很成熟,建议安装 Virtual Machine Manager 作为虚拟机管理工具,虽然 Virtual Machine Manager 上手会比 Boxes 稍微麻烦一些,但是可配置性要好很多,并且 qemu 和 kvm 对共享文件系统支持要好一些,据说文件读写速度接近原生
并且 qemu 是系统服务,Virtual Machine Manager 只是一个管理界面,在启动好虚拟机后,我们可以直接 ssh 上虚拟机即可操作,无需继续开着管理界面,并且在系统 UI 崩溃的时候,虚拟机服务并不会崩溃,也不会影响我们运行在虚拟机中的程序
如果虚拟系统是 Windows 系或是使用 GUI 的 linux,那么建议使用 Virtual Box 或 VMWare 商业软件,qemu 在图形化操作系统上始终并不是很好用,经常有鼠标位移,速度慢之类的问题
日常存活指引
日常存活主要包括了聊天和 Office 办公系列,以及笔记之类的日常应用
- ElectronWechat:微信聊天必备
- WPS:Linux 上唯一能叫做 Office 的工具
- LibreOffice:Linux 上第二的 Office 工具,这也是对多编码 csv 文件支持最好的工具,就算是 MS 家的 Excel 也没这个对多编码 csv 支持好用,如果需要从数据库导数据做报表之类的,建议一定装一个
- Nextcloud:如果你有一个私人的服务器,那么建议部署一个 ownCloud 或是 Nextcloud 作为文件共享使用,同步文件丝般顺滑,同时还能提供部分应用使用
- QOwnNote:比较好的跨平台笔记软件,搭配 Nextcloud 使用完美实现笔记同步
- Typora:好用跨平台 markdown 写作工具,可以将 markdown 输出为 pdf 和 html 页面,本文就是用 Typora 和 Kate 共同完成写作
- Firefox:忘了 chrome 吧,firefox 才是最好用的,哈哈哈哈哈
- CopyQ:好用的剪贴板管理工具
为没有程序起动器的应用添加程序起动器
程序起动器我们可以理解是 Windows 里面的快捷方式,linux 中很多应用最主要就是执行二进制文件,但是有些应用却没有提供一个起动器(在 Launcher 中),这让我们每次打开的时候还需源通过命令行去运行,当然还有的应用更过分比如用 python 写的,还需要用 python 去找到那个应用的脚本去执行,既然我们都进入图形界面了,那不能倒退啊,这里说下怎么创建起动器
这里我用 Typora 来举例,Typora 并没有提供 rpm 包装,也没有在 dnf 的软件源中,所以 Typora 在下载后就是一个朴实无奇的压缩包,解压后,就是一堆文件,看下图我圈起来那个文件,那就是 Typora 的可执行文件,双击他也能运行,那么我们起动器的目标就是打开这个可执行文件
Typora在 linux 中,每一个起动器都对应一个 desktop 文件,所有的 desktop 文件都在 /usr/local/share/applications
路径下,用户自己的起动器,也可以放到 ~/.local/share/applications
路径下,接下来我们来看看起动器的内容,起动器其实就是一个文本文件,告诉系统如何启动这个应用
Name=Typora
Comment=Markdown Writer
Exec=/home/noark9/data1/Applications/Typora/current/Typora
Icon=/home/noark9/data1/Applications/Typora/current/resources/app/asserts/icon/icon_512x512@2x.png
StartupWMClass=Typora
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Productive;
Name[en_US]=Typora.desktop
这里就描述了 Typora 这个应用如何启动,之后把这个文件放到 /usr/local/share/applications
或是 ~/.local/share/applications
路径下,这样在应用程序中就能看到他了,在 /usr/local/share/applications
路径下还有很多起动器,大家在自己写的时候可以多多参考
让心情愉悦的指引
心情愉悦啊,那就包括一些娱乐活动了
- VLC:看电影的不二之选
- Steam:其实支持 Linux 的游戏还挺多的
- OpenRA:红警的开源实现,支持在线对战,玩起来其实挺开心的
- ioquake3:Quake3 的开源实现,玩起来炒爱心的
- DosBox:DOS 模拟器,玩 DOS 游戏专用,还可以装个 Win 3.1 在里面,方便管理文件
- dolphin:wii 模拟器,wii 游戏走起
end
使用了 linux 一年以后,我发现我已经可以很好的在 linux 桌面下存活了,也能很好的完成我的工作,我并不推崇大家盲目的上 linux,毕竟这并不是一个想上就能上的系统,在使用过程中还是遇到了很多奇奇怪怪的问题,也有作死把桌面环境网络全搞挂最后自己恢复的时候,但是 linux 确实是一个能锻炼人的好系统,使用 linxu 能大大增强自己查找资料的能力,解决问题的能力,以及独立思考的能力
本来本文应该是今年年初的时候就会写完了,所以这里最早的标题是在使用 Linux 工作三个月后,直到年末了,我也开始用回 Mac 后才完成本文的撰写,但是本文依然是完全在 linxu 下撰写完成,并未使用到 Mac 做任何的辅助,中途由于我的失误把 GNOME,KDE 等桌面环境卸载了,并且删掉了网卡驱动后重新配置了网卡驱动和重新安装桌面环境,导致部分我使用的部分应用已经没有安装在系统里面了,这样也让我遗失了一些资料
大家也可以经常看看 Fedora Magazine ,我挺喜欢 Fedora Magazine 的,里面经常有有趣的开源工具和 linux 使用经验分享
最后欢迎大家订阅我的微信公众号 Little Code
Little Code- 公众号主要发一些开发相关的技术文章
- 谈谈自己对技术的理解,经验
- 也许会谈谈人生的感悟
- 本人不是很高产,但是力求保证质量和原创