我构建了一个库,并希望使用coreutils /usr/local/lib将库安装到install。构建的结果如下:
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符号链接?
发布于 2016-09-02 15:08:44
我也在想这件事。在查看源代码之后,似乎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。
发布于 2020-09-29 03:28:58
请注意,install实用程序总是取消符号链接。
请看我的问题这里。
要在保存所有内容(符号链接、硬链接、模式等)的同时复制文件,可以使用cp -a
您还可以使用tar:
tar c -C source_dir file1 ... fileN | tar xv -C dest_dir
请注意,cp -a和tar都将保留用户和组,并且这些文件可能必须由root:root在目的地拥有。之后你可能需要添加一个chown。
https://stackoverflow.com/questions/35560730
复制相似问题