avatar
w*s
1
【 以下文字转载自 Medicine 讨论区 】
发信人: whiteclouds (/ 参考消息 /), 信区: Medicine
标 题: 大量证据:自闭症是疫苗损伤
发信站: BBS 未名空间站 (Tue Sep 21 21:45:55 2010, 美东)
avatar
l*r
2
看pjang博客说现在是只有一份了。前天跟hr讨论,hr专门提及要一式四分,说要一个
表打印四份,签四个名。
有谁知道吗?尤其是最近公司帮file刚签过名的说说?
avatar
w*g
3
好好的在看电视剧,LD重新make了一个docker,然后pip还是github上软件升级了,
全都screw up。现在没法看剧了。以后dockerfile凡是想reproduce的,一律都得
加上软件版本号,最好把package全都下到本地。
我自己也被同一个问题害过。搞一次比赛,还没完,中间tensorflow升级了,
theano升级了,scikit-image也升级了,升级跟赶投胎似的。日子没法过了。
avatar
w*s
4
发信人: toptip (土翁), 信区: Biology
标 题: Re: 大量证据:自闭症是疫苗损伤 (转载)
发信站: BBS 未名空间站 (Tue Sep 21 23:12:29 2010, 美东)
我对这种针对所有人群的方法比较恐惧。小孩一个月,三针疫苗下去,高烧,哭闹,食
量减少……
我觉得任何人都不敢打包票说对小孩以后的发育没有任何影响。如果是有影响,那么这
个统一的医学程序就非常可怕,影响的人群是非常大的。
我想不明白决定这个医学程序的人,胆子怎么这么大。又为什么所有的医生都遵循这个
程序。
当然没有说这个一定跟自闭症有关。

【在 w*********s 的大作中提到】
: 【 以下文字转载自 Medicine 讨论区 】
: 发信人: whiteclouds (/ 参考消息 /), 信区: Medicine
: 标 题: 大量证据:自闭症是疫苗损伤
: 发信站: BBS 未名空间站 (Tue Sep 21 21:45:55 2010, 美东)

avatar
n*s
5
I only submitted one to USCIS. I guess your HR will keep one and your lawyer
will keep one. Then they will give you one, maybe?
avatar
h*i
6
这就是为啥企业用Java。
用docker就得每个东东都具体到版本号吧,都用latest的话, 还用docker干嘛?

【在 w***g 的大作中提到】
: 好好的在看电视剧,LD重新make了一个docker,然后pip还是github上软件升级了,
: 全都screw up。现在没法看剧了。以后dockerfile凡是想reproduce的,一律都得
: 加上软件版本号,最好把package全都下到本地。
: 我自己也被同一个问题害过。搞一次比赛,还没完,中间tensorflow升级了,
: theano升级了,scikit-image也升级了,升级跟赶投胎似的。日子没法过了。

avatar
w*s
7
发信人: wdgca (全是骗银地), 信区: Biology
标 题: Re: 大量证据:自闭症是疫苗损伤 (转载)
发信站: BBS 未名空间站 (Thu Sep 23 01:11:13 2010, 美东)
问个白痴问题哈,
抗菌的东西选择这么多,为什么这些疫苗里面非得加有机汞呢?
大家连吃条鱼都担心重金属,而这些小娃娃用的东西,
为什么非得含汞?这里面到底是啥原理来着。大牛们出来科普下哈。
avatar
m*o
8
我的律师要了3份
avatar
w*g
9
自己混的没人教,这种事情都是吃过亏了才知道。不过python应该没有
java那种版本系统,无法做到多版本并存吧。这样哪天要装一个新的包,
不还得一堆依赖问题?

【在 h*i 的大作中提到】
: 这就是为啥企业用Java。
: 用docker就得每个东东都具体到版本号吧,都用latest的话, 还用docker干嘛?

avatar
c*r
10
你很喜欢转帖啊?其他的跟贴怎么不一起转了?
看来你选择性无视其他证据那是传统啊。我帮帮你吧:
avatar
H*e
11
3份
avatar
a*a
12

python有 env 吧,可以多版本并存

【在 w***g 的大作中提到】
: 自己混的没人教,这种事情都是吃过亏了才知道。不过python应该没有
: java那种版本系统,无法做到多版本并存吧。这样哪天要装一个新的包,
: 不还得一堆依赖问题?

avatar
b*n
13
LOL, //ding

