什么样的开发环境是比较合理安全稳定的

2021-03-03 16:04:20 +08:00
 qiyue0726

我以前是一直用的 win10 开发,但是基本每半年就因为各种原因要重装,最近刚攒了台电脑,想处理下这些问题。 听说很多人都是另外开一个虚拟机进行开发的是吗,我也想试试,但是不知道需要注意什么,现在只知道不要开快照,还有什么注意点没有。 还有,现在也纠结用那个系统比较好,以前都是用的 win10,linux 用的不多,黑苹果不想折腾了。 主要是在 win10 ltsc,openSUSE,Manjaro 三个里面选,各位觉得那个比较稳定好用舒服

9699 次点击
所在节点    程序员
82 条回复
heart4lor
2021-03-04 10:29:58 +08:00
Win10,本地装个 MSYS,配个 linux 主机树莓派之类的
BeautifulSoap
2021-03-04 10:49:33 +08:00
都 win10 了,何必在宿主配置环境

wsl2 里面配置各种环境,ide 和各种工具也装在 wsl2 里,通过 xlaunch 与 wsl2 内的程序交互,和跑在宿主机里没区别

然后 docker for Windows 启用 wsl2 backend,这样所有的开发环境就完全和宿主隔离了

这么做最爽的是想把当前电脑的环境迁移或者分享到其他电脑的话,直接把 wsl2 的 vhdx 文件移动过去新机器装个 xlaunch 就行了,真的是爽翻天
vagranth
2021-03-04 10:53:47 +08:00
以前用 windows + ubuntu in vmware,很好用,但 ubuntu 空间紧张
现在直接用 ubuntu,开发没问题,但一些只有 windows 版本的软件使用起来比较困难,wine 难以完全达成目的
将来计划是 windows + ubuntu in wsl2,配合 portable ssd,要等 wsl2 的 mount 支持上到 stable 版本
junwind
2021-03-04 11:27:32 +08:00
一台云服务器+本地主机
Rache1
2021-03-04 13:19:41 +08:00
wsl2 也是拉胯的一批,用着用着,内存就飙升。

而且也不能直接使用 /mnt,否则性能怀疑人生。使用开发工具连接用 wsl:// 直接编辑,如 jetbrains 家的就会经常遇到一些文件权限问题

自身的 systemctl 也存在一些问题。

hyper-v 也是个坑,虽然他的虚拟机可以自启比较不错,但是有个巨坑的就是他会有一个「保留端口」的骚操作,用着用着就会导致你主机端口被保留,用 netstat -aon 查不到端口占用,却提示端口被占用。

虚拟机装 Linux 桌面也是坑,一堆常用软件用不了,要不就是动不动卡死,VSCode 这总轻量工具用起来问题还不大,jetbrains 家的三天两头出问题。

最后还是直接撸实在。
wyyyyyy123
2021-03-04 14:54:33 +08:00
avalon0624
2021-03-04 15:56:09 +08:00
openSUSE 我用过,大约是四年前的 42.1 吧,那个时候我也是接近新手,弄崩过几回 KDE 。如果你不想学 Linux 相关的话,可能最后会与你在 Windows 10 下面的开发经历类似。
ericguo
2021-03-04 16:00:53 +08:00
@coolesting 我真不信,除非你装完从来不更新,操作系统从来不打补丁,不过这样的机器敢上网吗?
sarices
2021-03-04 17:10:15 +08:00
win10+virtualbox+ubuntu,安装虚拟机,然后为数据单独创建一个虚拟硬盘文件,独立挂载在 ubuntu 里面,开发采用 vscode+remote ssh,如果用 win10 挂载虚拟机里面的目录,推荐用 raidriver

只要虚拟机备份好了,随便迁移
cheng6563
2021-03-04 17:32:16 +08:00
除非你在某些脱离国产软件的外企,否则强烈建议不要使用桌面版 Linux
runliuv
2021-03-04 17:38:20 +08:00
每月或每周,用 WIN10 的系统备份即可。
WIN7 我几年不重装正常。除非我无聊重装玩。

在楼主没讲明是什么软件开发时,一股的推 LINUX ,MAC OS,不合适。
haokuderen
2021-03-04 17:41:41 +08:00
centos 都没人推荐吗?
ZxykM
2021-03-04 17:59:12 +08:00
ubuntu server 虚拟机然后 ssh
coolesting
2021-03-04 20:52:52 +08:00
@ericguo 你猜中一点,我基本上没打过补丁,从不更新,没有杀毒软件,没有常驻监控软件,没有桌面飘浮清内存之类的程序。

