在 IBM i 上将 Composer 与私有 VCS 存储库一起使用时出现 Git 依赖关系错误



下面提供了更多详细信息,但是当我在对包含的项目使用自定义VCS存储库的项目发出composer installcomposer update命令时,我遇到了以下错误。 这是通过 SSH 会话在 IBM i v7r3 系统上实现的。 我已经没有关于如何进一步排除故障的想法了,所以我来了。 有没有人见过此错误或对如何进一步排除故障有任何想法?

错误:

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

我有一个远程 IBM i 服务器,它有两个用户。 第一个用户"gitUser"用于我的私有 Git 存储库(无头(。 然后我有另一个用户"sshUser",用于SSH并完成我的典型工作。 我配置了SSH密钥以简化两个用户的连接,并且" gitUser"ssh密钥不需要密码,因此我可以将其用于自动脚本。

我有一个私人的VCS存储库包含在我的composer.json文件中,用于一个项目。 只要我在"存储库"部分中有条目,我就会收到上述错误。 即使我没有从存储库require包,也会发生这种情况。

存储库条目:

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

IBM i 上的 Composer 是最新版本的 1.7.2。

很明显,问题出在 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就好像我从另一台机器发出composer installcomposer update(使用适当的密钥(一样,一切都完美无缺。 因此,它似乎特定于 IBM i 和sshUser配置文件。

我开始认为 Composer 正在使用不同的git可执行文件,并且该可执行文件的依赖项不存在。 虽然我认为作曲家只会使用我的路径。

注意*:我尝试在./.profile中使用以下方法指定我的 LIBPATH。 但这似乎没有任何区别:

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$

如果我不将上述内容添加到我的./.profile,那么echo $LIBPATH会在屏幕上打印一个空白行。

解决方案:我只是将ZENDPHP7目录结构中的符号链接更改为存储库版本。 或者,您可以操作库路径,但我无法找到在 IBM i 上执行此操作的正确方法。

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$

我猜当你进行安装时,你的路径有问题。 也许是查看 Zend PHP 库而不是/usr/lib 中的预期库?

请注意,错误显示的路径为/usr/local/zendphp7/lib/libz.so.1(shr_64.o(,而您的 git dump 显示/QOpenSys/pkgs/lib:/QOpenSys/usr/lib。

相关内容

  • 没有找到相关文章

最新更新