не может запустить PostgreSQL на OpenBSD 5.4 через rc.d

[1183340] Ошибка сегментации [1183626] является результатом нарушения доступа к памяти. Программа сослалась на адрес памяти вне выделенной ей, а ядро операционной системы в ответ убило программу с помощью SIGSEGV.

Это ошибка, так как нет смысла пытаться получить доступ к недоступной памяти (это невозможно). Ошибки подобного рода легко допускаются, однако, особенно в таких языках, как Си и Си++ (на которые приходится множество распространенных приложений). Это указывает на ошибку либо в самой программе, либо в библиотеке, на которую она ссылается. Если вы хотите сообщить об ошибке (do -- это помогает), хорошей идеей будет включить [1183628]обратную связь[1183629] событий, которые привели к ошибке сегмента.

  1. Для этого вы можете запустить программу внутри [1183630]gdb[1183631] (отладчика GNU), который должен быть доступен из любого дистрибутива linux, если он еще не установлен (пакет будет просто называться "gdb"). Если сломанное приложение называется "breakapp":
  2. появится абзац об авторских правах и лицензировании, а в конце появится подсказка с курсором:
  3. Введите [1183632]run[1183633] и нажмите enter. Если вам нужно указать аргументы (например, [1183634]-x --foo=bar whatever[1183635]), добавьте эти ([1183636]run -x --foo=bar whatever[1183637]). Программа сделает то, что она делает, вы увидите результат, и если вам нужно взаимодействовать, вы можете (обратите внимание, что вы можете запустить любую программу, в том числе и GUI, внутри gdb). В месте, где она обычно сегментирует, вы увидите:

    Вторая строка вывода здесь просто пример. Теперь наберите [1183638]bt[1183639] (для "обратной связи") и нажмите enter. Вы увидите нечто подобное, хотя это может быть намного длиннее:

    • Если оно длиннее, то вы получите только экранное сообщение за раз и появится сообщение [1183640]--More--[1183641]. Продолжайте нажимать Enter до тех пор, пока это не будет сделано. Теперь Вы можете [1183642]выйти [1183643], выход останется в Вашем терминале. Скопируйте все, начиная с [1183644]-Программы, получившей сигнал SIGSEGV[1183645], в текстовый файл и отправьте сообщение об ошибке с помощью программы отслеживания ошибок; вы можете найти их в режиме онлайн с помощью поиска, например, "сообщение об ошибке сломанной программы" - вам, вероятно, придется зарегистрироваться, чтобы ответ был отправлен вам по электронной почте. Включите ваше описание проблемы, любые аргументы, которые вы предоставили для [1183646] run[1183647], и т.д., и копию обратной связи (если она очень длинная, может быть средство для прикрепления текстового файла в интерфейсе программы отслеживания ошибок). Также включите версию, если вы знаете, что это такое ([1183648]breakapp --version[1183649] может сработать, или в man-странице может быть указано, как это получить), и какой дистрибутив вы используете.
    • Кто-нибудь, надеюсь, свяжется с вами через некоторое время. Обычно мы ценим ошибку в файлинге.[1183355]
2
17.01.2014, 00:10
1 ответ

И @CraigRinger (не про init-скрипт, однако), и @gabe правы. Вы должны были прочитать пакет README и вам нужно initdb. Из README:

Если вы устанавливаете PostgreSQL в первый раз, вам нужно создать сначала база данных по умолчанию. В следующем примере мы устанавливаем БД в /var/postgresql/данные с учетной записью dba 'postgres' и md5 аутентификацией. Нам будет предложено ввести пароль для защиты учетной записи dba:

 # su - _postgresql
 $ mkdir /var/postgresql/данные
 $ initdb -D /var/postgresql/data -U postgres -A md5 -W

Обратите внимание, что по умолчанию кодировкой кластера будет SQL_ASCII. Если вы хотите иметь другую кодировку по умолчанию, используйте опцию -E с initdb:

 $ initdb -D /var/postgresql/data -U postgres -E UTF8 -A md5 -W

README-файлы для всех установленных пакетов находятся в следующем каталоге: /usr/local/share/doc/pkg-readmes.

2
27.01.2020, 22:14

Теги

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