小讨论,公司不提供带 GUI 的 Linux .但是我想在 Linux 环境下敲代码. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
chaleaochexist
V2EX    程序员

小讨论,公司不提供带 GUI 的 Linux .但是我想在 Linux 环境下敲代码.

  •  
  •   chaleaochexist 2019-01-23 13:49:11 +08:00 10119 次点击
    这是一个创建于 2456 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为 lz 本份工作和上一份工作都遇到了这个问题.相信论坛上一定也有遇到类似情况的同志.

    想问一下如何解决.

    1. windows 10 的 sublinux, 理论上还是 ssh 远程调试.
    2. ssh 远程调试
    3. docker 远程调试
    4. 虚拟机
    5. ???

    ssh 远程调试的问题

    1. 嫌麻烦.同步不好容易出问题.
    2. 想临时修改第三方插件的话,同步代码有点费劲. 总之嫌麻烦. 多谢各位.

    本人 python 程序员.

    第 1 条附言    2019-01-23 16:36:00 +08:00
    被喷死了.
    不好意思是我母语没学好.

    简单来说,我就是想用一台本地的带 GUI 的 linux 桌面版做开发.

    但是手里只有一台 windows 笔记本和任意台 cmd linux 服务器.

    楼下各位 说的 vagrant 和 sftp 之类 都是远程调试方式.缺点是,代码同步容易出问题,还有就是 pip install 的三方插件不能及时修改(不能同步),当然手动配置可以的. -- 但是楼主感觉好麻烦.
    80 条回复    2019-03-26 18:00:29 +08:00
    neoblackcap
        1
    neoblackcap  
       2019-01-23 13:52:19 +08:00 via iPhone
    为什么你们修改代码不用进版本库?不用经过部署流程就发布?生产环境 hotfix ?有点厉害啊!
    tomczhen
        2
    tomczhen  
       2019-01-23 13:55:56 +08:00   1
    换家小公司。

    当个开发+运维+客服全干工程师,别说服务器装个 GUI 跑下 IDE 调试,直接锁了服务器跑路都行。
    chungzhao
        3
    chungzhao  
       2019-01-23 14:00:49 +08:00   5
    https://spencerwoo.com/dowww/ - 在 Windows 上用 WSL 优雅开发
    也可以考虑一下
    luckychenhaha
        4
    luckychenhaha  
       2019-01-23 14:09:50 +08:00
    vim 一把梭
    www5070504
        5
    www5070504  
       2019-01-23 14:11:32 +08:00
    虚拟机呗 带界面的 ubuntu 不好用吗 直接在共享目录里调试 调试完了就可以从 windows 上传
    zjsxwc div class="fr">     6
    zjsxwc  
       2019-01-23 14:14:27 +08:00
    关键字:idea+sftp
    realkenshinji
        7
    realkenshinji  
       2019-01-23 14:18:06 +08:00
    不带 GUI,那就 vim+tmux 咯
    yidinghe
        8
    yidinghe  
       2019-01-23 14:19:35 +08:00
    自己电脑上装个 Linux 桌面不就是了,公司提供的到底是什么?
    CallMeReznov
        9
    CallMeReznov  
       2019-01-23 14:20:18 +08:00   1
    axeojpwt
        10
    axeojpwt  
       2019-01-23 14:25:10 +08:00
    emacs 可以。
    bumz
        11
    bumz  
       2019-01-23 14:25:58 +08:00
    @CallMeReznov #9 不过为啥链接发的是过时的 fork 而不是原项目。。。
    tomychen
        12
    tomychen  
       2019-01-23 14:27:24 +08:00
    大把的方法啊
    win+ IDE -> push 到 linux
    win+ editor-> push 到 linux
    win+ VM-> push 到 Linux
    Linux Desktop -> push 到 Linux

    还有终极 vim 大法
    CallMeReznov
        13
    CallMeReznov  
       2019-01-23 14:31:41 +08:00
    @bumz #11 噢 我之前直接 fork 的 随点进去忘记找原连接给你了 不好意思
    https://github.com/Hello-Linux/Ansible-VIM-IDE
    jmc891205
        14
    jmc891205  
       2019-01-23 14:44:05 +08:00
    vim/emacs 呀
    chinvo
        15
    chinvo  
       2019-01-23 14:45:33 +08:00 via iPhone
    你这意思是大公司就提供带 gui 的 Linux 服务器了?

    要开发在本地开发,别乱搞服务器
    quinoa42
        16
    quinoa42  
       2019-01-23 14:47:28 +08:00
    ssh blabla -t tmux
    likuku
        17
    likuku  
       2019-01-23 14:50:56 +08:00 via iPhone
    学一下 vim/Emacs 不碍事,如学会骑自行车 /游泳,
    一劳永逸,终身受益,还可以参与 /围观 vim vs Emacs 永不完结的互殴
    Chingim
        18
    Chingim  
       2019-01-23 15:07:49 +08:00 via Android
    卧槽。。。想直接搞服务器
    privil
        19
    privil  
       2019-01-23 15:09:03 +08:00   2
    运维听了想打人……服务器装 gui
    ClutchBear
        20
    ClutchBear  
       2019-01-23 15:10:24 +08:00   1
    vagrant 了解一下
    pychram 里面直接支持 vagrant 远程调试的.
    启动 vagrant 后,
    pycharm 里面 python 解释器设置到 vagrant, 就可以了.
    vagrant 是操作的宿主 windows 的目录.
    fyibmsd
        21
    fyibmsd  
       2019-01-23 15:10:30 +08:00
    Xming 了解一下
    F281M6Dh8DXpD1g2
        22
    F281M6Dh8DXpD1g2  
       2019-01-23 15:10:35 +08:00   1
    wsl 那垃圾磁盘性能,能用?
    sonyxperia
        23
    sonyxperia  
       2019-01-23 15:10:44 +08:00
    公司给你什么你就用什么
    除非自己开公司
    expy
        24
    expy  
       2019-01-23 15:13:35 +08:00
    是我阅读理解做不出来么?楼主哪里提到服务器上直接操作了?
    pkookp8
        25
    pkookp8  
       2019-01-23 15:14:43 +08:00 via Android
    世界上有三种编辑器。你说选哪种
    vim
    emacs
    其他
    vissssa
        26
    vissssa  
       2019-01-23 15:14:46 +08:00
    @chinvo 又说到大小公司么、、、可能他做的是 DL 方面的 依赖于服务器的硬件 所以不能本地开发
    akafeng
        27
    akafeng  
       2019-01-23 15:16:37 +08:00
    是我理解有问题吗,线上生产环境服务器一把梭?
    boris1993
        28
    boris1993  
       2019-01-23 15:27:00 +08:00 via Android
    直接操服务器???这么牛逼的吗???
    肯定是本地真机或者虚拟机装 Linux 啊
    如果给你配的开发机没有 GUI 那就找领导、IT 啥的反映一波吧
    daviswei
        29
    daviswei  
       2019-01-23 15:33:55 +08:00
    办公机的硬盘上划个三五十 G 空间,自己装个 linux,然后 grub 配一下,双系统不就皆大欢喜了
    mason961125
        30
    mason961125  
       2019-01-23 15:35:48 +08:00
    python...这不 vagrant 一把梭就完事了?
    yulgang
        31
    yulgang  
       2019-01-23 15:40:05 +08:00
    没太明白,服务器不装 GUI ?我们的也都不装 GUI,要调试在集成环境调。
    如果确实需要在生产环境服务器上使用 GUI,可以在本地电脑上装个 x server,然后将它转发到服务器上就可以启动服务器上的图型界面的程序了,窗口出现在本地电脑上。
    xpresslink
        32
    xpresslink  
       2019-01-23 15:41:18 +08:00
    这个问题都要问还敢说是 Python 程序猿
    xia0pia0
        33
    xia0pia0  
       2019-01-23 15:46:25 +08:00
    pycharm 配置远程环境运行及部署吧,应该能满足你的需求,自动 Push 代码以及运行、断点调式功能都可以的
    ihainan
        34
    ihainan  
       2019-01-23 15:48:35 +08:00
    @chungzhao WSL 的坑太多了…
    ducklyl
        35
    ducklyl  
       2019-01-23 16:02:31 +08:00
    服务器装 gui? gui 会占用服务器的性能,不可能这样干。
    jetyang
        36
    jetyang  
       2019-01-23 16:08:30 +08:00
    ssh 登录到 Linux,Windows 上 ssh client 一大把,然后使用 vim 或 emacs 编程
    xiaohanliang
        37
    xiaohanliang  
       2019-01-23 16:08:38 +08:00
    Goland/IntelliJ/Clion -> Settings -> Build,Execution,Deployment -> Deployment -> 点击`+` 添加 SFTP server
    ivechan
        38
    ivechan  
       2019-01-23 16:09:01 +08:00
    vim 大法好~
    chaleaochexist
        39
    chaleaochexist  
    OP
       2019-01-23 16:31:31 +08:00
    @yidinghe windows 10 笔记本 和 linux 云主机.
    lithiumii
        40
    lithiumii  
       2019-01-23 16:34:20 +08:00
    python 啊,试试用 jupyter lab 敲代码,ssh 把 web ui 转发到本地
    zzzhbooo
        41
    zzzhbooo  
       2019-01-23 16:38:02 +08:00
    找个 sftp gui 客户端如 FileZilla,cyberduck,在本地使用顺手的编辑器打开 linux 服务器的文件
    hovenrech
        42
    hovenrech  
       2019-01-23 16:38:25 +08:00
    我是这么玩的:vscode,默认 terminal 用 WSL ;需要 Linux 编译就切换到 terminal 下敲命令,需要 windows 编译就用 vscode 的 recipe (这个我只用过 latex 默认的)
    zzzhbooo
        43
    zzzhbooo  
       2019-01-23 16:48:09 +08:00
    sftp 用到现在没遇到过代码同步错误的问题,即使公司服务器在美国,慢的时候 ssh 延迟好几秒。
    使用 virtualenv 加 requirement.txt 来同步包有什么麻烦的
    ranwu
        44
    ranwu  
       2019-01-23 16:52:18 +08:00
    你的笔记本操作系统换成 linux 不就行了?
    jdhao
        45
    jdhao  
       2019-01-23 16:52:44 +08:00
    笨办法,在 Windows 上配置和服务器一样的环境,Windows 写代码,然后传到 Linux 上。

    或者直接在 Linux 上把环境配好,使用 Vim 来写代码,不过需要好好配置一番,否则写代码还是不如 IDE 那么方便。
    Python 开发的话,可以参考我的配置 https://jdhao.github.io/2018/09/05/centos_nvim_install_use_guide/ ,我也是在 Linux 服务器上写代码(无 GUI,深度学习模型,必须用有 GPU 的服务器)。
    king2014
        46
    king2014  
       2019-01-23 16:55:58 +08:00
    vagrant 代码同步有什么问题?
    tabris17
        47
    tabris17  
       2019-01-23 17:15:46 +08:00
    顺路问问,VSCode 的 Language Server 远程调试究竟怎么用?
    66beta
        48
    66beta  
       2019-01-23 17:25:12 +08:00 via Android
    那么你的 Windows 电脑为什么不能装 Linux 呢?
    chaleaochexist
        49
    chaleaochexist  
    OP
       2019-01-23 17:40:15 +08:00
    @zzzhbooo 偶尔会改包里面的源码.
    xfspace
        50
    xfspace  
       2019-01-23 17:40:50 +08:00 via Android
    选择题
    上 Linux
    换 MacOS
    chaleaochexist
        51
    chaleaochexist  
    OP
       2019-01-23 17:41:24 +08:00
    @king2014 vagrant 本质还是一个 virtualbox.我拍脑袋猜也是 ssh 方式 调试吧?
    zzzhbooo
        52
    zzzhbooo  
       2019-01-23 17:57:18 +08:00
    @chaleaochexist 如果改了源码那这个包就相当于是你自己的包了,需要自己进行管理维护,和 pip 没有联系了
    baicheng10
        53
    baicheng10  
       2019-01-23 18:01:40 +08:00
    1 再买一台笔记本装 linux
    2 手中笔记本搞个双系统
    3 手中笔记本干掉 WIN 装 LINUX
    Asan
        54
    Asan  
       2019-01-23 19:29:48 +08:00 via Android
    公司不配 Mac,我想在 Mac 上敲代码,然后我就用了自己的 Mac。这事儿有那么难吗?你自己在本儿上装个有 GUI 的 Linux 妥妥的。
    youngxu
        55
    youngxu  
       2019-01-23 19:32:03 +08:00 via Android
    自己的需求,自己买电脑
    weyou
        56
    weyou  
       2019-01-23 19:37:52 +08:00 via Android
    服务器上安装 samba,共享目录映射到本地磁盘,跟在本地开发没啥两样
    mason961125
        57
    mason961125  
       2019-01-23 20:22:14 +08:00 via iPhone
    @chaleaochexist vagrant 是直接把你本地的目录映射过去的,所以哪里有复制的问题?
    xydche
        58
    xydche  
       2019-01-23 20:36:32 +08:00 via Android
    hyper-v?
    sunzongzheng
        59
    sunzongzheng  
       2019-01-23 21:28:34 +08:00
    给你的笔记本不是随便你自己装系统?
    FrankHB
        60
    FrankHB  
       2019-01-23 22:29:53 +08:00
    @Asan 有的有保密要求,不能用自己的设备,疼得 1b ……虽然 LZ 大概也没这问题了。
    king2014
        61
    king2014  
       2019-01-23 22:37:57 +08:00 via Android
    @chaleaochexist 有文件共享映射,wondows 下直接调试 windows 下文件代码,浏览器直接显示效果,不需要进 ssh 到系统
    scriptB0y
        62
    scriptB0y  
       2019-01-23 22:39:08 +08:00
    我只用 TUI 哈哈,我所有的开发工具都是 TUI 的。
    sinxccc
        63
    sinxccc  
       2019-01-23 23:29:20 +08:00
    呃,方法多的是啊…

    1. 如果你能习惯 TUI 的话,ssh/mosh 到服务器上,然后 tmux/screen 外加 VIM/Emacs 随便你组合

    2. 如果你能习惯开发工具在 Windows 上的移植版本的话,可以考虑 Emacs + tramp、share nfs/samba 分区的方式

    3. 如果你就是想用 Linux 上的 GUI 工具,但是不纠结 WM 的话,可以 ssh X forwarding 或者 NoMachine

    4. 如果你就是想用 Linux 上的 GUI 工具,而且希望连 WM 一起用的话,可以 VNC/NoMachine,ssh X forwarding 也能做到就是别扭了点。
    Trim21
        64
    Trim21  
       2019-01-24 00:32:17 +08:00 via Android
    pycharm 远程调试运行基本跟本机体验一样啊,虽然本质上还是 ssh …
    Trim21
        65
    Trim21  
       2019-01-24 00:40:44 +08:00 via Android
    顺便我记得如果有对应文件的写权限 pycharm 是可以直接改 pip 安装的第三方库的(用转到定义功能,跳到对应文件之后)
    msg7086
        66
    msg7086  
       2019-01-24 01:06:02 +08:00   1
    关于主题的问题上面说了很多了我就不多说了。

    我只想问,上面那么多层楼是怎么脑补出“服务器”这三个字的,或者“生产服务器”这五个字的?
    jorneyr
        67
    jorneyr  
       2019-01-24 08:07:26 +08:00
    如果只是代码同步的话非常简单,搭建一个 git 私服,自己再写一个简单的 Socket 通讯程序,再创建几个 alias 命令,修改代码后执行命令:git 提交 push 到服务器,然后 Socket 通知编译运行端更新代码,编译端实时收到消息后执行 git 命令下载代码,执行编译命令,然后运行程序。
    dychenyi
        68
    dychenyi  
       2019-01-24 09:20:42 +08:00
    楼主估计不熟悉 vim。
    不熟 vim 的话那么笔记本配置好就装 vm+gui linux。 或者自己带电脑装 gui linux。 解了。
    ClutchBear
        69
    ClutchBear  
       2019-01-24 09:43:27 +08:00   1
    vagrant 不是同步代码的,
    win 系统下就不安装 python.
    所有开发都在 vagrant 里面,
    哪里来的第三方库同步的问题.
    XxxxD
        70
    XxxxD  
       2019-01-24 10:20:42 +08:00
    1,在来个电脑装 linux
    2,window 上再装个 linux,我记得 win10 好像支持这个
    rebackhua
        71
    rebackhua  
       2019-01-24 10:43:41 +08:00
    linux samba 共享,windows mount 直接 gui 编辑,运行用 ssh
    yoshiyuki
        72
    yoshiyuki  
       2019-01-24 10:59:19 +08:00
    @neoblackcap 并没有文字说楼主公司提供的机器就是生产环境
    qiukun
        73
    qiukun  
       2019-01-24 12:18:40 +08:00
    同步很麻烦,不过如果加一个约束,一次复制到本地,然后只在本地编辑,单向上传到服务器,就还行,textmate jetbrains' IDEs 都有相关功能。远程调试问题倒不大。
    libook
        74
    libook  
       2019-01-24 12:50:38 +08:00
    如果 windows 机器是台式机,可以装虚拟机,免疫各种驱动问题。我曾经有一年多的时间是 Win10+VirtualBox+Arch,上班时间全屏办公,下班时间暂停虚拟机打游戏。。。

    Windows 上可以用 Cygwin 装 XServer,我现在用 XServer 跑 WSL 的 GUI,不过不用于工作,只用于日常使用一些小工具,因为 WSL 的性能不是很好,跑重型 IDE 可能压力会比较大(我没试过)。

    X 是可以在网络上用的,也就是说,你有一台 Linux 机器,可以直接把 GUI 传输到 Windows 机器上的 XServer 上展示,理论上可行,性能可能会比 WSL 好很多。https://askubuntu.com/questions/203173/run-application-on-local-machine-and-show-gui-on-remote-display
    或者 VNC 也可以,简单方便,就是得找个顺手的 VNC 客户端。
    X 和 VNC 原理不一样,X 是直接把 GUI 对象传递到 XService 上,由 XServer 来决定如何布局和展示; VNC 是先在本地渲染好界面,再投屏到远程客户端上; X 是 Linux 机主动推送到 Windows 机上,VNC 是 Windows 机主动去 Linux 上取画面。
    tourist2018
        75
    tourist2018  
       2019-01-24 13:03:54 +08:00
    macOS or 虚拟机
    fy
        76
    fy  
       2019-01-24 13:40:34 +08:00
    把自己笔记本安装成 Linux,完事
    chaleaochexist
        77
    chaleaochexist  
    OP
       2019-02-28 17:35:20 +08:00
    @ClutchBear 你好,所以,
    1. 我们的 mysql server redis 等等也可以放到 vagrant 当中是吗?
    windows 宿主机里面什么都不需要了.
    2. 我们 windows 中.只有项目代码.但是项目依赖的三方代码(就譬如 django 好了).我想在 pycharm 中直接修改 django,请问是否可行?
    chaleaochexist
        78
    chaleaochexist  
    OP
       2019-02-28 17:36:14 +08:00
    @mason961125
    @king2014
    @mason961125

    你好,所以,
    1. 我们的 mysql server redis 等等也可以放到 vagrant 当中是吗?
    windows 宿主机里面什么都不需要了.
    2. 我们 windows 中.只有项目代码.但是项目依赖的三方代码(就譬如 django 好了).我想在 pycharm 中直接修改 django,请问是否可行?
    ClutchBear
        79
    ClutchBear  
       2019-02-28 20:39:16 +08:00   1
    @chaleaochexist #77
    1: windows 宿主机只有一个 pycharm ide 而已, 当然代码也存到 windows 硬盘里面
    2: 只要是项目代码里面有的都可以修改, 你说 python 目录里面 lib 的肯定需要 ssh 进入虚拟机修改
    impressioncr
        80
    impressioncr  
       2019-03-26 18:00:29 +08:00
    https://github.com/codercom/code-server
    服务器上运行 vs code
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1263 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 17:27 PVG 01:27 LAX 10:27 JFK 13:27
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86