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

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

  •  
  •   leishi1313 · 2019-08-13 15:02:40 +08:00 via Android · 3740 次点击
    这是一个创建于 1689 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近越来越迫切地需要一个统一的 dotfiles 来管理几台不同环境的机器。大家都有什么好建议吗?
    我自己比较希望少建些 systemlink,然后安装脚本不要太长。不知道有什么符合这需求的方案呢?当然如果方案特别简洁,也不用管我这需求
    7 条回复    2021-05-31 15:48:35 +08:00
    Rocka
        1
    Rocka  
       2019-08-13 17:11:45 +08:00   ❤️ 1
    见过两个不错的方法:
    GNU stow
    http://farseerfc.me/zhs/using-gnu-stow-to-manage-your-dotfiles.html

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

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

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

    具体可以看我的博客,可惜我没验证手机号,没法贴。
    leopku
        6
    leopku  
       2019-08-14 09:21:33 +08:00
    @Kobayashi 试了一下,果然好用。多谢推荐。
    Corps
        7
    Corps  
       2021-05-31 15:48:35 +08:00 via Android
    立即使用 systemd-homed
    www
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5416 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:33 · PVG 16:33 · LAX 01:33 · JFK 04:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.