你很喜欢转帖啊?其他的跟贴怎么不一起转了?
看来你选择性无视其他证据那是传统啊。我帮帮你吧:

【在 c******r 的大作中提到】
: 你很喜欢转帖啊?其他的跟贴怎么不一起转了?
: 看来你选择性无视其他证据那是传统啊。我帮帮你吧:

avatar
l*r
14
上面各位交了3份的,有没有问过三份儿都是上交移民局的,还是如noles猜测的三方各
留一份?
avatar
d*g
15
一看就是没做过CI的……

【在 w***g 的大作中提到】
: 好好的在看电视剧,LD重新make了一个docker,然后pip还是github上软件升级了,
: 全都screw up。现在没法看剧了。以后dockerfile凡是想reproduce的,一律都得
: 加上软件版本号,最好把package全都下到本地。
: 我自己也被同一个问题害过。搞一次比赛,还没完,中间tensorflow升级了,
: theano升级了,scikit-image也升级了,升级跟赶投胎似的。日子没法过了。

avatar
S*g
16
院长真是好人啊

【在 c******r 的大作中提到】
: 你很喜欢转帖啊?其他的跟贴怎么不一起转了?
: 看来你选择性无视其他证据那是传统啊。我帮帮你吧:

avatar
l*o
17
My attorney desires 4 copies.
avatar
d*g
18
(venv)$ pip freeze > requirements.txt
喷之前可不可以Google下蛤蛤

【在 w***g 的大作中提到】
: 自己混的没人教,这种事情都是吃过亏了才知道。不过python应该没有
: java那种版本系统,无法做到多版本并存吧。这样哪天要装一个新的包,
: 不还得一堆依赖问题?

avatar
l*a
19
其实对这种人最好办法就是无视,让他自个蹦跶,越搭理他越来劲。

【在 S*********g 的大作中提到】
: 院长真是好人啊
avatar
t*r
20
docker就是一个垃圾。
趁早别用
avatar
w*s
21
除了骂街的话你还欣赏些什么?
很好奇你母亲当年怎么搞胎教幼教的养出你这么个有机肥天才?

【在 c******r 的大作中提到】
: 你很喜欢转帖啊?其他的跟贴怎么不一起转了?
: 看来你选择性无视其他证据那是传统啊。我帮帮你吧:

avatar
h*i
22
其实Java也不能完全避免版本依赖问题,不过Java毕竟就一个标准的虚拟机,而且是向
下兼容性很好,依赖问题比任何native技术都要少太多了。Java在企业应用上的支配地
位不是白来的。

【在 w***g 的大作中提到】
: 自己混的没人教,这种事情都是吃过亏了才知道。不过python应该没有
: java那种版本系统,无法做到多版本并存吧。这样哪天要装一个新的包,
: 不还得一堆依赖问题?

avatar
t*j
23
院长你可真有耐心,还在这耗着那.....

【在 w*********s 的大作中提到】
: 除了骂街的话你还欣赏些什么?
: 很好奇你母亲当年怎么搞胎教幼教的养出你这么个有机肥天才?

avatar
d*r
24
"dockerfile reproduce" 你是指每次重新build一下以前的dockerfile来做image么?
为什么不直接存 docker image, push到public/private docker registry里,
然后每次用的时候 pull 下来?

【在 w***g 的大作中提到】
: 好好的在看电视剧,LD重新make了一个docker,然后pip还是github上软件升级了,
: 全都screw up。现在没法看剧了。以后dockerfile凡是想reproduce的,一律都得
: 加上软件版本号,最好把package全都下到本地。
: 我自己也被同一个问题害过。搞一次比赛,还没完,中间tensorflow升级了,
: theano升级了,scikit-image也升级了,升级跟赶投胎似的。日子没法过了。

avatar
L*8
25
我用这个 https://www.continuum.io
多个版本python并存 感觉很好用
https://www.continuum.io/blog/developer-blog/anaconda-and-docker-better-
together-reproducible-data-science
docker 学习了半天 感觉还是得手动配置dockerfile

【在 w***g 的大作中提到】
: 好好的在看电视剧,LD重新make了一个docker,然后pip还是github上软件升级了,
: 全都screw up。现在没法看剧了。以后dockerfile凡是想reproduce的,一律都得
: 加上软件版本号,最好把package全都下到本地。
: 我自己也被同一个问题害过。搞一次比赛,还没完,中间tensorflow升级了,
: theano升级了,scikit-image也升级了,升级跟赶投胎似的。日子没法过了。

