代码之家  ›  专栏  ›  技术社区  ›  d.lanza38

将Composer与IBM i上的专用VCS存储库一起使用时出现Git依赖项错误

  •  2
  • d.lanza38  · 技术社区  · 6 年前

    下面是更多的细节,但是当我发布一个 composer install composer update 命令,该命令用于对包含的项目使用自定义VCS存储库的项目。这是通过SSH会话在ibmiv7r3系统上实现的。关于如何进一步排除故障,我已经没有主意了,所以我来了。有没有人见过这个错误,或者对如何进一步排除故障有什么想法?

    bash-4.4$ composer install
    Loading composer repositories with package information
    Installing dependencies (including require-dev) from lock file
    Package operations: 113 installs, 0 updates, 0 removals
      - Installing sshUser/myPackage (v1.0.26): Cloning a2db0666b1
    
    
      [RuntimeException]
      Failed to clone gitUser:/opt/git/myPackage.git, git was not found, check that
       it is installed and in your PATH env.
    
      Could not load program git:
            Dependent module /usr/local/zendphp7/lib/libz.so.1(shr_64.o) could not be loaded.
    
            File /usr/local/zendphp7/lib/libz.so.1 is not an
    
              archive or the file could not be read properly.
    
      System error: Exec format error
    

    我有一个远程ibmi服务器,它有两个用户。第一个用户“gitUser”用于我的私有Git存储库(headless)。然后我有了另一个用户“sshUser”,它用于SSH-in并执行我的典型工作。我将SSH密钥配置为简化两个用户的连接,并且“gitUser”SSH密钥不需要密码,因此我可以将其用于自动脚本编写。

    require 从存储库中删除包。

    "repositories": [
        {
            "type": "vcs",
            "url":  "gitUser:/opt/git/myPackage.git"
        }
    ]
    

    很明显,问题在于git和在git中找不到依赖关系 libz.so.1 .

    但是,如果我遵循路径中Git版本的依赖关系链,则所有适当的文件都具有足够的权限:

    bash-4.4$ which git                                                   
    /QOpenSys/pkgs/bin/git                                                
    bash-4.4$ dump -X64 -H /QOpenSys/pkgs/bin/git                         
    
    /QOpenSys/pkgs/bin/git:                                               
    
                            ***Loader Section***                          
                          Loader Header Information                       
    VERSION#         #SYMtableENT     #RELOCent        LENidSTR           
    0x00000001       0x000000df       0x0000433f       0x0000009d         
    
    #IMPfilID        OFFidSTR         LENstrTBL        OFFstrTBL          
    0x00000006       0x00044910       0x00000a18       0x000449ad         
    
    
                            ***Import File Strings***                     
    INDEX  PATH                          BASE                MEMBER       
    0      /QOpenSys/pkgs/lib:/QOpenSys/usr/lib                           
    1                                    libz.so.1           shr_64.o     
    2                                    libiconv.so.2       shr_64.o     
    3                                    libcrypto.so.1.0.0  shr_64.o     
    4                                    libpthread.a        shr_xpg5_64.o
    5                                    libc.a              shr_64.o     
    bash-4.4$                                                             
    

    gitUser 好像我发了一张 编写器安装 从另一台机器(有合适的钥匙)开始,一切工作都完美无缺。所以它似乎是针对ibmi和 sshUser 轮廓。

    git 可执行文件及其依赖项不存在。虽然我想作曲家会用我的方法。

    :我尝试在我的中指定LIBPATH ./.profile 有以下几点。但这似乎没什么区别:

    LIBPATH=/usr/local/zendphp7/lib
    LIBPATH=$LIBPATH:/QOpenSys/pkgs/lib:/QOpenSys/usr/lib
    export LIBPATH
    

    回音时:

    bash-4.4$ echo $LIBPATH
    /usr/local/zendphp7/lib:/QOpenSys/pkgs/lib:/QOpenSys/usr/lib
    bash-4.4$
    

    如果我不把以上内容加到我的 ./.简介 echo $LIBPATH

    解决方案: 我刚刚将ZENDPHP7目录结构中的符号链接更改为repo版本。或者,您可以操纵库路径,但我无法在ibmi上找到正确的方法。

    bash-4.4$ pwd
    /usr/local/zendphp7/lib
    bash-4.4$ ln -s /QOpenSys/pkgs/lib/libz.so.1 ./libz.so.1
    bash-4.4$ ls -la /usr/local/zendphp7/lib/libz.so.1
    lrwxrwxrwx 1 dl 0 56 Oct 11 14:21 /usr/local/zendphp7/lib/libz.so.1 -> /QOpenSys/pkgs/lib/libz.so.1
    bash-4.4$
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Player1st    6 年前

    我猜当你安装的时候,你的路径出了问题。它是否在查看Zend PHP库而不是/usr/lib中预期的库?

    请注意,这些错误显示了 /usr/local/zendphp7/lib/ /QOpenSys/pkgs/lib:/QOpenSys/usr/lib .