Как установить SQLite3 для Rails на сервер без доступа root - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь создать приложение Ruby на Rails «Hello World» на нашем управляемом сервере, где невозможно root или sudo.

Ruby - версия 2.3.3p222 Rails v5.2.4.1.

Я использовал rails new testproject, чтобы создать свой тест "Hello World". Это не удается в bundle install, потому что я не могу установить в систему гемы, получая

Error "Your user account isn't allowed to install to the system RubyGems"

Переход в папку testproject и ввод:

bundle install --path ~/.gem

возвращает:

This failed with *"An error occurred while installing sqlite3 (1.4.2),
and Bundler cannot continue."*

The reason is an compiler error: *"conftest.c:13:57: error:
‘pthread_create’ undeclared (first use in this function)"* Problem:
The compiler can't find pthread because the *pthread.h* not included.
The only include in the conftest.c is *#include "ruby.h"* and this is
included from the system includes.

Я извлек команду g cc из файла журнала, изменил порядок папок включения, чтобы моя локальная папка включения стала первой. Я поместил пустышку "ruby .h" в локальное включение, которое включает в себя "pthread.h" и "ruby .h" из папки системного включения.

Новый g cc команда:

gcc -o conftest -I/usr/home/admin/include -I/usr/include/x86_64-linux-gnu/ruby-2.3.0 -I/usr/include/ruby-2.3.0/ruby/backward -I/usr/include/ruby-2.3.0 -I. -I/usr/include -Wdate-time -D_FORTIFY_SOURCE=2   -g -O2 -fdebug-prefix-map=/build/ruby2.3-LPgLkQ/ruby2.3-2.3.3=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -DTAINTING_SUPPORT conftest.c  -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic     -lruby-2.3 -lfalse  -lpthread -lgmp -ldl -lcrypt -lm   -lc

Новая ошибка теперь:

cannot find -lfalse 

Когда я удаляю -lfalse из команды g cc, я больше не получаю ошибок.

Так что теперь я знаю, что пропущенное включение для "pthread.h" - моя первая проблема. И -lfalse - второй. Но как я могу решить это? Как я могу сказать bundle install включить pthread.h? Почему там -lfalse?

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

...