avatar
h*i
26
对大多数老百姓,docker最主要的好处,就是可以直接用别人的image,不用自己装了
,试用各种高大上的服务器软件的壁垒被降低了很多。大多数人没这个精力和经验去成
功装好这些东西。VM又太笨重,所以docker就火了。

【在 L****8 的大作中提到】
: 我用这个 https://www.continuum.io
: 多个版本python并存 感觉很好用
: https://www.continuum.io/blog/developer-blog/anaconda-and-docker-better-
: together-reproducible-data-science
: docker 学习了半天 感觉还是得手动配置dockerfile

avatar
a*e
27
彻底解决依赖与软件配置问题,Nix 或者 NixOS,你值得拥有!
avatar
k*i
28
不指定那只能用default
天下乌雅一般黑

:好好的在看电视剧,LD重新make了一个docker,然后pip还是github上软件升级了,
:全都screw up。现在没法看剧了。以后dockerfile凡是想reproduce的,一律都得
avatar
w*g
29
你这个我早用过。但是这个不是写dockerfile的common practice。
照喷不误。
证据如下:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/docker
/Dockerfile
过几年再来make这个dockerfile,很可能也会失败。

【在 d********g 的大作中提到】
: (venv)$ pip freeze > requirements.txt
: 喷之前可不可以Google下蛤蛤

avatar
s*o
30
你是因为一定要用docker所以才用docker,还是docker的确帮你解决了很多问题?
avatar
w*m
31
storage贵,带宽也贵

【在 d*******r 的大作中提到】
: "dockerfile reproduce" 你是指每次重新build一下以前的dockerfile来做image么?
: 为什么不直接存 docker image, push到public/private docker registry里,
: 然后每次用的时候 pull 下来?

avatar
w*g
32
docker有一个非常重要的好处,就是保存的不光是一个image,而且保留了
产生这个image的recipe。另外docker用起来也比较方便。
还有,nvidia-docker能够包装GPU。
至于省资源,这个也好,但是我觉得不是决定性因素。

【在 s***o 的大作中提到】
: 你是因为一定要用docker所以才用docker,还是docker的确帮你解决了很多问题?
avatar
N*m
33
你也是老鸟了。你不搞版本控制?
每个源代码的版本对应一个docker image的版本。

【在 w***g 的大作中提到】
: 好好的在看电视剧,LD重新make了一个docker,然后pip还是github上软件升级了,
: 全都screw up。现在没法看剧了。以后dockerfile凡是想reproduce的,一律都得
: 加上软件版本号,最好把package全都下到本地。
: 我自己也被同一个问题害过。搞一次比赛,还没完,中间tensorflow升级了,
: theano升级了,scikit-image也升级了,升级跟赶投胎似的。日子没法过了。

avatar
N*m
35
自己local开一个,docker registry自己就有image,在nas上跑一个好了。

【在 w********m 的大作中提到】
: storage贵,带宽也贵
avatar
w*g
36
我没说清。你看Dockerfile里这一行:
RUN pip --no-cache-dir install \
ipykernel \
jupyter \
matplotlib \
numpy \
scipy \
sklearn \
pandas \
Pillow \
&& \
python -m ipykernel.kernelspec
所有用pip装的包都不带版本号。比如sklearn以后升级了换了API,
那么这个Dockerfile就废了。
我觉得版本控制解决不了这个问题。请帮我看一眼。

【在 N*****m 的大作中提到】
: 因为他们有版本控制啊
: https://hub.docker.com/r/tensorflow/tensorflow/tags/
: 当然无所谓
:
: docker

avatar
N*m
37
我是说,docker image带版本tags。
所以他们用latest package不行也没关系,rollback到上一个image就行了。
当然,我自己写Dockerfile,里面都带版本的。

【在 w***g 的大作中提到】
: 我没说清。你看Dockerfile里这一行:
: RUN pip --no-cache-dir install \
: ipykernel \
: jupyter \
: matplotlib \
: numpy \
: scipy \
: sklearn \
: pandas \
: Pillow \

avatar
w*g
38
我们后来的解决办法就是虽然dockerfile废了,但是image还在,
所以直接from那个image接着改。是不是就是这个意思?

