使用 coreutils install 安装符号链接
install symbolic links with coreutils install
我构建了一个库,我想使用 coreutils install
将该库安装到 /usr/local/lib
。构建结果如下所示:
libfoo.so -> libfoo.so.1
libfoo.so.1 -> libfoo.so.1.1
libfoo.so.1.1
我想保留符号链接和 install
文件 /usr/local/lib
。但是,如果我 运行
install libfoo* /usr/local/lib
符号链接已解析,/usr/local/lib
如下所示:
libfoo.so
libfoo.so.1
libfoo.so.1.1
换句话说,这些都是真实文件,没有符号链接。
install
的联机帮助页不包含任何有关解析符号链接的信息。如何 install
符号链接?
我也想知道这个。在 looking at the source code 之后,install
似乎非常积极地在安装时解析链接。这是它传递给 cp
的一些默认值;相关的以后不会被覆盖。
cp_option_init (struct cp_options *x)
{
cp_options_default (x);
x->copy_as_regular = true;
x->reflink_mode = REFLINK_NEVER;
x->dereference = DEREF_ALWAYS;
x->hard_link = false;
x->preserve_links = false;
x->preserve_mode = false;
x->symbolic_link = false;
(...)
解决方法是使用 cp
+ chmod
.
请注意,install
实用程序始终取消引用符号链接。
请看我的问题here。
要在复制文件的同时保留所有内容(符号链接、硬链接、模式等),您可以使用 cp -a
你也可以使用tar:
tar c -C source_dir file1 ... fileN | tar xv -C dest_dir
请注意,cp -a
和 tar
都将保留用户和组,并且这些文件在目的地可能必须由 root:root 所有。之后您可能需要添加一个 chown。
我构建了一个库,我想使用 coreutils install
将该库安装到 /usr/local/lib
。构建结果如下所示:
libfoo.so -> libfoo.so.1
libfoo.so.1 -> libfoo.so.1.1
libfoo.so.1.1
我想保留符号链接和 install
文件 /usr/local/lib
。但是,如果我 运行
install libfoo* /usr/local/lib
符号链接已解析,/usr/local/lib
如下所示:
libfoo.so
libfoo.so.1
libfoo.so.1.1
换句话说,这些都是真实文件,没有符号链接。
install
的联机帮助页不包含任何有关解析符号链接的信息。如何 install
符号链接?
我也想知道这个。在 looking at the source code 之后,install
似乎非常积极地在安装时解析链接。这是它传递给 cp
的一些默认值;相关的以后不会被覆盖。
cp_option_init (struct cp_options *x)
{
cp_options_default (x);
x->copy_as_regular = true;
x->reflink_mode = REFLINK_NEVER;
x->dereference = DEREF_ALWAYS;
x->hard_link = false;
x->preserve_links = false;
x->preserve_mode = false;
x->symbolic_link = false;
(...)
解决方法是使用 cp
+ chmod
.
请注意,install
实用程序始终取消引用符号链接。
请看我的问题here。
要在复制文件的同时保留所有内容(符号链接、硬链接、模式等),您可以使用 cp -a
你也可以使用tar:
tar c -C source_dir file1 ... fileN | tar xv -C dest_dir
请注意,cp -a
和 tar
都将保留用户和组,并且这些文件在目的地可能必须由 root:root 所有。之后您可能需要添加一个 chown。