使用Guix进行软件开发

  • 你是否在编译你的项目的时候因为没有一个干净的环境而带上了不应该带上的东西?
  • 你是否在其他机器上搭建环境搭建到吐,而且没办法重现一模一样的环境?
  • 你是否受够了使用Docker开发的操作繁琐麻烦?

Guix 解决它们:

Guix的安装和配置请看官方文档,这里只是说明使用Guix搭建环境的好处。

基础使用

guix environment --ad-hoc --pure --container gcc-toolchain bash coreutils gawk sed grep diffutils findutils patch ncurses make tar gzip bzip2 xz -- bash

这条命令创建了一个干净的开发环境.并且可以很容易重现它们

在这里环境中保证只有它们:

gcc-toolchain bash coreutils gawk sed grep diffutils findutils patch ncurses make tar gzip bzip2 xz

这条命令使用bash来进入环境,当然你也可以替换成 make -j2 或者 ./build.sh 之类的命令

选项解释:

  • --ad-hoc 包含软件包要使用的环境变量
  • --pure 使用干净的环境变量
  • --container 使用容器来隔绝不需要的文件

--container 会包含开发环境的软件包使用到的文件,以及当前目录下的文件。比如在 /home/dev 下执行上面的命令的话只会包含 /home/dev 下面的文件,除了软件包需要的目录,其他目录都被隔绝.

切换软件的版本

假如你写了一段C++代码,你想在各个版本的GCC上测试的话:

guix environment --ad-hoc --pure --container gcc-toolchain@8.3.0 bash coreutils gawk sed grep diffutils findutils patch ncurses make tar gzip bzip2 xz -- bash

软件版本的指定

    软件包名@版本

上面的命令创建的环境会使用GCC 8.3:

dev@server ~ [env]$ gcc --version
gcc (GCC) 8.4.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

1赞

服务器资源由ZeptoVM赞助

Partners Wiki IRC