Ошибки зависимости Git при использовании Composer с частным хранилищем VCS в IBM i - PullRequest
0 голосов
/ 10 октября 2018

Более подробно ниже, но я сталкиваюсь со следующей ошибкой, когда я запускаю команду composer install или composer update для проекта, который использует собственный репозиторий VCS для включенного проекта.Это в системе IBM i v7r3 через сессию SSH.У меня закончились идеи о том, как устранить неполадки, поэтому я здесь.Кто-нибудь когда-нибудь видел эту ошибку или есть какие-либо идеи о том, как устранить неполадки?

Ошибка:

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, настроенные для упрощения соединений для обоих пользователей, и ключ ssh "gitUser" не требует пароля, поэтому я могу использовать его для автоматизированных сценариев.

У меня есть личный репозиторий VCS, включенный в мой файл composer.json для проекта.Пока у меня есть запись в разделе «хранилище», я получаю вышеуказанную ошибку.Это происходит, даже если я не require загружаю пакет из хранилища.

Запись в хранилище:

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

Composer в IBM i работает додата в 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 install или composer update с другого компьютера (с соответствующими ключами), все работает без нареканий.Так что, похоже, это специфично для IBM i и профиля sshUser.

Я начинаю думать, что Composer использует другой исполняемый файл git и зависимости этого исполняемого файла не существуют.Хотя я предполагаю, что Composer просто использовал бы мой путь.

Примечание *: я попытался указать свою 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$

Если я не добавлю вышеупомянутое к моим ./.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$

1 Ответ

0 голосов
/ 11 октября 2018

Я предполагаю, что что-то не так с вашим путем, когда вы делаете установку.Может быть, он смотрит на библиотеки Zend PHP, а не на те, которые ожидаются в / usr / lib?

Обратите внимание, что в ошибках указан путь / usr / local / zendphp7 / lib / libz.so.1 (shr_64.o), в то время как ваш дамп git показывает / QOpenSys / pkgs / lib: / QOpenSys / usr / lib .

...