V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chaleaochexist
V2EX  ›  程序员

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

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

    因为 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
        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 了解一下
    liprais
        22
    liprais  
       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 方面的 依赖于服务器的硬件 所以不能本地开发
    chinafeng
        27
    chinafeng  
       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   ·   实用小工具   ·   5598 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 06:46 · PVG 14:46 · LAX 22:46 · JFK 01:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.