V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sponsored by
ShowMeBug
[福利] V2EXer 专属!在线代码笔面试 20 场
ShowMeBug,专业的在线代码面试平台,助力你快速识别神队友,高效面试不加班。

为了感谢 V2EX 小伙伴们的支持,特地大家提供了福利:ShowMeBug 在线笔面试场次 20 场,限时活动,快邀请你的小伙伴来薅羊毛吧!
Promoted by ShowMeBug
qiyue0726
V2EX  ›  程序员

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

  •  1
     
  •   qiyue0726 · 50 天前 · 5886 次点击
    这是一个创建于 50 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  50 天前
    看到很多人问为什么经常要重装,这个很多一部分原因是 win10 的更新问题,有时候用的好好的,然后手贱更新了,不是新系统不好用就是更新过程出问题,而且我也没有做备份的习惯。还有一部分原因是有时候有一些软件 从来没用过,然后玩着玩着玩崩了,感觉系统不纯净了就直接重装了,还有时候是为了搞多系统,linux 黑苹果这些,不小心玩崩了。
    第 2 条附言  ·  50 天前
    还有一点,我看好多人都是虚拟机或 wsl 开机,然后连 ssh 开发,这操作我有点不太懂,难道不是我认为的直接在虚拟机里想本地宿主机一样开 ide 进行开发的吗。我的理解是这样的,宿主机就完全不配环境那些了,要开发就进到虚拟机里面,想一些大公司一样连 vpn 开发
    80 条回复    2021-03-05 13:58:46 +08:00
    zsyubo393
        1
    zsyubo393   50 天前
    撒开发?能接受长期 linux 选 Manjaro 呗
    acmore
        2
    acmore   50 天前
    一般的开发还是用 Linux 环境最不容易出错,我的配置 👇

    主力开发机:装了 Ubuntu Server 的主机
    开发入口:装了 VS Code 的 Win 10 笔记本 + 大屏
    qiyue0726
        3
    qiyue0726   50 天前
    @zsyubo393 主要是 java web 的
    qiyue0726
        4
    qiyue0726   50 天前
    @acmore 现在有个担心,除了 linux 软件有时候很麻烦,会不会 D 版也不好搞
    Kinnice
        5
    Kinnice   50 天前
    × 折腾 Linux 环境
    √ 购买 Macbook Pro
    wzb0909
        6
    wzb0909   50 天前 via iPhone
    linux 虚拟机,然后 vscode 用 ssh 连进去。
    wxw752
        7
    wxw752   50 天前
    单独一台电脑做开发比较稳定。我的这个系统已经两三年没有重装了。
    easylee
        8
    easylee   50 天前
    想要 Linux 又不熟悉 Linux,Linux 发行版本建议使用 Ubuntu 。
    love
        9
    love   50 天前
    @Kinnice 别尬推,linux 并不需要折腾,环境更近生产,另外硬件选择余地大,价格便宜
    qiyue0726
        10
    qiyue0726   50 天前
    @wzb0909 这应该不适合我,还是需要 gui 的
    owenzhang24
        11
    owenzhang24   50 天前
    Macbook Pro
    ikas
        12
    ikas   50 天前 via Android
    比较好奇你这 win 为啥重装,win 是笔记本从 win8 升级,然后复制到台式机,一直测试版升级到现在,开发机加游戏机,只是遇到些小问题而已
    ikas
        13
    ikas   50 天前 via Android
    我这系统还是 vs 加 java,安卓,现在还开了 wsl2 来编译安卓。。无问题,稳定几年
    Jirajine
        14
    Jirajine   50 天前 via Android
    @qiyue0726 Linux 用的软件几乎都是自由软件,没有必要去用盗版。
    x9sec
        15
    x9sec   50 天前
    问下楼主 快照有啥坑啊。。我正打算给自己虚拟机拍个快照。。
    lv2016
        16
    lv2016   50 天前
    mbp ssh 到 linux 服务器,兼顾续航和性能🐶
    also24
        17
    also24   50 天前
    如果操作系统限定 Win10,那么可以考虑将开发环境尽量放进 WSL 来折腾,在重装系统前把 WSL 导出一下就好。

    命令类似:
    wsl.exe --export <DistributionName> <FileName>

    参考:
    https://docs.microsoft.com/en-us/windows/wsl/reference
    Macv1994
        18
    Macv1994   50 天前
    搞个 Windows/Linux 双系统呗
    Stevenv
        19
    Stevenv   50 天前   ❤️ 1
    慎用 WSL,遇到奇怪的问题。太折腾。。。推荐 manjaro 。当然你也可以 ubuntu
    assiadamo
        20
    assiadamo   50 天前
    windows docker,然后 vscode remote development

    题外话,做桌面开发的会不会很无语,只能任由各种 unity 或 vs studio 把环境搞得一团糟
    Kasumi20
        21
    Kasumi20   50 天前
    WSL 就是辣鸡,我选 Ubuntu
    kop1989
        22
    kop1989   50 天前
    java+.net+android+xamarin+nodejs+jenkins+iis

    6 年了,不知道重装为何物。
    jmyz0455
        23
    jmyz0455   50 天前
    我上学到开发这么多年 Windows 笔记本都没重装过,可能是个人习惯问题吧,我工作的电脑不装任何非工作相关的东西(点名批评迅雷),全正版,文件夹都是整整齐齐的,还时不时看任务管理器有没有啥流氓东西,比如 QQ 那个常驻进程,杀掉又没法用 QQ,不杀就开机自启,我索性卸掉,工作不闲聊,有事 Slack 。
    lychs1998
        24
    lychs1998   50 天前
    三选一的话,我选 Manjaro 。但我还是建议你用 Windows 。我也是做 Java 后端相关的开发的,Windows10+开启了 HyperV

    我的开发基本环境:
    1.本机使用 IDEA 开发。
    2.本地安装 Docker 的运行环境,跑数据库之类的,数据目录挂载到本地目录。(用的是基于 HyperV 的 docker,而不是 wsl2 的,wsl2 的占用太大,而且 IO 效率越低)
    3.项目 build 的时候本地打包 docker 镜像到阿里云的镜像市场,本地拉取最新的。
    loading
        25
    loading   50 天前 via Android
    我用 osx 做 host 系统是因为不会一下不小心装个流氓 app 。
    当然,由于美观原因我把 linux 丢虚拟机里面了…
    scukmh
        26
    scukmh   50 天前
    Arch 赛高 -- 来自 macos
    northisland
        27
    northisland   50 天前
    可以试试多买 2 块硬盘,各种系统换着来。

    一块装一个系统。
    northisland
        28
    northisland   50 天前
    windows 不错,资要你不是开发 c++。
    newmlp
        29
    newmlp   50 天前
    当然 Windows+虚拟机
    话说我从入职到跑路 3 年多都没重装过系统,你这咋重装这么频繁
    lewinlan
        30
    lewinlan   50 天前 via Android
    重装?是否有国产流氓软件 盗版软件 盗版系统
    beichenhpy
        31
    beichenhpy   50 天前
    为什么要重装?。。现在 wsl2+docker 满足大部分需求了吧
    hejingyuan199
        32
    hejingyuan199   50 天前
    我觉得是个人工作方法导致的,和操作系统无关。

    我有个 ubuntu 机器,由于我总是瞎操作,每几个月就重装一次。
    因为这个机器定位就是各种随便折腾,不放重要文件材料。

    我的 win10 的本子,我都小心翼翼用,三年前买来,还没有重装过。
    因为这个机器定位是稳定输出。

    所以,一个机器根本不够,起码得来 3 台。
    ghost024
        33
    ghost024   50 天前   ❤️ 1
    如果不喜欢折腾还想用 linux 建议 openSUSE,manjaro 还要配置输入法,openSUSE 直接就配置好了(虽然一个输入法配置起来不难,但是能够为中国用户弄好输入法我觉得这个发行版还是挺上心的),我不用 manjaro 是因为今年的 1 月 19 号的更新中放弃了对我笔记本声卡的支持,但又要滚动更新,才用上 openSUSE tumbleweed,从此之后再也没出过问题。
    GiantHard
        34
    GiantHard   50 天前
    当然是 Linux 啊,定期 rclone 备份一下系统,基本上很难翻车。换了两三台电脑,系统每次都是用备份还原的,稍微用 mhwd 安装一下显卡驱动,然后重建一下 grub 引导,花不了多久时间就可以投入工作了。
    oneisall8955
        35
    oneisall8955   50 天前 via Android
    为啥要重装,公司电脑用了好久了,几乎不关机,也没卡顿。盲猜用了奇奇怪怪的软件,或者文件不归类,C 盘越来越大?
    公司电脑配置:U:N 卡 9100,1T 固态,内存 16G,3 个个盘 C 盘 100G,其他对半
    shmilwdc
        36
    shmilwdc   50 天前 via iPhone
    @love 但是兼顾一个工作用的软件的话,还是 Mac 综合体验好
    coolesting
        37
    coolesting   50 天前 via Android   ❤️ 1
    我 win 7 用了十年没重装过一次,开机还保持 5 秒内进入桌面。里面装了 7~8 种语言和框架,几个数据库,几个服务器,还有一个虚拟机用来跑 Linux 的。 像浏览器,编辑器这些实验和开发软件一大堆。

    个人认为,系统稳不稳定,还是看个人习惯和使用,和系统本身没有太大联系。
    qiyue0726
        38
    qiyue0726   50 天前
    @x9sec 快照貌似是恢复的时候会很麻烦,迁移虚拟机的时候
    love
        39
    love   50 天前
    @shmilwdc 程序员工作软件不就是编程软件?又不是文员一定要配上 office
    qiyue0726
        40
    qiyue0726   50 天前
    @ikas 我现在笔记本用的 ltsc,最近系统更新总是有一个补丁安装不上,导致后面补丁也不行,试了一些方法都不行,后面可能哪天心血来潮又重装了
    zhuangzhuang1988
        41
    zhuangzhuang1988   50 天前
    一直 windows
    别的用不惯.
    也不重装.
    w468750
        42
    w468750   50 天前
    win10, ubuntu, Manjaro 都折腾过
    要说合理安全稳定,建议无脑上 mac,太爽了,用来工作学习什么的非常合适,除了游戏不合适
    HibernatePlus
        43
    HibernatePlus   50 天前
    废鸡巴话除了 mac 有能用的?
    DiamondYuan
        44
    DiamondYuan   50 天前
    cloud ide , 通过配置文件指定开发所需要的环境。
    点击链接自动启动一个容器,把环境配置好,可以保证环境 100% 稳定。
    yjxjn
        45
    yjxjn   50 天前
    ThinkPad
    AstroProfundis
        46
    AstroProfundis   50 天前
    我现在是长期 Linux 了,然后因为代码几乎都会及时 push 到远端所以其实本地资料的备份也不是太紧要
    namelosw
        47
    namelosw   50 天前
    虽然 MacOS 本身不稳定

    但是考虑到人或多或少都是多动症, 还是 MacOS 用起来最“稳定”
    wangxn
        48
    wangxn   50 天前
    直接用 Windows 就行了,Linux 桌面版基本是给自己找不自在。
    我个人也不用什么虚拟机之类的,直接用原生的程序效率最高。
    我另外有一个二手笔记本装了 Ubuntu Server,用来跑一些不会关的程序,如科学上网,RSS Reader 之类的。
    xiadong1994
        49
    xiadong1994   50 天前
    台式机装 server 版 linux,笔记本用 mac,开发 vscode+ssh+vim,完美。
    Mirage09
        50
    Mirage09   50 天前 via iPhone
    MacBook Pro+ cloud desktop,最近要求统一把 cloud desktop 从 al2012 迁移到 al2
    Cbdy
        51
    Cbdy   50 天前 via Android
    可以考虑用 Docker/Java/Node.js
    boris93
        52
    boris93   50 天前 via iPhone
    工作用单位配的 MacBook Pro
    自己写东西玩用自己的 MacBook Pro
    游戏机是 Win10

    话说我咋从来没更新出问题…倒是我从不手动点更新,就是等它自动推送
    据说有的更新会在你手动点检查更新的时候提前给你装上,用你的机器来测试
    petercui
        53
    petercui   50 天前
    java,go,python,nodejs,前端,做这些就 MacBook Pro
    chiu
        54
    chiu   50 天前 via Android
    因为更新而重装的,不更新就 OK 吧。
    imzcg2
        55
    imzcg2   50 天前 via Android
    docker 吧!代码及时上传
    zhoujia456888
        56
    zhoujia456888   50 天前
    你要是觉得 Win10 更新麻烦。你可以装 Win10 LTSC 的版本
    java+web 推荐的是 Mac OS (黑果选对硬件装起来很简单啊,2020 款的小新 Pro 咸鱼 4K 掏的,我就装黑果在用,有现成的 EFI )
    至于 linux 的话,装 Manjaro
    如果不常用 linux,建议装 Win10 LTSC,然后开个虚拟机里面装 linux
    不是很推荐直接装 linux 在硬盘上来使用,毕竟有些软件没有( QQ,微信之类的)
    以前我也喜欢重装系统,有个什么垃圾软件污染了注册表之后就重装一下,换了 Mac OS 之后就没考虑过系统的问题了。
    Foxalone
        57
    Foxalone   50 天前
    Mac 挺好的呀,也方便带去图书馆学习用。当然还是看你个人,我在公司用的是 mac,我自己也有一台 mac (自己开发和学习用),win 就是游戏机,有时候测试也用这个。其实黑苹果也不难,现在都是固态了,安装也挺快了(就是要经常用机械盘备份一下,防止更新出事)。买个方便黑苹果的笔记本也挺好的。如果用 linux 的话,可以用 manjaro 。用起来挺舒服的。
    zone10
        58
    zone10   50 天前
    Win10
    WSL2 + Docker Desktop + Hyper-V
    Oracle VirtualBox (最新版支持 Hyper-V) + Ubuntu 20.04LTS Server + VS Code Remote
    有一说一, Linux 的桌面就算了, 都是浓屑, 经常出问题, 还有恶心人的 QQ 微信, Linux 推广的最大阻力得给鹅厂记一大功
    guisheng
        59
    guisheng   50 天前
    不都是 本机 windows 开发装几台 linux 虚拟机。个人觉得在 windows 中安装 docker 有点不干净,所以放在虚拟机中去安装了,放在机械硬盘中 随便怎么重装它都还在。
    cookgo
        60
    cookgo   50 天前
    Macbook Pro 做开发机,一直没有崩过
    heart4lor
        61
    heart4lor   50 天前
    Win10,本地装个 MSYS,配个 linux 主机树莓派之类的
    BeautifulSoap
        62
    BeautifulSoap   50 天前 via Android   ❤️ 1
    都 win10 了,何必在宿主配置环境

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

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

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

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

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

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

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

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

    只要虚拟机备份好了,随便迁移
    cheng6563
        70
    cheng6563   49 天前
    除非你在某些脱离国产软件的外企,否则强烈建议不要使用桌面版 Linux
    runliuv
        71
    runliuv   49 天前
    每月或每周,用 WIN10 的系统备份即可。
    WIN7 我几年不重装正常。除非我无聊重装玩。

    在楼主没讲明是什么软件开发时,一股的推 LINUX ,MAC OS,不合适。
    haokuderen
        72
    haokuderen   49 天前
    centos 都没人推荐吗?
    ZxykM
        73
    ZxykM   49 天前
    ubuntu server 虚拟机然后 ssh
    coolesting
        74
    coolesting   49 天前 via Android
    @ericguo 你猜中一点,我基本上没打过补丁,从不更新,没有杀毒软件,没有常驻监控软件,没有桌面飘浮清内存之类的程序。

    正常上网,一般工作用,偶尔看下视频。
    还有 ,个人不熟悉的软件一律不装,要装也进虚拟机去装。
    bthulu
        75
    bthulu   49 天前
    @BeautifulSoap wsl2 崩溃的时候你就知道了, 启动就立马给你重装了个 wsl2 环境, 原有数据全部丢失
    dayeye2006199
        76
    dayeye2006199   49 天前
    ubuntu + i3, 尽量少装点东西。
    别和我提 office,我用 office365 web 版本
    BeautifulSoap
        77
    BeautifulSoap   49 天前
    @bthulu 建议 wsl2 的的 vhdx 文件移动到别的盘符,方便备份管理。至于崩溃目前没遇到过,不知道怎样才能让 wsl2 崩溃? 如果出现了 wsl2 崩溃数据丢失那肯定属于恶性 bug 了,可以去 wsl2 的 github 项目里提 issue
    BeautifulSoap
        78
    BeautifulSoap   49 天前
    @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 将虚拟机里的图形界面传送到宿主客户端渲染就行了,性能比在虚拟机里直接跑整个图形桌面好
    faqqcn
        79
    faqqcn   49 天前
    @BeautifulSoap

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

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

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

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

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

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

    端口占用的根本原因在于微软改了动态端口范围,这个问题不光在 Hyper-V 下会出现,在其他场景下也有出现,触发条件我不清楚,只能说是 Hyper-V 在什么条件下触发了这个问题。但是你说这问题在不在 Hyper-V 我觉得不在,因为造成这个问题的根本原因还是微软改了端口范围
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2826 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:04 · PVG 13:04 · LAX 22:04 · JFK 01:04
    ♥ Do have faith in what you're doing.