我一直在使用stow去管理一些,不是使用yum,apt之类软件包管理器安装的软件,突然从网上搜stow的用法的时候,竟然没有找到,所以自己写一个吧

后来是发现自己没学好搜索引擎的关键字

stow那点事儿_GNU

修改时间: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那点事儿_perl_02

安装stow的目的是为了便于管理自己编译的软件的目录。当然你可以选择不安装,那么下面的所有stow的操作,可以无视,自己选择去cp还是link都随意,保证自己的软件能运行就行。

使用

stow那点事儿_stow_03

这个PACKAGE就是要归档的目录名

-t就是你要归档的目标目录,通常我们可以看$PATH

stow那点事儿_perl_04


我一般都是建议归档到/usr/local下。

参数说明:

-t 就是指定的归档的目标是哪里,默认的话就是stow的父目录,

-v 可以指定命令执行过程的详细记录,可以用来排查错误。

--ignore 忽略一些不需要归档的文件

-S 就是归档,默认操作,一般不加

-R就是先-D删除然后执行-S,就是restow,适用于目录内容有变化的时候执行下。

目录结构,首先你的包的结构要和下面的包的和结构基本保持一致。

stow那点事儿_perl_05


归档

我们需要进入归档的软件的父目录下执行这个命令

这点很重要!!!

下面就是我把我的cfssl工具做下归档。

stow那点事儿_stow -D_06

需求就是使用cfssl工具,不要我自己去添加啥Path变量啥的,而且jumpserver这个目录不需要归档,这里是生成的证书。

stow那点事儿_perl_07

删除归档

stow -v 5 -D  -t /usr/local cfssl/


问题

这里的一个错误就是没有理解stow的含义。所以这里会说/opt/stow下不包含这个package stow,因为我们的stow父目录是/opt,所以我们需要在/opt下执行这个命令。

stow那点事儿_GNU_08

不允许在外面执行这个命令

stow那点事儿_perl_09