正常上网,一般工作用,偶尔看下视频。
还有 ,个人不熟悉的软件一律不装,要装也进虚拟机去装。
bthulu
2021-03-05 08:48:48 +08:00
@BeautifulSoap wsl2 崩溃的时候你就知道了, 启动就立马给你重装了个 wsl2 环境, 原有数据全部丢失
dayeye2006199
2021-03-05 10:09:13 +08:00
ubuntu + i3, 尽量少装点东西。
别和我提 office,我用 office365 web 版本
BeautifulSoap
2021-03-05 11:36:23 +08:00
@bthulu 建议 wsl2 的的 vhdx 文件移动到别的盘符,方便备份管理。至于崩溃目前没遇到过,不知道怎样才能让 wsl2 崩溃? 如果出现了 wsl2 崩溃数据丢失那肯定属于恶性 bug 了,可以去 wsl2 的 github 项目里提 issue
BeautifulSoap
2021-03-05 11:54:34 +08:00
@faqqcn wsl2 属于那种开箱就能用,但是想用好得微调的东西:

1. 内存占用是因为你没有设定 wsl2 的内存占用上限,默认 wsl2 会需要多少内存就占用多少内存。这个是和 Hyper-V 的动态内存功能保持一致的。每次谈 wsl2 都有人吐槽内存占用,问题是查一下就知道建个.wslconfig 配置文件就轻松解决的事,搞不懂为什么还那么多人吐槽

2. wsl2 和宿主之间文件交互性能较差(其实无论你用什么虚拟机这都是个问题),要么减少两者间交互,要么自己配置别的性能更好的网络文件系统

2. hyper-v 的端口占用问题和 hyper-v 无关,之前也遇到过后来找到原因是微软变更了 tcp/udp 的动态端口范围,从原本的 49152~65536 改成了 1024~11024 导致端口占用。变更下端口范围就行了
https://docs.microsoft.com/en-US/troubleshoot/windows-server/networking/default-dynamic-port-range-tcpip-chang
至于为什么会在 hyper-v 下触发就不得而知了


3. 虚拟机没事干嘛装图形桌面,直接通过 X Server 将虚拟机里的图形界面传送到宿主客户端渲染就行了,性能比在虚拟机里直接跑整个图形桌面好
Rache1
2021-03-05 12:46:06 +08:00
@BeautifulSoap

1 、私以为最基本的内存使用与归还作为最近本的部分,应该作为开箱可用,而不是需在发现问题后被动的去作修改,甚至是可能不一定有效的修改。使用 wsl 就意味着需要以 Window 为主,wsl 作为次选,而默认这样的行为对于宿主机会造成影响。

2 、确实,这些问题都存在,但是 wsl2 的口号之一不就是大大提升了 文件 IO,然而实际上属于感知不强的范围

3 、hyper-v 端口保留占用问题你不就觉得你说的前后矛盾吗

4 、Linux 虚拟机装图形,是为了作为最简单的开箱即用,个人觉得体验不好自然就不会使用,更何况 Linux 的图形也并不那么尽如人意。仅是拓展,X Server 是可以作为更加进阶的方案。

而你说的这一切都建立在你踩过的坑的基础上而来的,而这些坑在大多数时候足以劝退不少一部分人。
BeautifulSoap
2021-03-05 13:58:46 +08:00
@faqqcn 我倒不是想说 wsl2 有多好用,wsl2 我也觉得做的太糙了,但是原意稍微配置下的话其实体验是非常棒的,我现在就完全抛弃了原本的独立虚拟机,完全转向在 wsl2 内做开发了

你说的除了第三条我都赞成。内存这个我也搞不明白为什么微软要默认给 wsl2 启用动态内存,启用 wsl2 的时候给个内存占用上限的选择都比这要好,结合到现在 wsl2 都不支持静态 IP 只能说微软那帮人想法很奇怪

端口占用的根本原因在于微软改了动态端口范围,这个问题不光在 Hyper-V 下会出现,在其他场景下也有出现,触发条件我不清楚,只能说是 Hyper-V 在什么条件下触发了这个问题。但是你说这问题在不在 Hyper-V 我觉得不在,因为造成这个问题的根本原因还是微软改了端口范围

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

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

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

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

© 2021 V2EX