Beste Installationsmethode für Entwickler zum Ausführen auf macOS?

Was ist die aktuelle Einschätzung und Vorgehensweise zur Installation von Discourse auf macOS für Entwicklungszwecke? Ich habe versucht, es gemäß den offiziellen Anleitungen auf GitHub zu installieren, die im Artikel Einsteigerleitfaden zur Installation von Discourse auf macOS für Entwicklung beschrieben sind, aber das funktioniert nicht.

Beim Versuch, das cppjieba_rb-0.3.3-Gem zu installieren, werden drei Fehler gemeldet.

Hat das jemand anderes kürzlich auch erlebt?

Was ist die Ausgabe von gem install cppjieba_rb?

~/Developer/localhost/discourse auf  master sudo gem install cppjieba_rb -v '0.3.3' --source 'https://rubygems.org/'             um 17:13:33
Passwort:
Native Erweiterungen werden erstellt. Dies kann eine Weile dauern...
FEHLER: Fehler beim Installieren von cppjieba_rb:
    FEHLER: Erstellung der nativen Gem-Erweiterung fehlgeschlagen.

    aktueller Verzeichnis: /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf20191021-73798-k500fk.rb extconf.rb
Makefile wird erstellt

    aktueller Verzeichnis: /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb
make "DESTDIR=" clean

    aktueller Verzeichnis: /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb
make "DESTDIR="
Kompilieren von cppjieba_rb.c
Kompilieren von internal.cc
In Datei enthalten von internal.cc:1:
In Datei enthalten von /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby.h:33:
In Datei enthalten von /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/ruby.h:24:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19/ruby/config.h:413:31: Fehler: ungültiges Suffix bei Literal; C++11 erfordert ein Leerzeichen zwischen Literal und Bezeichner [-Wreserved-user-defined-literal]
#define RUBY_ARCH "universal-"RUBY_PLATFORM_OS
                              ^

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19/ruby/config.h:414:35: Fehler: ungültiges Suffix bei Literal; C++11 erfordert ein Leerzeichen zwischen Literal und Bezeichner [-Wreserved-user-defined-literal]
#define RUBY_PLATFORM "universal."RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS
                                  ^

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19/ruby/config.h:414:55: Fehler: ungültiges Suffix bei Literal; C++11 erfordert ein Leerzeichen zwischen Literal und Bezeichner [-Wreserved-user-defined-literal]
#define RUBY_PLATFORM "universal."RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS
                                                      ^

In Datei enthalten von internal.cc:1:
In Datei enthalten von /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby.h:33:
In Datei enthalten von /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/ruby.h:2111:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/intern.h:56:19: Warnung: Speicherplatzspezifizierer „register“ ist veraltet und inkompatibel mit C++17 [-Wdeprecated-register]
void rb_mem_clear(register VALUE*, register long);
                  ^~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/intern.h:56:36: Warnung: Speicherplatzspezifizierer „register“ ist veraltet und inkompatibel mit C++17 [-Wdeprecated-register]
void rb_mem_clear(register VALUE*, register long);
                                   ^~~~~~~~~
In Datei enthalten von internal.cc:8:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/Jieba.hpp:4:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/QuerySegment.hpp:8:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/DictTrie.hpp:13:
/Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/deps/limonp/StringUtil.hpp:87:70: Warnung: „ptr_fun<unsigned int, bool>“ ist veraltet [-Wdeprecated-declarations]
  s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<unsigned, bool>(IsSpace))));
                                                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1097:1: Hinweis: „ptr_fun<unsigned int, bool>“ wurde hier explizit als veraltet markiert
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1101:39: Hinweis: erweitert von Makro „_LIBCPP_DEPRECATED_IN_CXX11“
#  define _LIBCPP_DEPRECATED_IN_CXX11 _LIBCPP_DEPRECATED
                                      ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1090:48: Hinweis: erweitert von Makro „_LIBCPP_DEPRECATED“
#    define _LIBCPP_DEPRECATED __attribute__ ((deprecated))
                                               ^
