GNU Stow 主要用来管理以 makefile 方式安装的程序。
原理是安装时指定 prefix 到用户管理的文件夹,stow 可以帮忙在真正的 sysroot 下建立符号链接,需要删除程序的时候就不会删错删漏了。
使用 GNU Stow 管理安装
MacOS 下安装:
brew install stow
Ubuntu 下安装:
sudo apt install stow
建立 stow 文件夹
mkdir /usr/local/stow
安装程序时:
./configure --prefix=/usr/local/stow/ruby
make
sudo make install
安装后执行映射,创建软链接:
cd /usr/local/stow
sudo stow ruby
需要卸载程序时:
cd /usr/local/stow
sudo stow --delete ruby
rm -rf ruby
使用 GNU Stow 管理linux 配置文件
例如,假设您要管理 Bash,VIM 和 Uzbl 的配置。Bash 在顶级目录中有几个文件; VIM通 常在顶级和 .vim 目录中有 .vimrc 文件; 和 Uzbl 在 ${XDG_CONFIG_HOME}/uzbl 和中有文件 ${XDG_DATA_HOME}/uzbl 。因此,您的主目录如下所示:
home/
brandon/
.config/
uzbl/
[...some files]
.local/
share/
uzbl/
[...some files]
.vim/
[...some files]
.bashrc
.bash_profile
.bash_logout
.vimrc
然后,您将创建一个 dotfiles 子目录并将所有文件移动到那里:
home/
/brandon/
.config/
.local/
.share/
dotfiles/
bash/
.bashrc
.bash_profile
.bash_logout
uzbl/
.config/
uzbl/
[...some files]
.local/
share/
uzbl/
[...some files]
vim/
.vim/
[...some files]
.vimrc
然后,执行以下命令:
$ cd ~/dotfiles
$ stow bash
$ stow uzbl
$ stow vim
解释:
stow 默认会在当前目录的上一级目录创建软链接,比如当前目录是 ~/dotfiles,当我们执行 stow bash 时,stow 会在创建 ~/ 目录中,为 ~/dotfiles/bash/ 中的所有文件创建软链接。如果我们不想在当前目录的上一级目录创建软链接,那么我们可以用 -t 或 --target= 来制定一个目标目录,比如:
stow -t $HOME/.config nvim
stow --target=$HOME/.config/ nvim
stow 文件冲突的问题
欲 stow 的文件目前已经存在于 target 中时,stow 会失败,此时:
使用 --override=.* 可以将强制覆盖其他 stow 包创建的符号链接
提示 "existing target is neither a link nor a directory",因为冲突的目标文件不是符号链接,只能手动删除,或者如果希望自动备份到 stow 包中(就是源)可以使用 --adopt 选项
参考来源:
brandon.invergo.net/news/2012-0… wiki.noodlefighter.com/计算机/linux/t… farseerfc.me/zhs/using-g…
全文完!
如果你喜欢我的文章,欢迎关注我的微信公众号 deliverit.