【在 N*****m 的大作中提到】
: 我是说,docker image带版本tags。
: 所以他们用latest package不行也没关系,rollback到上一个image就行了。
: 当然,我自己写Dockerfile,里面都带版本的。

avatar
N*m
39
对的。这也是docker的好处之一。

【在 w***g 的大作中提到】
: 我们后来的解决办法就是虽然dockerfile废了,但是image还在,
: 所以直接from那个image接着改。是不是就是这个意思?

avatar
n*7
40
但是这样别人无法reproduce你的image
这对别人就是个黑箱了

【在 N*****m 的大作中提到】
: 对的。这也是docker的好处之一。
avatar
N*m
41
本来就是直接拿image用的。
最好还是在源码里加版本。

【在 n******7 的大作中提到】
: 但是这样别人无法reproduce你的image
: 这对别人就是个黑箱了

avatar
m*b
42
python 不是很熟
pip dependency 放到 requirements.txt 里, 不能加上版本号?
这个不是 docker 的问题,是 pip 的问题。

【在 w***g 的大作中提到】
: 我没说清。你看Dockerfile里这一行:
: RUN pip --no-cache-dir install \
: ipykernel \
: jupyter \
: matplotlib \
: numpy \
: scipy \
: sklearn \
: pandas \
: Pillow \

avatar
N*m
43
卫东的意思是这个Dockerfile写得不好。
其实卫东可以docker exec到上一个版本的tensorflow,用pip freeze拿到各个package
的版本号

【在 m***b 的大作中提到】
: python 不是很熟
: pip dependency 放到 requirements.txt 里, 不能加上版本号?
: 这个不是 docker 的问题,是 pip 的问题。

avatar
r*y
44
不能同意更多
dev, test 环境一致避免扯皮是另一个主要好处
product 环境也保持一致的项目也见过不少

【在 h*i 的大作中提到】
: 对大多数老百姓,docker最主要的好处,就是可以直接用别人的image,不用自己装了
: ,试用各种高大上的服务器软件的壁垒被降低了很多。大多数人没这个精力和经验去成
: 功装好这些东西。VM又太笨重,所以docker就火了。

avatar
d*r
45
我一直觉得只有用image是标准的可靠方法,dockerfile当辅助文档用.
怕操作image太慢太大, 自己就做个private的docker registry.
avatar
i*e
46
pip 能控制版本号吧。
容我喷一句:
这就是为啥软件工程得控制复杂度,连wdong 这样的大牛也不愿意仔细看文档。

【在 w***g 的大作中提到】
: 我没说清。你看Dockerfile里这一行:
: RUN pip --no-cache-dir install \
: ipykernel \
: jupyter \
: matplotlib \
: numpy \
: scipy \
: sklearn \
: pandas \
: Pillow \

avatar
w*z
47
这种故事天天都在发生。

【在 i******e 的大作中提到】
: pip 能控制版本号吧。
: 容我喷一句:
: 这就是为啥软件工程得控制复杂度,连wdong 这样的大牛也不愿意仔细看文档。

avatar
l*m
48
是的。pip install pkg==version

【在 i******e 的大作中提到】
: pip 能控制版本号吧。
: 容我喷一句:
: 这就是为啥软件工程得控制复杂度,连wdong 这样的大牛也不愿意仔细看文档。

avatar
n*3
49
大牛 all 不愿意仔细看文档。

在 inorange (orange) 的大作中提到: 】
avatar
w*g
50
我知道requirements.txt。但是我以前用requirements.txt装软件的时候也
碰到过坑。 比如这个
https://github.com/aaalgo/centos7-deep
现在很可能就跑不起来。而pip install pkg==version又很麻烦,因为开发的时候
肯定是对着当前版本开发的,只是测试完了需要记一下当前的版本号。
我觉得可能还真是只有存image是最靠谱的做法。毕竟pip install网上的东西还是
有可能失败。

