开发人员如何“write on MacOS, Run in Linux ”?

2018-02-19 20:16:38 +08:00
 billows

1、日常工作习惯了在 MacOS 下使用 VSCODE 做开发,但是产品运行环境是在 CentOS 上,有时候会用 Docker 去做编译,但是有些环境 docker 也胜任不了,就只能搭建虚拟机,开共享文件夹,达到在 macos 上写代码,在虚拟机中去编译运行的效果。。

2、另外,有时候需要做探索方面的工作,需要装各种各样的环境,如果一直在 macos 上做,也容易导致 macos 越来越臃肿,我想到的办法也是弄虚拟机,虚拟机有快照,弄完了恢复就行。但是装的虚拟机的桌面在 mbpr 上的显示效果都好渣啊。。

3、以上,有时候会觉得自己是被 macos 的给毒害了,😓。。。。

除此之外,还有什么其他方法吗?求大佬指教。

11321 次点击
所在节点    程序员
49 条回复
whileFalse
2018-02-19 20:18:30 +08:00
你用的啥语言,和 OS 相关度很大吗,或者有很多系统调用?
zhangxiao
2018-02-19 20:21:19 +08:00
举几个 Docker 不够用的例子?
HuHui
2018-02-19 20:21:31 +08:00
试试 vagrant
billows
2018-02-19 20:22:57 +08:00
@whileFalse 语言和 OS 的相关度不大,但有些阶段会有相关技术只在特定系统下有效的,就可以理解成和 OS 相关度很大了。
eurokingbai2
2018-02-19 20:23:29 +08:00
sshfs
Philippa
2018-02-19 20:25:30 +08:00
编译成机器码以 Go 和 Rust 为例都很方便, Python 等 Docker 全部解决。隔离环境是进阶开发必备习惯。楼主趁机还要推动一下公司变化, 用 Docker 集群随便加机器容器并发隔离环境很好用的。
hujianxin
2018-02-19 20:25:48 +08:00
docker 什么情况不能胜任呢? docker 既可以作为开发环境,也可以作为生产环境,妥妥的替代虚拟机呀
billows
2018-02-19 20:26:16 +08:00
@zhangxiao libvrit 算是吧。 另外,docker 毕竟不是我最终的产品环境呀


@HuHui 有初步了解过这个,但是不是特别熟,据我所知 vagrant 是对 vbox、VM 等做了封装,撇开可复用性不谈,就我这里侧重的点而言,和我提到的解决方案有什么优势吗?
qq292382270
2018-02-19 20:26:19 +08:00
或许你需要再买一台机器..
sutra
2018-02-19 20:26:36 +08:00
主要区别就是 BSD-Style 的命令行参数和 GNU-Style 的命令行参数吧。
neoblackcap
2018-02-19 20:26:57 +08:00
首先你要对系统有了解,不要去调用平台相关的 API。如果你对性能要求不是特别高,请优先使用跨平台的库。第三你应该将你代码分成平台相关与平台无关的,平台无关的代码写成一个动态库。先对其进行测试,之后再编写对应的平台相关代码,最后进行集成。具体做法你可以查看 UNP。里面的代码是在 FreeBSD 上面跑的,但是代码是在 OS X 上写的
billows
2018-02-19 20:34:41 +08:00
@neoblackcap 我不是经常要这么弄,就是最近刚好要使用 libvrit 相关的东西,牵涉到 KVM、QEMU 等。现在想写点测试代码,就出现这些情况了。


@Philippa 恩,就是 GO 语言。KVM 这个无解啊。


@hujianxin KVM 相关,比 docker 更底层一些了。。。
zjsxwc
2018-02-19 20:39:17 +08:00
vagrant 楼主没用过?
WatcherHangzhou
2018-02-19 20:42:02 +08:00
vagrant +1
HuHui
2018-02-19 20:42:48 +08:00
@billows 我指个方向而已,用不用看你自己需求
billows
2018-02-19 20:44:01 +08:00
@zjsxwc
@WatcherHangzhou
@HuHui

据我所知 vagrant 是对 vbox、VM 等做了封装,撇开可复用性不谈,就我这里侧重的点而言,和我提到的解决方案有什么优势吗?
linghutf
2018-02-19 20:46:14 +08:00
从来不用 linux 桌面,parallel 开无界面 linux 干活
zjsxwc
2018-02-19 20:53:25 +08:00
@billows

```
据我所知 vagrant 是对 vbox、VM 等做了封装,撇开可复用性不谈,就我这里侧重的点而言,和我提到的解决方案有什么优势吗?
```

你提到的解决方案就是虚拟机里搞啊,和 vagrant 没本质区别,但 vagrant 使用 Vagrantfile 文本更方便管理,一条命令可以搞定的你只用虚拟机里乱七八糟的事情。


https://www.vagrantup.com/intro/index.html
```
Why Vagrant?
Vagrant provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team.

To achieve its magic, Vagrant stands on the shoulders of giants. Machines are provisioned on top of VirtualBox, VMware, AWS, or any other provider. Then, industry-standard provisioning tools such as shell scripts, Chef, or Puppet, can automatically install and configure software on the virtual machine.
```
lfzyx
2018-02-19 20:56:54 +08:00
pathbox
2018-02-19 20:57:56 +08:00
go 可以交叉编译。macOS 也是 unix 内核,我在 mac 下开发 Go 项目没遇到什么问题

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

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

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

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

© 2021 V2EX