我一直在使用stow去管理一些,不是使用yum,apt之类软件包管理器安装的软件,突然从网上搜stow的用法的时候,竟然没有找到,所以自己写一个吧
后来是发现自己没学好搜索引擎的关键字
修改时间:2023/11/23
为避免各位看到不合时间的文档,这里记录下修订的时间,如果N年后你看到了这个文章,你觉得太老的话,可以跳过
参考
官方网址:
Stow - GNU Project - Free Software Foundation
巨人的肩膀:
https://linux.cn/article-9467-1.html
安装
cd ~
curl -O http://ftp.gnu.org/gnu/stow/stow-2.3.1.tar.gz
tar xf stow-2.3.1.tar.gz
cd stow-2.3.1
./configure --prefix=/opt/stow
make && make install
cd /opt && ./stow/bin/stow -t /usr/local/ stow/
stow --version
警告不用管,进行下一步就行
注意的是,stow是一个Perl script, ASCII text executable,所以需要有perl环境。
如果没有perl需要自己安装。
安装stow的目的是为了便于管理自己编译的软件的目录。当然你可以选择不安装,那么下面的所有stow的操作,可以无视,自己选择去cp还是link都随意,保证自己的软件能运行就行。
使用
这个PACKAGE就是要归档的目录名
-t就是你要归档的目标目录,通常我们可以看$PATH
我一般都是建议归档到/usr/local下。
参数说明:
-t 就是指定的归档的目标是哪里,默认的话就是stow的父目录,
-v 可以指定命令执行过程的详细记录,可以用来排查错误。
--ignore 忽略一些不需要归档的文件
-S 就是归档,默认操作,一般不加
-R就是先-D删除然后执行-S,就是restow,适用于目录内容有变化的时候执行下。
目录结构,首先你的包的结构要和下面的包的和结构基本保持一致。
归档
我们需要进入归档的软件的父目录下执行这个命令
这点很重要!!!
下面就是我把我的cfssl工具做下归档。
需求就是使用cfssl工具,不要我自己去添加啥Path变量啥的,而且jumpserver这个目录不需要归档,这里是生成的证书。
删除归档
stow -v 5 -D -t /usr/local cfssl/
问题
这里的一个错误就是没有理解stow的含义。所以这里会说/opt/stow下不包含这个package stow,因为我们的stow父目录是/opt,所以我们需要在/opt下执行这个命令。
不允许在外面执行这个命令