【在 l*******m 的大作中提到】
: 是的。pip install pkg==version
avatar
d*g
51
最简单的道理:做开发和部署稳定不稳定其实不是最重要问题。最重要的问题是需要一
个可预测的环境,也就是可重现的环境。有了可预测和重现的环境才能谈稳定不稳定,
否则都是扯蛋
整个生态系统有各种不同的方案。OS级别各种有release的distro是一种方案,把OS放
VPS做成OS image是一种方案,再细化一点Docker这样的container做到app image也是
一种方案
在app级别,pip是所谓“源码级”锁定。有不少requirements.txt只写了最直接的lib
,dependencies都不管,这样的锁定是锁了白锁
你说的这些所谓坑在正经的公司都不是什么问题,这些都是infra/ops天天干的事情。
pip install也不会从网上直接download,CI的build可以先下到cache再一起打包,部
署的时候都是从local取不需要走网络,减少出错可能性。当然直接用Docker更容易
Docker这样的傻瓜工具好是好,但一定要建立在知其然的基础上,否则更坑。为啥我一
直推Arch Linux和FreeBSD?能搞定Arch Linux的人绝对不会在Ubuntu这种大路货上踩
坑,而体验过FreeBSD这种base和app清晰分离架构的人再也不愿意回到大多数有所谓
release系统但是什么乱七八糟都一锅炖的Linux distro的恶心世界里。CentOS更是垃
圾得不能再垃圾的末流货

【在 w***g 的大作中提到】
: 我知道requirements.txt。但是我以前用requirements.txt装软件的时候也
: 碰到过坑。 比如这个
: https://github.com/aaalgo/centos7-deep
: 现在很可能就跑不起来。而pip install pkg==version又很麻烦,因为开发的时候
: 肯定是对着当前版本开发的,只是测试完了需要记一下当前的版本号。
: 我觉得可能还真是只有存image是最靠谱的做法。毕竟pip install网上的东西还是
: 有可能失败。

avatar
d*r
52
从大牛对 Arch Linux, FreeBSD, Linux distro, CentOS 的评价来看
你是控制狂,哈哈哈... 像我等整不动 Arch 的菜鸟, 还是继续用 ubuntu 算了...
没想到对 FreeBSD 一支的评价这么高.
不过它协议好, 所以有些公司用在自己device上, 比如Mac,还有有些NAS

lib

【在 d********g 的大作中提到】
: 最简单的道理:做开发和部署稳定不稳定其实不是最重要问题。最重要的问题是需要一
: 个可预测的环境,也就是可重现的环境。有了可预测和重现的环境才能谈稳定不稳定,
: 否则都是扯蛋
: 整个生态系统有各种不同的方案。OS级别各种有release的distro是一种方案,把OS放
: VPS做成OS image是一种方案,再细化一点Docker这样的container做到app image也是
: 一种方案
: 在app级别,pip是所谓“源码级”锁定。有不少requirements.txt只写了最直接的lib
: ,dependencies都不管,这样的锁定是锁了白锁
: 你说的这些所谓坑在正经的公司都不是什么问题,这些都是infra/ops天天干的事情。
: pip install也不会从网上直接download,CI的build可以先下到cache再一起打包,部

avatar
d*g
53
CentOS这种垃圾系统的逻辑很有问题
默认repo软件不够多 ==> 开3rd-party repo / 自己编译 ==> 不就好了?
这尼玛啥都要自己编译了裸装野包了,还谈屁的安全和稳定。distro的意义就在于系统
性的打包和测试,同时很重要一点,系统一定是可预测和可重现的。一旦有野包进入系
统就白瞎了,况且小白太多,质量实在不忍直视
CentOS就是Linux界最大的笑话。RHEL不同是人家有付费支持,花钱消灾
Linux distro里Arch Linux的wiki质量最高。AUR这种社区混血包都甩CentOS/Debian/
Ubuntu的第三方野包几万条街
FreeBSD真是极乐世界。FreeBSD从发行模式上来说就是*nix界的Windows,OS和app分离

【在 d*******r 的大作中提到】
: 从大牛对 Arch Linux, FreeBSD, Linux distro, CentOS 的评价来看
: 你是控制狂,哈哈哈... 像我等整不动 Arch 的菜鸟, 还是继续用 ubuntu 算了...
: 没想到对 FreeBSD 一支的评价这么高.
: 不过它协议好, 所以有些公司用在自己device上, 比如Mac,还有有些NAS
:
: lib

avatar
w*g
54
我用过差不多两年arch。后来有一次更新了以后整个系统都破了。
人到了一定岁数,就不想折腾了。我现在想得就是怎么搞点deep
learning技术卖点钱,最近连目录都懒得整理了。Docker这种
东西,说实在不是来钱的那个技术层次,如果不是有immediate
needs,不值得细看。
我真正在意的核心技术,都是编译成一个static binary,放任何
2.6以上的linux上都能跑。windows 10也能跑。

