【问题标题】:install symbolic links with coreutils install使用 coreutils install 安装符号链接
【发布时间】:2016-02-22 18:05:01
【问题描述】:

我构建了一个库,我想使用 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 符号链接?

【问题讨论】:

    标签: shared-libraries gnu-coreutils


    【解决方案1】:

    我也想知道这个。在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

    【讨论】:

      【解决方案2】:

      请注意,install 实用程序总是取消引用符号链接。

      请看我的问题here

      要在保留所有内容(符号链接、硬链接、模式等)的同时复制文件,您可以使用 cp -a

      你也可以使用 tar:

      tar c -C source_dir file1 ... fileN | tar xv -C dest_dir

      请注意,cp -atar 都将保留用户和组,并且这些文件可能必须归目的地的 root:root 所有。之后您可能需要添加一个 chown。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-27
        • 2017-11-21
        • 2020-07-06
        • 1970-01-01
        • 1970-01-01
        • 2011-05-29
        • 1970-01-01
        相关资源
        最近更新 更多