大家有什么独到的 dotfiles 管理方案吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
leishi1313
V2EX    程序员

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

  •  
  •   leishi1313 2019-08-13 15:02:40 +08:00 via Android 4739 次点击
    这是一个创建于 2322 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近越来越迫切地需要一个统一的 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     Solana     2637 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 11:52 PVG 19:52 LAX 03:52 JFK 06:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86