【在 d*******r 的大作中提到】
: 从大牛对 Arch Linux, FreeBSD, Linux distro, CentOS 的评价来看
: 你是控制狂,哈哈哈... 像我等整不动 Arch 的菜鸟, 还是继续用 ubuntu 算了...
: 没想到对 FreeBSD 一支的评价这么高.
: 不过它协议好, 所以有些公司用在自己device上, 比如Mac,还有有些NAS
:
: lib

avatar
d*g
55
你的需求就是一个可预测可重现的环境。Docker不是你这样用的,你把Docker用成了
script而已。换成类似的例子,好比你发布产品直接发布源码,然后抱怨不能跨平台,
不是每个用户拿去都能编译过

【在 w***g 的大作中提到】
: 我用过差不多两年arch。后来有一次更新了以后整个系统都破了。
: 人到了一定岁数,就不想折腾了。我现在想得就是怎么搞点deep
: learning技术卖点钱,最近连目录都懒得整理了。Docker这种
: 东西,说实在不是来钱的那个技术层次,如果不是有immediate
: needs,不值得细看。
: 我真正在意的核心技术,都是编译成一个static binary,放任何
: 2.6以上的linux上都能跑。windows 10也能跑。

avatar
c*e
56
ubuntu也是这样的,提示你要不要upgrade,手滑点了yes,马上就把php version, mysql
version都给upgrade了。灾难来了,很多东西都变了,有的不支持了,有的出错了。
。。

【在 w***g 的大作中提到】
: 好好的在看电视剧,LD重新make了一个docker,然后pip还是github上软件升级了,
: 全都screw up。现在没法看剧了。以后dockerfile凡是想reproduce的,一律都得
: 加上软件版本号,最好把package全都下到本地。
: 我自己也被同一个问题害过。搞一次比赛,还没完,中间tensorflow升级了,
: theano升级了,scikit-image也升级了,升级跟赶投胎似的。日子没法过了。

avatar
a*e
57
重要的事情说三遍:
Deterministic software configuration is a solved problem.
Reproducible Linux environment is a solved problem.
System upgrade with rollbacks is a solved problem.
答案就是 Nix 或者 NixOS.

【在 d********g 的大作中提到】
: 你的需求就是一个可预测可重现的环境。Docker不是你这样用的,你把Docker用成了
: script而已。换成类似的例子,好比你发布产品直接发布源码,然后抱怨不能跨平台,
: 不是每个用户拿去都能编译过

avatar
f*d
58
PIP LD

【在 w***g 的大作中提到】
: 好好的在看电视剧,LD重新make了一个docker,然后pip还是github上软件升级了,
: 全都screw up。现在没法看剧了。以后dockerfile凡是想reproduce的,一律都得
: 加上软件版本号,最好把package全都下到本地。
: 我自己也被同一个问题害过。搞一次比赛,还没完,中间tensorflow升级了,
: theano升级了,scikit-image也升级了,升级跟赶投胎似的。日子没法过了。

avatar
c*1
59
pip install MySQL_python==1.2.2

【在 i******e 的大作中提到】
: pip 能控制版本号吧。
: 容我喷一句:
: 这就是为啥软件工程得控制复杂度,连wdong 这样的大牛也不愿意仔细看文档。

avatar
d*r
60
下午看wdong这帖子上十大了,mitbbs小编很潮啊,还知道docker...
avatar
d*r
61
我从来没玩过这个NixOS, 是你们PL大牛圈子设计的么?
nixos.org 登上去看, 好像以前的haskell网站

【在 a*****e 的大作中提到】
: 重要的事情说三遍:
: Deterministic software configuration is a solved problem.
: Reproducible Linux environment is a solved problem.
: System upgrade with rollbacks is a solved problem.
: 答案就是 Nix 或者 NixOS.

