Как скопировать в двух папках одновременно с помощью параллели GNU путем порождения нескольких потоков?

Как @bersh проницательно указывает в комментариях, Вы, кажется, смешиваете библиотеки, которые были скомпилированы для различной архитектуры (32-разрядный по сравнению с 64-разрядным). На Fedora 32-разрядные библиотеки входят /usr/lib, в то время как 64-разрядные библиотеки входят /usr/lib64. Можно убедить себя в этом с несколькими примерами.

Пример

Давайте выберем одну из библиотек доли для сопоставителя DNS, /usr/lib/libresolv-2.17.so. Мы видим, что это - часть 32-разрядного об/мин.

$ rpm -qf /usr/lib/libresolv-2.17.so 
glibc-2.17-20.fc19.i686

Можно также видеть, что библиотекой является 32-разрядный ELF headered файл.

$ file /usr/lib/libresolv-2.17.so
/usr/lib/libresolv-2.17.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=0xeee8b9e6cb49f8dd64059cc158ce2c55f8c6df5b, for GNU/Linux 2.6.32, not stripped

Таким образом, необходимо заботиться при компиляции программного обеспечения, чтобы удостовериться, что Вы имеете в распоряжении соответствующие библиотеки (32 и 64), а также соответствующие заголовочные файлы. На Fedora (и все основанные на Red Hat дистрибутивы) как пакеты называют так:

  • 32-разрядный - libdb-5.3.21-11.fc19.i686
  • 64-разрядный - libdb-5.3.21-11.fc19.x86_64
  • 32-разрядные заголовочные файлы - libdb-devel-5.3.21-11.fc19.i686
  • 64-разрядные заголовочные файлы - libdb-devel-5.3.21-11.fc19.x86_64

Ваша библиотека, libdb

Если Вы замечаете, что файл библиотеки доступен в обеих архитектуре. Учитывая вывод Вашего kernel так как пакет был бы x64, я предположил бы, что Вы означали устанавливать 64-разрядные версии библиотек.

Также, так как Вы пытаетесь скомпилировать, Вы захотите установить заголовочные файлы для своей архитектуры также.

$ rpm -qf /usr/lib/libdb-5.3.so
libdb-5.3.21-11.fc19.i686
$ rpm -qf /usr/lib64/libdb-5.3.so
libdb-5.3.21-11.fc19.x86_64

Как я знаю что пакет установить?

Если Вы видите, что Ваши компиляции призывают к файлам, которые Вы не имеете затем, можно использовать repoquery для обнаружения то, как что пакет (пакеты) обеспечивает различные файлы так:

$ repoquery -f '*/libdb-5.3.so'
libdb-0:5.3.21-11.fc19.x86_64
libdb-0:5.3.21-11.fc19.i686

2
13.09.2017, 13:45
1 ответ
[1173147] Ошибка, как правило, вызвана слишком большим количеством ssh/scp, начинающихся одновременно. Это немного странно, так как Вы в большинстве случаев запускаете 4. Это заставляет меня поверить, что /etc/ssh/sshd_config:MaxStartups and MaxSessions на $FILERS_LOCATION_1+2 установлен слишком низкий уровень.

К счастью, мы можем попросить GNU Parallel повторить попытку, если команда не удастся:

3
27.01.2020, 22:06

Теги

Похожие вопросы