Движущиеся программы, скомпилированные на машине в другую машину и, избегают проблем зависимостей библиотеки

xargs имеет дело плохо со специальными символами (" 'пространство), таким образом, я дам Вам пример с помощью Параллели GNU:

sql -n mysql://user:pass@host/my_db "select data from my_table" | parallel -q sql mysql://user:pass@host/my_db "delete from my_table where data='{}'"

Требуется буквально 10 секунд для установки Параллели GNU (который включает GNU SQL):

wget pi.dk/3 -qO - | sh -x

Посмотрите вводные видео для узнавания больше: https://www.youtube.com/playlist? list=PL284C9FF2488BC6D1

6
26.10.2014, 13:57
1 ответ

Последняя последовательность должна быть

FOOEMPLOYEES ALL = (ALL) NOPASSWD: FOOCOMMANDS

От man sudoers

Основной структурой пользовательской спецификации является "who = (as_whom) what "

-121--210052-

Выполните следующий сценарий с параметром командной строки tarball в качестве параметра командной строки

#!/bin/bash

DIR=$(tar tvf ${1} | egrep -o "[^ ]+/$")

if [ $(echo ${DIR} | egrep -o " " | wc -l) -eq 0 ]; then
    echo ${DIR};
else
    echo "ERROR: multiple directories in tarball base"
    exit 1
fi
-121--89416-

Произвольное копирование .so файлов в общесистемные каталоги не является хорошей практикой, поскольку оно будет копировать общие библиотеки в целевую систему без системы пакетов

Ваш пробег может быть разным, но вы можете найти три разных подхода:

Первый пытается установить необходимые программные пакеты, которые содержат совместимые версии библиотек в целевом дистрибутиве. Однако для этого требуется root, который вы указали как не являющийся опцией. В любом случае, если в какой-то момент это окажется опцией, вот некоторые подсказки, помогающие в таком подходе: ldd you_executable_file показывает библиотечные зависимости конкретной программы. Можно искать пакеты в дистрибутиве, предоставляющем такие библиотеки (например, в Fedora можно использовать yum provides path_to_required_file, чтобы указать, какие пакеты необходимо установить.

Второй пытается создать агностический исполняемый файл дистрибутива. Для этого при компиляции программного обеспечения следует использовать статические библиотеки. Обычно можно найти как общие (.so), так и статические (.a) версии большинства библиотек в Linux. Следует использовать статические версии и связывать их как файлы объектов (.o). Обратная сторона состоит в том, что созданный двоичный файл будет намного больше, чем при использовании общих библиотек, потому что он будет нести весь код библиотеки в себе. Кроме того, он не будет чувствителен к исправлениям ошибок в тех библиотеках, которые позже были установлены в системе (для этого потребуется перекомпиляция программы с новой исправленной версией).

Третий вариант - копирование библиотек в новую систему (даже если они не являются корневыми) в каталог под домашней папкой и использование переменных среды LD _ LIBRARY _ PATH и/или LD _ PRELOAD , чтобы заставить динамический компоновщик использовать копии библиотек. Обратите внимание, что может потребоваться скопировать несколько библиотек (которые будут обнаружены с помощью команды ldd , упомянутой выше). LD _ LIBRARY _ PATH сообщает динамическому компоновщику просмотреть дополнительные пути для поиска отсутствующих библиотек. LD _ PRELOAD заставляет динамический компоновщик предварительно загрузить определенную версию библиотеки, переопределяющую версию системы.

5
27.01.2020, 20:28

Теги

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