avatar
a*e
62
Nix 是一个纯函数语言,用来定制软件或者系统配置。因为无副作用,能够保证只要输
入(也就是依赖关系)不变,那么输出(可以理解为软件或者系统的安装)也不变。
Nix 同时也是一套基于 Linux 的软件包管理系统,类似 npm, apt 之类的意思。但
Nix 可以装到任何 Linux (还包括 Mac)系统上,甚至无需 root 权限。它管理的每
个软件包其实就是用 Nix 语言写好的表达式,然后提供命令行用于安装。它和其它系
统的软件包管理的主要区别是:
1. Nix 将每个软件安装到自己的独立目录,任何软件都可以多版本可以共存,没有冲
突。
2. 软件包的具体版本号其实是个 hash,是根据其源代码的 hash,编译的配置,和所
有依赖关系的 hash 算出来的。所以就算是同一个软件,比如 Python 3.6.1,如果它
的配置或者任何依赖的软件有所变化,那么就会产生一个新的完全独立的安装包。
3. 用户直接指定使用环境需要什么软件,Nix 保证所需软件都安装好,而且把 PATH
和相关的配置都设好。用户可以在不同环境下随意切换,且不会互相影响。这点对开发
非常方便,比如我需要把软件在不同版本的 Python 下做测试,只需要一个命令就可以
进入 sub-shell,目录都不用换。
这一整套的软件配置系统相当于一个用 Nix 语言写的库,保扩大部分常用和不常用的
Linux 软件的各个版本。然后 NixOS 就是以此为基础,用 Nix 语言描述 OS 和硬件配
置,就相当于一个 Linux distro,因为软件的安装结果相互不干扰,可以方便一键
rollback。再然后 NixOps 继续扩展到机器之间的配置,可以直接把集群 deploy 到
AWS 或者 Google Engine。
Nix 好用的地方就是它只是 specification,它的结果一定是 deterministic 和
reproducible,这种好处只有纯函数语言能够带来。像 Docker 这种还依赖版本号和
shell 脚本来做安装,永远也赶不上。当然 Nix 和 Docker 毕竟是两个层面的东西,
也不存在谁取代谁。我只是想说,软件硬件系统的配置方面,需要 Nix 这样的解决方
案。
对于普通 Linux 用户来说,大多数时候也不需要这么严格,其它系统用着就是个习惯
和偏好。普通用户就算是用 Nix 也主要是用它现成的包管理,一键安装什么的,命令
行敲敲好,也不会涉及深层次的东西。
而对于有这方面刚需的用户,还是要学习如何用 Nix 写自己的配置,如何把它提供的
软件配置库以更灵活的方式定制自己的环境或者系统。这当中的好处,谁用谁知道。我
用 Linux 做主力有 20 年了,从 Slackware 3.0 一路走过来的,用了 Nix 之后是无
法回去用其它的了。

【在 d*******r 的大作中提到】
: 我从来没玩过这个NixOS, 是你们PL大牛圈子设计的么?
: nixos.org 登上去看, 好像以前的haskell网站

avatar
w*g
63
这么好的帖子别跟在这里埋没了.

【在 a*****e 的大作中提到】
: Nix 是一个纯函数语言,用来定制软件或者系统配置。因为无副作用,能够保证只要输
: 入(也就是依赖关系)不变,那么输出(可以理解为软件或者系统的安装)也不变。
: Nix 同时也是一套基于 Linux 的软件包管理系统,类似 npm, apt 之类的意思。但
: Nix 可以装到任何 Linux (还包括 Mac)系统上,甚至无需 root 权限。它管理的每
: 个软件包其实就是用 Nix 语言写好的表达式,然后提供命令行用于安装。它和其它系
: 统的软件包管理的主要区别是:
: 1. Nix 将每个软件安装到自己的独立目录,任何软件都可以多版本可以共存,没有冲
: 突。
: 2. 软件包的具体版本号其实是个 hash,是根据其源代码的 hash,编译的配置,和所
: 有依赖关系的 hash 算出来的。所以就算是同一个软件,比如 Python 3.6.1,如果它

avatar
N*m
64
不是一个范畴。卫东这个application-level的packaging。

【在 a*****e 的大作中提到】
: 重要的事情说三遍:
: Deterministic software configuration is a solved problem.
: Reproducible Linux environment is a solved problem.
: System upgrade with rollbacks is a solved problem.
: 答案就是 Nix 或者 NixOS.

avatar
e*o
65
试了一下,确实不错。至少在软件包管理比Ubuntu自带的领先一代。

