大家有什么独到的 dotfiles 管理方案吗

2019-08-13 15:02:40 +08:00
 leishi1313
最近越来越迫切地需要一个统一的 dotfiles 来管理几台不同环境的机器。大家都有什么好建议吗?
我自己比较希望少建些 systemlink,然后安装脚本不要太长。不知道有什么符合这需求的方案呢?当然如果方案特别简洁,也不用管我这需求
4040 次点击
所在节点    程序员
7 条回复
Rocka
2019-08-13 17:11:45 +08:00
见过两个不错的方法:
GNU stow
http://farseerfc.me/zhs/using-gnu-stow-to-manage-your-dotfiles.html

以及直接使用 Git
https://www.atlassian.com/git/tutorials/dotfiles

至于我自己 ... 弄了个仓库,想用的时候就去里面复制,反正机器不多 ...
runze
2019-08-13 17:32:28 +08:00
stow 可能是最简单的方案了
Kobayashi
2019-08-13 21:33:51 +08:00
不喜欢 stow,这是一个非常糟糕的方案。每个配置文件都需要建立从用户目录开始的文件树,配置文件分别存放在这种目录树下,导致查看极不方便。

根据 archlinux wiki,目前最为灵活的方案是应该是 dotdrop:1 )既可以 copy,也可 symlink ; 2 )支持模板、替换模板内变量; 3 )分组基于配置文件(如配置文件 A、B 属于组 1,用到 Linux。配置文件 A、C 属于组 2,用到 macOS );
如果基于 copy,还支持钩子,如安装(如果是复制模式)前后执行特定动作(如运行脚本),在 dotfile 仓库导入、安装 /导出前对文件内容用 gpg 加密、解密,等等。


还是推荐看一眼 archlinux 下相关 wiki,比较一下各个 dotfile 工具,选择一个满足自己需求的。如果你不同机器部署完全相同的环境,这样你便不需要对于配置文件进行逻辑上分组,可选方案还有很多。但是如果你需要分组功能,dotdrop 无疑拥有最好的分组方案——将同一个 app 的配置文件在逻辑上分到不同的组。其他 dotfile 工具分组均基于目录,如 .vimrc 配置文件既需要放在配置文件夹 A 给机器 A 使用,也需要有一份放在配置文件夹 B 下给机器 B 使用,维护 2 个同样的文件完全没有必要。

https://wiki.archlinux.org/index.php/Dotfiles

https://github.com/deadc0de6/dotdrop
FrankHB
2019-08-14 03:04:37 +08:00
如果你的真正的目的是就只是管理(或者仅仅是部署) dotfiles,看楼上。
如果你的真正的目的是管理一般意义上每用户应用配置,恭喜你,还没有发现个好用的专用工具,你可以自己糊项目了。(模板之类……手贱写错呵呵呵。)原因是不同应用的配置格式不保证通用,管理 dotfiles 的方案不清楚具体配置的语义,只能对分组归类比较靠谱;要好用基本也得对特定的配置进行优化,这不比维护普通的包更省事,所以没啥人会去想做。(注册表是屎,但这里还真微粒子般存在地高明了那么一点点……)
现实我对单纯的配置基本上直接 git 不会有太难维护的问题,嫌麻烦(我不会)大不了用 wrapper (但要把版本控制有意 abstract away 掉的东西是不是符合目的,自己考虑)。配置中带逻辑的,专门链到 $HOME 外当作正经的私有项目定制。
rayhy
2019-08-14 06:41:06 +08:00
使用裸 Git 仓库,所有文件直接 git add 就行。不需要软链接。其实本质就是给.git/ 换个文件夹名。

安装就是 git clone。如果是不同系统的 dotfiles,可以用不同 git 分支来管理。为了方便可能要加一个 alias。

具体可以看我的博客,可惜我没验证手机号,没法贴。
leopku
2019-08-14 09:21:33 +08:00
@Kobayashi 试了一下,果然好用。多谢推荐。
Corps
2021-05-31 15:48:35 +08:00
立即使用 systemd-homed
www

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

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

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

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

© 2021 V2EX