2019 版“完全用 Linux 工作”

2019-12-11 11:12:46 +08:00
 conanca

标题党来了,给王垠大神的名作狗尾续貂一把。注意,本文标题虽大但内容有局限性,如果你不喜欢红帽系,不喜欢 gnome,日常开发也用不到文中提到的工具、技术栈,那么其对你来说没有太大参考价值。

V 站最近讨论日常工作使用 Linux 的帖子又多起来了。有人依旧安利了一批发行版;有人认为 duck 不必花在自己不熟悉的东西上花时间;很多跃跃欲试的 V 友对此也颇有疑虑。 我呢,从 2012 年至今,一直在 fedora 上进行日常的开发工作,工作和研究方向是爬虫、微服务、容器技术、开发方法论、devops。可以说是越用越爽。借此机会来分享作为一个程序猿“完全用 Linux 工作”的体验,希望能帮上大家的忙。

首先说说在 linux 下搞开发的优势:

  1. 使用原生命令的效率更高,比如文件操作相关命令、vi、ssh、scp、curl、以及各种网络相关命令。比起 windows 下安装并打开各种软件、拿鼠标各种点击,用 linux 终端,配合一个机械键盘,相信你工作效率会直线上升,还能帮助你真正理解你所正在做的操作。更重要的是比起第三方闭源软件,这些命令更安全。
  2. 对于常用的一些开发工具原生支持和支持友好,比如 git、docker、mvn、python。其中 git 不必说了,Linus 的第二伟大发明;而 docker 本身就是依赖 linux 内核特性实现的。还是那句话,用命令比用图形界面更能帮助你真正理解你所正在做的操作。避免误操作、错误提示更详细明确。
  3. 至于环境变量、换行符、编码、目录路径、文件名大小写等等这类环境差异问题。我建议本地开发环境的配置尽量往测试或生产环境上靠拢,以避免“在我的电脑上明明是好使的!”的问题出现。
  4. 可以远离:昂贵的正版 windows 售价、病毒、恼人的系统更新、蓝屏崩溃。

Fedora 调教、使用心得

本人并不喜欢折腾(大误),所以一直用的 fedora 默认桌面版——gnome 那个。中间升级过两、三次版本,目前在用 fedora30。 硬件方面用过几台 DELL 商务机、xps 和 thinkpad。双屏。

驱动、硬件兼容问题

  1. n 卡显卡驱动 系统默认装的是开源驱动,显示效果不佳,所以必须安装官方驱动。 我的显卡一直是 n 卡,参考这篇就没错了: https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/

  2. 原生支持双屏 设置非常简单,在 Displays 里。

dnf 相关

  1. 有时显卡驱动更新不及时会导致兼容问题,所以需要排除内核更新:
    /etc/dnf/dnf.conf 文件加一行

    exclude=kernel*
    
  2. 提高安装速度
    /etc/dnf/dnf.conf 文件加一行

    fastestmirror=True
    
  3. 增加源

    sudo dnf install --nogpgcheck  https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
    
  4. 查找所缺少依赖库所在软件包,例如:

    dnf provides */libQt5X11Extras.so.5
    

    然后就可以根据显示的来进行安装了。

字体

如果操作系统安装时语言选择的中文,字体默认应该是思源字体。效果还可以,不需要调整。

gnome 技巧

  1. 快捷键 非常多,不一一列举了。一定要尝试多用、习惯用。 介绍几个对于新手很有用的:
    • nautilus 地址栏显示文字:Ctrl+L
    • 显示隐藏文件:Ctrl+H
    • 搜索 /选择 /切换应用:win 徽标键
  2. Desktop 文件 有些工具软件并不会生成图标,需要自己创建 Desktop 文件。推荐使用 alacarte 这个工具来生成。如果常用的话,可以拖到左侧 favorites。

推荐软件

  1. Atom、eclipse、IDEA、Mysql Workbench、Postman、robo3t、VirtualBox、Team Viewer
    这些均有 linux 版,而且表现优异
  2. 终端
    我并没有用自带的终端。而是用的 Guake。按 F12 挥之则来呼之则去非常好用。快捷键跟原生的终端一样用。
  3. 办公软件
    对于我来说用自带的 LibreOffice 足够了。我日常用纯文本写文档。没错你猜对了,本文就是 markdown 语法。
  4. 即时通讯
    微信网页版(搞一个 icon 放在 favorites )。QQ 我基本不用,不过前些天官方更新 linux 版本了,还算能用。
  5. 截图
    用自带的工具,同样也支持快捷键。
  6. 游戏
    steam 里有很多支持 linux 的游戏。
  7. docker
    有时候因为各种原因比如技术选型评估、做 benchmark,需要我们本地搭开发环境组件。像 redis、mysql、es、mongodb、nginx、consul,都可以用 docker 轻松创建运行。

搭飞机方案

用的 cisco anyconnect。fedora 也原生支持。 配置添加好 VPN 后,在 Keyboard 中配置俩快捷键,比如 Shift+Ctrl++的命令是:

nmcli con up xxxx 你配置的 VPN 名字 xxxx

Shift+Ctrl+-的命令是:

nmcli con down xxxx 你配置的 VPN 名字 xxxx

就能实现一键出国 /回国啦

