只要公司支持,一切问题其实都不是问题。所以你要说最大的坑,那就是:确认部门主管是否支持你这么做?
我们部门是支持大家日常用 Ubuntu 工作的,所以在很多地方给了照顾。我来说说具体的一些细节。
首先说说办公的 OA 平台,我们早期用的是 Notes,这个玩意其实即便在 Windows 下也并不算好用,不过毕竟它是有 Linux 版本的,我们公司也提供了 Linux 下的安装包。
当然,由于那个安装包对依赖软件的版本限制太死,实际上依然有很多人的 Ubuntu 安装不了那个安装包。那么只能寻求替代解决方案。如果仅仅看邮件的话,任何邮件客户端都可以,但 Notes 平台还会有一些通知或者流程性的东西,比方说公司通告,以及请假流程之类,我们长期是让部门的秘书帮忙做这件事情,如果我们因为没有 Note 客户端而没法查看公司公告,她会转发我们部门全体,如果有请假或者审批流程之类的操作她也可以帮我们搞,所以有她一个人用 Windows 就够了。
从前几年开始,我们公司逐渐把办公流程转移到手机上来,一部分操作转移到了企业版微信上,另外一部分任务(比如一些只希望在公司内网存在的东西)公司专门开发了内部app,有iOS跟android版本,在公司内部就可以连上,公司外需要走VPN。这样子,只要有手机,安装了企业版微信,以及公司提供的内部软件,以后就不需要操心办公流程相关的问题了。
至于办公三大件,大概是这样的,文档可以用 WPS 搞,这玩意兼容性还凑合,但我们主要只用来看文档,写文档方面,如果是设计其实很多时候可以生成,例如 Java 可以输出javadoc,C++可以用 doxygen,语法跟 javadoc 很类似。scm 相关的工作流很多可以用在线的网页版,有的是内部搭建 web server,有的甚至直接用 微信。——实话实说,虽然有些时候 WPS 也会有点坑,但公司如果大家统一都用 WPS,很多坑就不存在了。而恰恰我们公司至少官方明面上是规定所有人统一用 WPS 的,(虽然还是有人私下里偷偷用 MSOffice)。
我们本身做电子产品开发的,对手机的接受度非常高,所以能用手机完成的事情都不强求非要在电脑上做,一旦接受了这个设定,那么电脑用 Ubuntu 并没有多少不方便的地方。所谓「截个图发给我」也常常就是手机拍照点发送,并没有什么违和之处。
然后说说开发环境,其实这本没什么可说的,毕竟在 Windows 下可能成为噩梦的某些依赖库环境搭建,在 Ubuntu 下很可能就是一句 apt-get 完成的事。
我们就是传统的 Linux 开发,本来就是开发运行在 Linux 上的软件,所以用 Linux 作为开发平台理所当然,在 android 崛起之后我们自然也有了 android 的产品线,毕竟 android 也同样是 Linux,而就开发 android 来说,Linux 依然更优,我至今不清楚怎么让合作的友商用 Windows 编译我们基于的 NDK 代码,虽然听说 cygwin 能够实现,但有那功夫我们直接编个包丢过去就好了嘛。
在公司内网临时传文件常用的是 ftp,每个人都会装上 vsftp 之类的服务,然后其中开个能上传的目录,别人要传文件的话,就给别人私信一个 IP 地址即可。当然,这种方式仅仅用于临时传文件,更多的情况下,我们还是使用版本管理系统 svn 同步文档。比方说一群人现在在做某个项目,那么某个项目相关的所有文档都会在某一个版本管理系统的仓库中,其他人只需要 update 就好了。我们的美工制作的效果图以及切图,合作商传播设计文档,需求文档等等,也全都是扔进版本管理仓库的,其他人需要哪个文档,到对应目录下去 update 就好了,毕竟 svn 支持分子目录进行 update。
对我个人来说,有时需要在目标机与开发机之间同步文件,我会使用 hg 这样的分布式版本管理软件,原则上跟用 svn 是一样的,不过私自的版本管理可以避免公司的 svn 日志膨胀得太厉害。hg 的 ssh 协议比 git 略好用一些,这也是我用 hg 的主要理由。
即时通讯,这个早期我们是用的Windows下的自研软件,运行速度如飞,后来自研的那个友商停更了,我们转到 Linux 平台之后就开始用 google talk,不过 GT 用起来一天比一天不稳定,原因你们懂的,后来就又过渡到了微信。反正浏览器可以开微信,只要有浏览器就没什么不能做的,这样就彻底的解除了对系统的依赖。
然后就编译环境来说,如果是基于 GNU/Linux 的软件,常用的方法是每个不同的项目都通过 chroot 创造一个基于该项目的编译环境,它也通过版本管理系统分发,这可以使得无论你用哪个发行版的 Linux 都可以正常编译,因而我们部门不需要对大家安装的 Linux 发行版进行限定,大家可以根据自己的爱好任意选择。——如果是基于 Android/Linux 的软件则没有这个必要,毕竟 android 自带一套工具链,本身完成了类似的工作。
Ubuntu 开发者用好 apt-get 就非常开心了,对吧?所以这个不细说。能用 apt-get 装的就装系统的,不要试图自己编译折腾,这就是坠吼滴。
浏览器我一般用 Firefox,当然 chromium 偶尔也用,不过 firefox 还是功能更强更好用。firefox 唯一可以吐槽的是启动速度,然而,开发人员的电脑是从来不关的,我的 firefox 也是从来不关的,对于六个月重新启动一次的 firefox 来说,它启动速度快还是慢根本没影响,功能好用才是最重要的。
嗯,对了,我的电脑正常情况下六个月重新启动一次,为什么?因为 Ubuntu 六个月升一次级。
输入法我用 ibus-rime,不过这个实际上有很多选择,只不过我在 Windows/MacOSX 上面也都用 rime,所以 Linux 下用它最习惯。习惯搜狗的人自然也可以用搜狗,大家各取所需就好。
字体什么的配置,其实是需要定制一下 X 的相关文件,不过这都是十年前的事了,我定制好之后一直没动过,也一直不需要动。
如果你用多台电脑,记住一定把配置最高的那台给 Linux,至少是要内存最大的那台,长期不关机的 Linux 机器其实只要内存够大,不会太吃 SSD,平时的常用任务就那么几个,完全都是在内存中跑的,由于你不装任何流氓软件,所以根本不会遇到扫描硬盘的事。不像 Windows ,一言不合就扫描全盘,只要你配的不是 SSD ,就会经常看着 100% 硬盘占用干瞪眼,你还很难定位究竟是哪个流氓应用在做这件事(毕竟它很可能是 Windows 系统自身干的)。
不吹不黑,整体来说,除了不太吃 SSD 以外,其他方面 Ubuntu 的优化比不上 Windows,内存占用更是远高于 Windows,这更意味着你需要把性能更好,内存更大的电脑配备给 Ubuntu ,保证足够流畅的用户体验。
其实用 Linux,如果你要求特别高,肯定是需要一定的折腾能力的。因为各种软件都可能存在或多或少的小问题。这些问题真解决起来并没有那么难,就是不一定有人去解决。例如我常用的终端,之前用 konsole,kde3时代本来有问题我自己下载源代码都搞定了,升级 kde4之后又弄出一堆问题,我只好又拿源代码改呀改终于满足自己需求,再后来kde5出来,本来能用的功能又不能用了,我折腾很久都没搞定,于是改去折腾 xterm,后来发现这出人意料的好用,这才是稳定的神器,所有功能都符合需求,于是现在就直接用 xterm 了,早期版本的 xterm 在刷新方面效率很成问题,个人觉得是唯一的 bug,但现在版本没问题了。估计以后我都会用 xterm 这个万金油的元老作为自己的终端。
再还有系统快捷键的一些处理,尤其是小键盘区,这个为了打造成让自己满意的样子也是需要一定折腾的。
如果你需要打印机,你看到,即便各种打印机都有Linux驱动,但具体各种应用对打印机的适配都不一定完全好用。
用惯 Linux 的人通常都会对这件事情习以为常:即便别人完全弄好的东西,你拿过来用,依然可能出问题。所以 Linux 环境一旦搭好就别折腾,尤其千万别重装,可以升级不要重装,毕竟升级几乎不改变什么。当然,如果决定升级,请一定选一个你大概有一天空余的时间搞升级,毕竟升级谁也说不准会不会出什么问题,现在赶着上线新版本然后你说你系统升级出问题不能用这就扯犊子了。我每次都会提前规划一个自己相对有空的时间,再考虑升级。
我现在这个系统是 2006 年 Ubuntu 6.06 开始装的,一路随着 Ubuntu 升级到现在的 18.04,中间经历了几次换电脑,换电脑的时候都是直接硬盘拷贝过去的,然后系统可以直接启动起来。——虽然经历过多次版本升级,但十几年没有重装过一次系统。——换句话说,其实该折腾的东西,早期都已经折腾好了,剩下的大多数时间里,Ubuntu 是一个完全无需折腾的省心的系统。
其中ubuntu16.04 与 ubuntu14.04并存,我尝试过18.04,还是不够稳定,更新太快,上次更新完把我桌面保存的还有编译好的Qt全都给我干掉了,至今不懂发生了什么=。= 我又切回16.04了。
为知笔记:这个笔记软件做的还是很不错的。为数不多的存在跨平台版本的笔记软件。(AppImage格式)
截图软件: 给我们团队可爱的测试们写的,她们一直吐嘈Linux上没有好用的截图软件,Linux桌面环境又太多,自带的截图软件不好用,有时候甚至用手机去拍。所以就仿照QQ的截图用Qt写了个。不关爱测试的开发不是好开发。
Qt版本: WPS的版本,Qt4.8.6, Qt5.5,Qt5.7,Qt5.11 五个版本,因为经常会碰到Qt在Linux下的bug。今年从年初到现在应该是已经fix掉四个了。一直忘记给官方打patch=。=@齐亮
办公软件:当然用我们团队自己开发的WPS for Linux了。emmm,自己团队的产品就不多做评价了,要不然说我吹比了。
体验的话,日常的开发基本是没碰到问题。我已经好几个月没有关机过了。我原来从windows上做开发,转到Linux上没有任何不适。吐嘈点就一个
用ubuntu做开发用了10年多了吧。之前一直用Debian 和 redhat ,后来大约是07年还是08年的时候换到了ubuntu,一直用到现在。
刚开始的时候是做C++开发,那时候的VM技术也没有现在这么发达,基本上大家都是ssh或者vnc到一个远程的solaris或者Linux workstation上,连IDE都木有,vi人眼改代码。
这么多年来,眼看着ubuntu越变越好,但是我也越来越相信,桌面linux只适合呆在VM里做开发用:
这么多年了,X还是一坨屎,可能很多人不能相信,之前linux改分辨率是要去改一堆配置文件的,而且如果改不好的话,会真的把你的显示器烧坏的。 我的第一台workstation就是这么烧坏显示器的。 现在改分辨率可以直接改了,然而对双显示器的支持还是挺差的。 我相信大多数开发都不只一台显示器,一个开IDE,一个开shell,或者查文档,聊天。
Linux对桌面软件的支持真的太差了。 这个大家都说过了,连个好用的office都没有。有些东西是将就不来的,何况干吗为了用linux把自己搞的这么惨这么将就?明明有更好用的为毛不用?
驱动问题。现在linux的驱动一般问题不大了,但是万一哪天你要要用个旧设备,在windows下最多google下驱动,在linux下就折腾吧。折腾久了都不一定能启动起来。
电源管理问题.linux的电源管理太差了。如果你用笔记本的话就会深深的感受到系统对电池的恶意。
IE only和windows only的问题,比如某些网银啊。某些政府网站啊,来个法人一政通登录啊,各种证书啊。在linux下想都不要想。没法用。 肯定有人要提 wine和各种hack,听我一句话,别折腾,浪费时间还不好用。
综上 做为一个使用linux超过10年的老鸟,老老实实用VM吧。我很庆幸我们现在有VM这种屌炸天的技术。
ubuntu的开发体验是相当NB的,文档非常全,基本你遇到的任何问题都可以在网上找到。是我用过的最好的开发用的系统。没有之一。
另外。我的ubuntu是装在windows host里,windows装在一台15款的顶配macbook pro上。没错。我宁可在windows上跑VM,也不愿意用mac下那一堆动不动就崩溃的开发环境。ubuntu的开发体验就是这么NB。
上图中的idea是运行在linux上显示在windows上的,CMD是运行在windows本地的,你能感觉到凭着差别吗?
上图中的4个idea是运行在linux上显示在windows上的,其它程序在运行在windows本地的,你可以像windows程序那样把他们拖来拖去到不同的显示器上。完全不受linux X的限制。
有人求教程,其实也没啥好教的。对于熟悉linux的上面的一说估计已经知道怎么弄了,对于初学者来说,还是有点难度的,大体说一下吧。
操纵VM,可以直接在hyper-v中操作,但是更方便的方法是用powershell,按win+x a,打开一个powershell, 常用的命令列在下面,基本所有的操作都可以用powershell进行操作。
其实我之前一直用VMWARE,但是VMWARE非常吃硬盘,disk IO非常多,后来用virtualbox用了好久,后来切到hyper-v的主要原因是因为hyper-v强大的powershell命令。比如我要启动我的VM,只要打一个 start-vm ubuntu就行了。完全是headless的,这是virtualbox做不到的。 还有一个很重要的特性是hyper-v其实是直接让VM运行在硬件上的,而virtualbox其实是需要host OS支撑的。这就造成hyper-v的性能其实是远远高于virtualbox的,但是记住,hyper-v中运行的linux是没有图形硬件加速的。
也就是说,如果你需要经常使用linux desktop,那么你应该使用virtualbox,如果你像我一样所有的东西都可以命令行搞定,而且会使用XForwarding把窗口forward到windows上来,那么hyper-v其实是更合适的。对于初学者来说,virtualbox更合适一点。
在上一次电脑坏掉之前,坚持了有大概两年吧。之后换了arch,再之后入了个chromebook玩。
2、pdf阅读器,对于科研党来说,看文献是常态,Ubuntu下的pdf阅读器还是不错的,如果不看中文的话。不过我还是推荐用chrome来看。
3、office,老大难问题。wps for linux根本不行,没公式编辑器能用?如果是自己组内内部汇报基本上就用libreoffice凑合了,如果不需要涉及到公式啥的直接拿markdown做就行了。正式报告啥的,老老实实开Windows用ms的office,这点无解。
4、作图。没有originlab真是不爽,不过大致上解决方案也有了。可以用python作图,貌似还有一个基于qt的plot工具,还有就是可以拿matlab绘图。
7,音乐,有网易云音乐不过我不喜欢,我都是那listen1来听,只听本地音乐的话mocp就行了。
9,打游戏,个人喜欢的几个游戏,文明5、坎巴拉都有linux版,steam直接玩就行了,效果还不错。
10,虚拟机,virtualbox,没虚拟机还是不行,有很多专业软件要用。不过win下也一样,很多软件都是xp时代的产物,win7之后都要用虚拟机才能跑。
13,忘了写输入法了,中文输入法用搜狗拼音,还凑合吧。不过貌似不能再wayland下用,不知道是不是设置的问题。
15,最大的问题是qq和微信,无语死了。微信有网页版,但是不能同步聊天记录啊,qq直接爆炸……解决方案是虚拟机。别跟我提wine……
思来想去,最大的问题也就是office,作图还有qq了。好处就是肆虐办公室小局域网的各种恶意程序都die了
3.网页版qq真的不好用啊,wineqq又各种掉线.想看个视频 字幕没有咋办啊 在线匹配字母的效率也太低了吧。。
5.让做个ppt, linux下的ppt真心不好用。。 要修改个图片没有photoshop怎么办?GIMP试了一下,有点无从下手。。
-----------------------------时间分割线----------------------------
1.想要安装个软件,真心方便,apt-get 一条命令搞定。文件的管理,配置等等终端里一条命令搞定。
3.终端或者说命令行线.对程序员来说,确实也很方便。。。(这个怎么说呢。。 其他人补充吧)
1.virtualbox安装xp 给的配置并不高,但足够其运行。主要是分给其两核+1G内存+32M显存。本人的电脑配置是I5 3520(好象是。)+6G内存+HD4000+GT630 ,所以剩余的配置足够运行调试程序了。
2.替换了ubuntu 14.04里默认桌面成gnome3,这个稳定性确实很好,而且对中文输入法的支持也很不错。
再比如,你使用Chrome没有手动关闭浏览器直接shutdown now关机的话,下次开机也会给你弹一个错误。
诚如你所见,我这垃圾配置,i5 3337u+8gb+250ssd做一般Java开发完全无压力。
1)偏后端就要选择Linux,推荐Mint,Linux就是不要掉进折腾的陷阱。所以安装维护越简单越稳定越好。对于后端来说,服务器采用Linux是多数,虽然你在Mac和Windows也可以开发Linux后端,但总归不如直接Linux方便。
2)如果你偏前端,就建议Mac了,Mac上面广告流氓骚扰少,GUI字体渲染比Windows好,桌面漂亮,而且图形处理和出版、美术类软件是传统优势。
3)如果你偏游戏娱乐类开发,就一定得用Windows,3DMax都只有Windows版,Windows可以各大游戏引擎和3维图形API通吃,这个其他操作系统是不行的。
4)最后,如果你是学生,初学,不推荐Linux,还是Windows比较好,Windows上有IDE王者VS,它能让你把精力集中在具体的学习上面,这很重要,切记学习的过程不要被无关的内容骚扰,把精力浪费在瞎折腾上非常不值得。
说说推荐Linux Mint的理由,它基于ubuntu,所以ubuntu上有的都有,初始的界面也比Ubuntu漂亮,如果你用Ubuntu要达到Mint的效果还得自己折腾,这就回到
这个问题上面了,我基本上折腾过所有主流Linux发行版,最后除了打键盘速度更快了以外没什么收获,Linux很容易让你折腾,也有很多人鼓励折腾,所以这点怎么说都无比重要。对于Linux,你不折腾就没坑,反之,那就是片坑地。最后回到标题上面,用Ubuntu(Mint)做日常开发电脑的系统的体验就是:我是做后端开发的,我主要的工作都在上面,优势就是要什么信手拈来,直接就是跟生产机器一致的环境,脚本+控制台+SSH到任何一台机器上,开发、部署、运维的效率都很高。
仅对开发人员来讲,我认为所有linux发行版中最合适的就是ubuntu,如果ubuntu都不合适,那是真不合适了。从windows转到ubuntu需要的只是一份决心,最忌瞻前顾后。只要你不是微软技术栈的依赖者,完全没有问题。不会存在逾越不了的困难,不会遇到找不到软件工具的情况。学习曲线并不像有些人说的那么陡峭。如今的ubuntu(或推广到linux)的软件生态比十年前好得多。
切换过程中有一点需要注意:不要过于保守。你可能看到有人向你推荐ubuntu16.04,理由是长期支持,经过了两年多的考验,稳定可靠。然而在桌面版linux的世界里,“稳定可靠”往往意味着陈旧过时。ubuntu每半年发布一个新版本,雷打不动,2018年就要过去,还去用2016年上半年发布的系统完全不合适。linux使用者圈子的习惯实际上是比较激进的,见新不用旧。如果一个软件的开发者不再为旧版本的ubuntu打包了,岂不尴尬。完全的新人应该直接安装最新版,并且跟进更新。
搜集网上的资料、“教程”时一定要注意文章的发布时间,以及是不是转载。时间过久的文章可靠性往往不大,费时费力不说,有时候按照旧方法还会破坏新系统,这就很糟糕了。
很多半瓶醋喜欢让人编译一些基础工具和开发环境。这是linux圈子里很坏的一个习惯。故作高深,实无必要。ubuntu的最大优势就是几乎所有的软件,只要是支持linux的,都有ubuntu可以直接安装的二进制包,完全不用从源码开始。
apt和snap优先,这两个包管理工具能覆盖你90%以上的软件需要。既然是开发人员,就不要依赖软件商店之类的“友好”工具,友好的另一层意思就是傻瓜,隐藏了大量细节。
之前写代码的时候是在 windows 上,某一天舍友大人装完 Ubuntu 回来,给我 show 了一下,看了第一眼,那时觉得好神奇好酷炫,于是在某天我也装了,那时还是 Ubuntu 12.10,然后搁置了一年╭(╯3╰)╮,转眼过了一年,升级到 13.04 后终于下定决心在 Ubuntu 上干活,推荐题主装 64 位的。
1. 装软件:刚开始什么 deb、tar.gz、.run 完全看不懂,最后发现一条神奇的命令
什么 emaces、vim 无痛安装。当然如果你选择的是 deb 格式的安装包的话,我推荐 GDebi 这个软件,安装 deb 非常的方便。
2. 开发工具:咳咳!作为一个前端工程师偏爱的编辑器是要的,Sublime Text: The text editor youll fall in love with什么!sublime 输入不了中文! 点这里
,当然一个编辑器可能满足不了你写代码的欲望,vim 的配置:spf13-vim - The Ultimate Vim Distribution
4. 通信:QQ 用的是 wine QQ,用着还好,之前发现了这个hillwoodroc/winetricks-zh · GitHub。
因为已经很多年不用了,所以不清楚现在的现状。说说用的时候的经历吧,主要是10,11,12版本的时候。那个时候的体会还是很深的。让我接上投影仪跟你慢慢说。
我说,接上投影仪的时候都是一堆人等着听你说的时候,是吧?然后特么桌面崩溃了?那我还不如用 Windows + Cygwin呢。那个虽然一拔显示器 X也会挂,但是重启下X要比重启下系统方便多了。
Ubuntu的系统升级也是相当酸爽的,尤其是半途中 Adobe, LibreOffice 下不下来什么的。。。就算能下下来,升级过程也会问你很多的傻逼问题,深夜睡不着的时候可以尝试折腾一下还是相当有趣的。你可以猜测一下下一个问题会在几个小时内问。当然了,当然了,这些都是小事情,深夜看球,或者看个WWDC什么的不是也得熬夜嘛。其实升完级以后发现无线网络驱动不起来了才真的酸爽呢。
驱动无线网络需要重新升级内核,发行版里的内核永远都是连不了无线的,据说这叫FEATURE,这不叫BUG。重新升级内核需要能够联网,无线网络不通可以连有线,上京东买网线需要联网。别说什么手机上京东就买了,Ubuntu 1x的时候移动互联网还不知道在哪儿呢。当然还有一个终极解决办法,单位肯定是有网线的,对吧?升级Ubuntu这么高风险的事情当然是休长假的时候才会干的。。。。不要跟我说到中关村买根线来回四个多小时买根线就为升级个Ubuntu我还不如跑趟单位呢。
一旦装好了图形界面,及日常软件之后,使用下来发现,我发现无论内存还是CPU的使用情况相较Windows 都没有任何优势。
比如,我一顿折腾之后,网络管理图形界面就故障了,关闭Wifi,它给我关闭有线。关闭有线,则相反。

