【问题标题】:Shebang being mangled by rpmbuildShebang 被 rpmbuild 破坏
【发布时间】:2021-07-16 19:54:13
【问题描述】:

当我构建我的 rpm 包时,我的脚本文件中的 shebang 正在被更改。以下是带有 shebang 的文件内容示例:

#!/usr/bin/env -S npx ts-node -T

// Some Typescript code
let myArray:Array<number> = new Array<number>();
myArray.push(1);
myArray.push(2);
myArray.push(3);
console.log(myArray);

RPM 构建消息

mangling shebang in /home/userx/bin/js/utils/test.ts from /usr/bin/env -S npx ts-node -T to 
#!/usr/bin/-S npx ts-node -T

安装后的结果文件:

#!/usr/bin/-S npx ts-node -T

// Some Typescript code
let myArray:Array<number> = new Array<number>();
myArray.push(1);
myArray.push(2);
myArray.push(3);
console.log(myArray);

RPM 构建与安装在同一台机器上完成。 /usr/bin/env 存在。该脚本确实以其原始形式运行而没有错误。任何帮助表示赞赏。

【问题讨论】:

    标签: typescript rpm rpmbuild


    【解决方案1】:

    我在 fedora-packaging 小组中遇到了一个已提交的问题 #738。基本上问题在于使用shebangs的旧python脚本。请求破坏

    #!/usr/bin/env <anything>
    

    #!/usr/bin/<anything>
    

    三年前被录取。我适应 rpmbuild 破坏的解决方案是破坏将要被破坏的 shebang,如下所示:

    #!/usr/bin/env env -S npx ts-node -T
    

    这导致我的脚本包含:

    #!/usr/bin/env -S npx ts-node -T
    

    虽然在打包生产之前进行本地测试非常不方便,但它似乎是目前最好的解决方案。

    另一个想法是将shebang作为:

    #!/usr/bin/envts -S npx ts-node -T
    

    它不会被 rpm 构建破坏。然后我会创建一个符号链接

    ln -s /usr/bin/env /usr/bin/envts
    

    这样我的 Typescript 脚本就会运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-02
      • 2018-10-07
      • 2011-01-02
      • 2020-02-15
      • 2010-12-25
      • 2013-03-10
      • 2019-03-01
      • 2015-09-03
      相关资源
      最近更新 更多