24656 次点击
所在节点    Linux
138 条回复
conanca
2019-12-11 17:35:33 +08:00
@LFUNWF
谢谢
早年很多发行版不够成熟完善,坑很多,也劝退了不少人。但是近两年,拿 fedora 来说,硬件 /软件兼容性越来越好,我是渐入佳境基本没有碰上什么难题,官方文档 /社区+google 基本都能搞定。即使搞不定,也不钻牛角尖,尽量找替代方案。
缺点有一堆,都是老生常谈了:比如国内软件生态不佳啊。就看你能接受的程度了,毕竟适合自己的才是最好的。
november
2019-12-11 17:47:04 +08:00
截图的话,我推荐个 shutter。
leafdream
2019-12-11 17:48:07 +08:00
有钉钉吗,没有白扯
maxwel1
2019-12-11 17:49:31 +08:00
Linux 驱动开发 er 路过
pencilx001
2019-12-11 17:52:09 +08:00
恕我直言,都 9102 年了,为啥还有这样的帖子?非要贬低一把 windows ?不要觉得用个操作系统就能高人一等,适合自己工作生活的才是最好的,哪个好用用哪个
我工作时候本地是 mac os,服务器上 linux,家里我自己用的 windows,为什么什么都要放一个篮子里?
busyboy
2019-12-11 17:52:22 +08:00
买了个 ipad 娱乐, 电脑换成 ubuntu 了,了了我买 Mac 的心愿。
reus
2019-12-11 18:12:16 +08:00
@itskingname 不复用,更新的时候,难道一条条去改啊?连互联网最基本的信息组织方式都不适应?
KENNHI
2019-12-11 18:14:27 +08:00
Windows10 不是最好的滚动发行版吗(手动狗头)
WSL 也没法满足你吗?话说你们都是开发的什么东西非得 Linux 不能搞? Linux 桌面早就给我搞出阴影来了,服务器纯命令行还是很香的,倒不如说根本不懂服务器安个 Windows 的人搞什么东西,就像不懂非得在个人 PC 上”全面抛弃 Windows”的人在想什么一样,你迟早会遇到非 Windows 不能解决的问题。
ochatokori
2019-12-11 18:21:27 +08:00
我和旁边工位的都是全 linux 的
搞的前端,只需要 vscode chrome nodejs 这三个东西…
我多个 deepin-wechat
crella
2019-12-11 18:30:49 +08:00
我提个问题。下的某个 ruby gui 插件需要 qt4,不能用 4.8.6 以上的版本。

windows 上,download.qt.io 直接下载,安装(解压)完事。

linux(debian 10):只有 qt5 和 qt4.8.7,没有 qt4.8.6,想在 linux 用 4.8.6,要自己下载源码包编译。……还没试这样做,直接 win 上配置 msys2、cmake、qt 工具链开始编译。
crella
2019-12-11 18:33:46 +08:00
还有 word/wps 里面的公式编辑器,不知道 linux 上怎么装。

everything 全盘搜索比 find /快。
TypeError
2019-12-11 19:08:03 +08:00
完全用 Linux 工作:“Windows subsystem for Linux”
defunct9
2019-12-11 20:08:19 +08:00
用了一年,放弃。交流是大问题。
ffflouder
2019-12-11 21:04:23 +08:00
@crella Linux 上写文章敲公式估计都是 LaTeX 搞定的吧,office 都不太好使。
t123yh
2019-12-11 21:07:10 +08:00
@NicholasYX Rider + .NET Core,体验完全不输给 vs 啊
skyrem
2019-12-11 21:10:11 +08:00
gentoo 路过
推荐 awesome 或 i3
多屏幕不要太爽
muxueqz
2019-12-11 22:26:55 +08:00
十年+的老 Linux 桌面用户路过,现在在用 Debian sid
桌面用 Python 写的 Qtile 窗口管理器

—— 回复于 Google Chrome for Linux
niubee1
2019-12-11 22:48:19 +08:00
很多人回复片面狭隘,毫无指导意义,要么就是爽要么就是怼。
好像每个人都是在搞同一种开发,可能么?不同的开发需要的环境是不一样的,各自公司也有不同的限制
所以最好大家写明自己的开发领域,工具链,好在哪里,有那些不爽之处。用不起的最好写明开发领域,因为什么条件不满足没法用。一句我就是用着爽,或者我就是用不惯,跟小孩子撒泼打滚似的,你们都是未成年人么?
reus
2019-12-11 22:59:43 +08:00
用了多年 awesome wm,昨晚换到了 gnome shell,自己写了个百来行 js 的扩展,实现快捷键和窗口自动管理之类的逻辑,用得就很顺手了,原先在 awesome wm 里也是写代码配置的。我觉得 gnome shell 已经可以替代所有平铺式窗口管理器了。一是最近做的性能优化不错,没有之前的掉帧感了,二是 gnome shell 本身就很大部分是 js 写的,扩展也用 js 写,它的 js 引擎也比较现代,很多写法都支持,写起来比 awesome 的 lua 愉悦很多。而且 js 也是 gtk 里的一等公民,绝大部分 gtk / gnome 库都能用 js 调用,生态不是任何平铺窗口管理器可以比肩的。强烈推荐!

当然,这是有门槛的。一个是通过搜索引擎解决问题的能力,很多时候我都不知道 gnome shell 里要怎样写才能实现某个效果,所以只能不停搜索,看 stackoverflow,看 github 上其他扩展的代码,翻文档(比 awesome 的文档好多了)。还有基本的编程能力,至少要会写 js,会看 C 更佳。

所以,我说 linux 好用,是有前提的,我会写程序,会用搜索引擎,知道要用什么关键词,才能在一晚上把 gnome shell 配置得顺手。如果一个人不会写程序,不懂英文,不会搜索,你和他讲 linux 多好用,大概是不会得到认同的。技术水平不一样,想要的东西不一样。就像车的手动档和自动档,不同的人会有不同的偏好。
reus
2019-12-11 23:01:59 +08:00
@crella nix,docker,systemd-nspawn,你自己不懂,不能怪系统……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/627912

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX