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

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

26270 次点击
所在节点    Linux
138 条回复
amaranthf
2019-12-12 16:11:19 +08:00
@reus 我的例子重点不是怎么实现,而是定制化……话说我为什么看不到你的 at 通知?
charlie21
2019-12-12 16:12:07 +08:00
@amaranthf 是的,他们就是业余。
专业软件开发者 制造出来的 软件,给业余用户使用
业余软件开发者 制造出来的 软件,给专业用户使用
charlie21
2019-12-12 16:14:39 +08:00
这里我已经说了 专业和业余的区别,宝瓶时代就是一个业余程序员当道的时代
https://www.v2ex.com/t/627183
reus
2019-12-12 16:20:25 +08:00
@amaranthf 可能被管理员降权了吧。
reus
2019-12-12 16:28:57 +08:00
@Rheinmetal 我知道 autohotkey 可以做到自动控制,也有基于它的窗口管理器: https://github.com/zovt/Tilde-AHK,也是 inspired by AwesomeWM。但是开发早就停了,你提到的项目也是。
KentY
2019-12-12 17:12:06 +08:00
@charlie21 "git 入门教程之 git bash 竟然不支持 tree 命令"

不光 git bash 没有 tree; bash, zsh 这些都没有 tree
tree 是要单独安装的软件包. 跟 bash 一点关系都没有.
同样, "bash 竟然没有 maven, bash 竟然没有 git"
secondwtq
2019-12-12 21:04:51 +08:00
@amaranthf #118

"工具开发者倾向于既然有了定制性,默认配置下的用户体验就不那么重要"
这样的理解是不对的,我相信 sane default 是每个平台的开发者的目标
Linux 下的某些程序之所以默认配置“体验”不是很“好”,高定制性确实有很大的因素,但并不是因为开发者不想做好
很多 Linux 程序的高定制性允许用户和开发者在很多细节上做出完全相反的选择。用户在使用一个可定制的程序时,只需要认同它的核心交互思想即可,因为其他东西都允许定制。而这个程序对于作者来说可能就是一个个人项目,于是作者把默认配置做成自己用起来最顺手的,然后搞一个配置项来跟用户求同存异。对于这种项目不存在“最优的默认配置”,甚至可以把“最简配置”(也就是下限 ...)看做“最优配置”。极端情况下,作者的用法可能和大多数“主流”用户的用法都完全不同。

也有可能是十年前作者设置了个默认值,之后想改也不方便改了。

Linux 开源软件普遍的非盈利性也确保了作者的意志能够得到贯彻。实际上就算是盈利的软件,也不是什么用户都能教人家做产品的。
secondwtq
2019-12-12 21:15:10 +08:00
@secondwtq
对于不可定制的程序来说,用户觉得哪一处严重影响体验了,那可能就直接不用了。
这就是定制性高的程序的客观优势:一个可定制的软件可以适应更多人的需求。就算用户不会定制,也有各种傻逼包帮你定制。

上面是单就“定制性”这个问题来讨论。当然不得不承认的是,很多 Linux 程序所谓的“定制性”也没多高。理想中完全可定制的程序可以适应所有人的需求——当然这种软件并不存在于一般大众意义上的“软件”范畴中(但是拥有极高可定制性的软件是存在的——就是通用编程语言 ...)。Linux 所谓的“可定制”对于大多数人来说只是 cover 了一些特殊情况而已。
skyrem
2019-12-14 12:29:20 +08:00
@reus #110
我也没收到 at。。。
多谢老哥
FrankHB
2019-12-14 15:07:03 +08:00
所谓优势:
12 不管是 Windows 还是 Linux 大都一样(除了多了最开始下载安装 MSYS2 或者打开 WSL 并配置发行版这样的操作)。能在日常应用下出区别的要么是用到了依赖具体系统还找不到备胎的东西,要么就是基本没入门。
3 对开发者来讲也不应该是问题(虽然明显是 Windows 处理方式更蠢,但日常习惯变成了 Windows 的形状的,没什么资格计较)。
FrankHB
2019-12-14 15:08:54 +08:00
@secondwtq 编程语言又不是语言的实现,有几个能写出 formal spec 具有可编程性能让用户改的?一般用户撑死就是糊点库制造更多的兼容包袱。
FrankHB
2019-12-14 15:13:43 +08:00
@amaranthf “因为工具开发者倾向于既然有了定制性,默认配置下的用户体验就不那么重要。”
连 convention over configuration 都不知道的开发者就别设计接口污染用户体验了,老实糊库的实现去。
flynaj
2019-12-14 22:30:20 +08:00
Linux 不折腾你还是用 Debian。
masker0817
2019-12-18 15:12:37 +08:00
Linux + PCI pass through + Windows 10 + Looking Glass
各位可以一试,我觉得基本所有都不缺了。台式机用得很爽。
qbqbqbqb
2019-12-29 17:06:21 +08:00
别的都还行,但是“scp 命令方便”?

用鼠标把文件从 explorer 里往 WinSCP 里一拖,不香吗?
sakura1
2020-04-13 11:18:27 +08:00
@charlie21 说得好
wangyadong
2020-11-12 14:48:32 +08:00
@nsynet #18 你好, 请问 github 的 Wiki 还在维护吗 ? 方便发个链接吗?
fugu37
2021-01-05 20:12:07 +08:00
@cmdOptionKana 新知识 get! KDE 下也能用。

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

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

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

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

© 2021 V2EX