【在 a*****e 的大作中提到】
: Nix 是一个纯函数语言,用来定制软件或者系统配置。因为无副作用,能够保证只要输
: 入(也就是依赖关系)不变,那么输出(可以理解为软件或者系统的安装)也不变。
: Nix 同时也是一套基于 Linux 的软件包管理系统,类似 npm, apt 之类的意思。但
: Nix 可以装到任何 Linux (还包括 Mac)系统上,甚至无需 root 权限。它管理的每
: 个软件包其实就是用 Nix 语言写好的表达式,然后提供命令行用于安装。它和其它系
: 统的软件包管理的主要区别是:
: 1. Nix 将每个软件安装到自己的独立目录,任何软件都可以多版本可以共存,没有冲
: 突。
: 2. 软件包的具体版本号其实是个 hash,是根据其源代码的 hash,编译的配置,和所
: 有依赖关系的 hash 算出来的。所以就算是同一个软件,比如 Python 3.6.1,如果它

avatar
d*r
66
很有启发,长知识了,回头试试.帖子存了.

【在 a*****e 的大作中提到】
: Nix 是一个纯函数语言,用来定制软件或者系统配置。因为无副作用,能够保证只要输
: 入(也就是依赖关系)不变,那么输出(可以理解为软件或者系统的安装)也不变。
: Nix 同时也是一套基于 Linux 的软件包管理系统,类似 npm, apt 之类的意思。但
: Nix 可以装到任何 Linux (还包括 Mac)系统上,甚至无需 root 权限。它管理的每
: 个软件包其实就是用 Nix 语言写好的表达式,然后提供命令行用于安装。它和其它系
: 统的软件包管理的主要区别是:
: 1. Nix 将每个软件安装到自己的独立目录,任何软件都可以多版本可以共存,没有冲
: 突。
: 2. 软件包的具体版本号其实是个 hash,是根据其源代码的 hash,编译的配置,和所
: 有依赖关系的 hash 算出来的。所以就算是同一个软件,比如 Python 3.6.1,如果它

avatar
d*r
67
"""
2. 软件包的具体版本号其实是个 hash,是根据其源代码的 hash,编译的配置,和所
有依赖关系的 hash 算出来的。所以就算是同一个软件,比如 Python 3.6.1,如果它
的配置或者任何依赖的软件有所变化,那么就会产生一个新的完全独立的安装包。
"""
这个看着挺靠谱的,算是binary级别的deterministic和reproducible.
Docker image那种一层层累加的方式, 也是binary级别的deterministic和
reproducible.
但是是相对比较低级, 是没有和依赖的code/libs/cfg的语义结合, 是瞎的.
Nix这个是有语义的, 而且粒度划分看着更精细. 回头有时间玩玩试试.

【在 a*****e 的大作中提到】
: Nix 是一个纯函数语言,用来定制软件或者系统配置。因为无副作用,能够保证只要输
: 入(也就是依赖关系)不变,那么输出(可以理解为软件或者系统的安装)也不变。
: Nix 同时也是一套基于 Linux 的软件包管理系统,类似 npm, apt 之类的意思。但
: Nix 可以装到任何 Linux (还包括 Mac)系统上,甚至无需 root 权限。它管理的每
: 个软件包其实就是用 Nix 语言写好的表达式,然后提供命令行用于安装。它和其它系
: 统的软件包管理的主要区别是:
: 1. Nix 将每个软件安装到自己的独立目录,任何软件都可以多版本可以共存,没有冲
: 突。
: 2. 软件包的具体版本号其实是个 hash,是根据其源代码的 hash,编译的配置,和所
: 有依赖关系的 hash 算出来的。所以就算是同一个软件,比如 Python 3.6.1,如果它

avatar
n*7
68
各个distro都可以用上?非常不错啊

【在 a*****e 的大作中提到】
: Nix 是一个纯函数语言,用来定制软件或者系统配置。因为无副作用,能够保证只要输
: 入(也就是依赖关系)不变,那么输出(可以理解为软件或者系统的安装)也不变。
: Nix 同时也是一套基于 Linux 的软件包管理系统,类似 npm, apt 之类的意思。但
: Nix 可以装到任何 Linux (还包括 Mac)系统上,甚至无需 root 权限。它管理的每
: 个软件包其实就是用 Nix 语言写好的表达式,然后提供命令行用于安装。它和其它系
: 统的软件包管理的主要区别是:
: 1. Nix 将每个软件安装到自己的独立目录,任何软件都可以多版本可以共存,没有冲
: 突。
: 2. 软件包的具体版本号其实是个 hash,是根据其源代码的 hash,编译的配置,和所
: 有依赖关系的 hash 算出来的。所以就算是同一个软件,比如 Python 3.6.1,如果它

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。