In Datei enthalten von internal.cc:8:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/Jieba.hpp:4:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/QuerySegment.hpp:8:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/DictTrie.hpp:13:
/Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/deps/limonp/StringUtil.hpp:92:61: Warnung: „ptr_fun<unsigned int, bool>“ ist veraltet [-Wdeprecated-declarations]
  s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<unsigned, bool>(IsSpace))).base(), s.end());
                                                            ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1097:1: Hinweis: „ptr_fun<unsigned int, bool>“ wurde hier explizit als veraltet markiert
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1101:39: Hinweis: erweitert von Makro „_LIBCPP_DEPRECATED_IN_CXX11“
#  define _LIBCPP_DEPRECATED_IN_CXX11 _LIBCPP_DEPRECATED
                                      ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1090:48: Hinweis: erweitert von Makro „_LIBCPP_DEPRECATED“
#    define _LIBCPP_DEPRECATED __attribute__ ((deprecated))
                                               ^
In Datei enthalten von internal.cc:8:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/Jieba.hpp:4:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/QuerySegment.hpp:8:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/DictTrie.hpp:13:
/Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/deps/limonp/StringUtil.hpp:101:70: Warnung: „bind2nd<std::__1::equal_to<char>, char>“ ist veraltet [-Wdeprecated-declarations]
  s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::bind2nd(std::equal_to<char>(), x))));
                                                                     ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1079:1: Hinweis: „bind2nd<std::__1::equal_to<char>, char>“ wurde hier explizit als veraltet markiert
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1101:39: Hinweis: erweitert von Makro „_LIBCPP_DEPRECATED_IN_CXX11“
#  define _LIBCPP_DEPRECATED_IN_CXX11 _LIBCPP_DEPRECATED
                                      ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1090:48: Hinweis: erweitert von Makro „_LIBCPP_DEPRECATED“
#    define _LIBCPP_DEPRECATED __attribute__ ((deprecated))
                                               ^
In Datei enthalten von internal.cc:8:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/Jieba.hpp:4:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/QuerySegment.hpp:8:
In Datei enthalten von /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/include/cppjieba/DictTrie.hpp:13:
/Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3/ext/cppjieba_rb/../cppjieba/deps/limonp/StringUtil.hpp:106:61: Warnung: „bind2nd<std::__1::equal_to<char>, char>“ ist veraltet [-Wdeprecated-declarations]
  s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::bind2nd(std::equal_to<char>(), x))).base(), s.end());
                                                            ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1079:1: Hinweis: „bind2nd<std::__1::equal_to<char>, char>“ wurde hier explizit als veraltet markiert
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1101:39: Hinweis: erweitert von Makro „_LIBCPP_DEPRECATED_IN_CXX11“
#  define _LIBCPP_DEPRECATED_IN_CXX11 _LIBCPP_DEPRECATED
                                      ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1090:48: Hinweis: erweitert von Makro „_LIBCPP_DEPRECATED“
#    define _LIBCPP_DEPRECATED __attribute__ ((deprecated))
                                               ^
6 Warnungen und 3 Fehler generiert.
make: *** [internal.o] Fehler 1

make fehlgeschlagen, Exit-Code 2

Gem-Dateien bleiben in /Library/Ruby/Gems/2.6.0/gems/cppjieba_rb-0.3.3 zur Überprüfung installiert.
Ergebnisse protokolliert in /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-19/2.6.0/cppjieba_rb-0.3.3/gem_make.out

Hast du das schon herausgefunden? Ich hatte das gleiche Problem, als ich von bash zu zsh gewechselt bin und vergessen hatte, rbenv einzurichten. Sobald ich wieder rbenv verwendete, lief alles wieder normal.

Das System-Ruby unter macOS scheint von Zeit zu Zeit problematisch zu sein.

Ich habe es nicht herausgefunden. Hast du bei der Discourse-Abhängigkeitsinstallation mehr als nur rbenv installiert? Das habe ich auch getan, da es keine weiteren Anweisungen gibt.

Meine Entwicklungsumgebung wurde vor langer Zeit eingerichtet, daher bin ich mir nicht sicher. Ich vermute nicht, dass ich damals etwas Besonderes getan habe, aber vielleicht hat sich seitdem etwas in macOS geändert.

Du kannst prüfen, ob rbenv eingerichtet ist. Wenn du nano ~/.bash_profile ausführst, solltest du etwas wie Folgendes sehen:

# rbenv laden
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init - --no-rehash)"

Du kannst auch rbenv versions ausführen, um zu sehen, welche Version aktuell ausgewählt ist (die Version mit dem Sternchen daneben). Wenn dort system steht, möchtest du das ändern… 2.6.1 funktioniert bei mir einwandfrei. (rbenv install 2.6.1 und dann rbenv global 2.6.1)