Ошибка установки OSSEC HIDS

Вопрос или проблема

Когда я пытаюсь запустить скрипт ./install.sh для OSSEC HIDS, я продолжаю получать эти странные ошибки:

/usr/bin/ld: client-agent/config.o:(.bss+0x0): множественное определение `server_ibuf'; client-agent/agentd.o:(.bss+0x0): впервые определено здесь
/usr/bin/ld: client-agent/event-forward.o:(.bss+0x0): множественное определение `server_ibuf'; client-agent/agentd.o:(.bss+0x0): впервые определено здесь
/usr/bin/ld: client-agent/intcheck_op.o:(.bss+0x0): множественное определение `server_ibuf'; client-agent/agentd.o:(.bss+0x0): впервые определено здесь
/usr/bin/ld: client-agent/main.o:(.bss+0x0): множественное определение `server_ibuf'; client-agent/agentd.o:(.bss+0x0): впервые определено здесь
/usr/bin/ld: client-agent/notify.o:(.bss+0x0): множественное определение `server_ibuf'; client-agent/agentd.o:(.bss+0x0): впервые определено здесь
/usr/bin/ld: client-agent/receiver.o:(.bss+0x0): множественное определение `server_ibuf'; client-agent/agentd.o:(.bss+0x0): впервые определено здесь
/usr/bin/ld: client-agent/sendmsg.o:(.bss+0x0): множественное определение `server_ibuf'; client-agent/agentd.o:(.bss+0x0): впервые определено здесь
/usr/bin/ld: client-agent/start_agent.o:(.bss+0x0): множественное определение `server_ibuf'; client-agent/agentd.o:(.bss+0x0): впервые определено здесь
/usr/bin/ld: os_net.a(os_net.o):(.bss+0x0): множественное определение `agt'; client-agent/config.o:(.bss+0x10088): впервые определено здесь
collect2: ошибка: ld вернул статус выхода 1
make: *** [Makefile:1017: ossec-agentd] Ошибка 1

Я установил все зависимости и обновил все (apt update и т.д.), но ничего не помогает решить эту проблему. У кого-нибудь есть предложения?

Кроме того, я пытаюсь сделать локальную установку. Если нужно что-то еще, дайте знать.

Вы когда-нибудь пробовали установить пакет libsystemd-dev?
Большинство из этих проблем при компиляции возникают из-за этого.

Чтобы это не потерялось в теме,

вы также можете попробовать собрать свой проект, игнорируя некоторые проблемы компоновщика, добавив LDFLAGS="-Wl,-z,muldefs" перед вашей командой, например:

LDFLAGS="-Wl,-z,muldefs" ./install.sh или
LDFLAGS="-Wl,-z,muldefs" make внутри папки src.

Ответ или решение

При установке OSSEC HIDS и возникновении ошибок, таких как:

/usr/bin/ld: client-agent/config.o:(.bss+0x0): multiple definition of `server_ibuf'; client-agent/agentd.o:(.bss+0x0): first defined here
/usr/bin/ld: client-agent/event-forward.o:(.bss+0x0): multiple definition of `server_ibuf'; client-agent/agentd.o:(.bss+0x0): first defined here
...
collect2: error: ld returned 1 exit status
make: *** [Makefile:1017: ossec-agentd] Error 1

вы сталкиваетесь с проблемой множественного определения переменной server_ibuf, а также других переменных в различных объектных файлах. Эта проблема часто возникает из-за неправильно организованного кода в C или C++ проекте, где глобальные переменные определены в нескольких файлах.

Возможные решения:

  1. Проверка зависимостей: Убедитесь, что все необходимые зависимости установлены. Особенно обратите внимание на пакет libsystemd-dev, который многие пользователи описывали как решающий при возникновении подобных ошибок. Вы можете установить его с помощью следующей команды:

    sudo apt-get install libsystemd-dev
  2. Использование LDFLAGS: Если исправление кода невозможно или занимает много времени, вы можете попробовать игнорировать некоторые ошибки компоновки, добавив флаг при запуске скрипта установки или команды make. Вы можете выполнить одну из следующих команд:

    LDFLAGS="-Wl,-z,muldefs" ./install.sh

    или

    cd src
    LDFLAGS="-Wl,-z,muldefs" make

    Хотя данный подход может помочь вам продолжить установку, это не устраняет основную проблему с множественными определениями переменных.

  3. Редактирование кода: Если вы знакомы с исходным кодом, вы можете вносить изменения самостоятельно. Постарайтесь убедиться, что глобальные переменные в файлах определены только в одном месте. Все остальные файлы могут использовать extern для обращения к этим переменным. Например:

    // В одном файле
    int server_ibuf;
    
    // В других файлах
    extern int server_ibuf;
  4. Обновление исходного кода: Возможно, вы используете устаревшую версию OSSEC. Попробуйте обновить исходный код, загрузив последнюю стабильную версию с официального репозитория. Это может как устранить ошибку, так и включить исправления, которые решают данную проблему.

  5. Искать решение в сообществе: Если проблема не решается, рекомендуется обратиться на форумы или в общественные группы, посвященные OSSEC. Возможно, кто-то сталкивался с аналогичной проблемой и может предложить решение.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...