在macOS上安装Discourse以进行开发

我在 M1 Mac 上设置 discourse 进行开发时遇到了一些问题。

fast_xs 和 gc_tracer gem 在安装时失败,错误信息几乎相同。我已将 fast_xs 的错误消息粘贴在下方。有人能帮忙吗?

Building native extensions. This could take a while...
ERROR:  Error installing fast_xs:
	ERROR: Failed to build gem native extension.

    current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
/Users/sisirkoppaka/.rubies/ruby-3.2.0/bin/ruby -I /Users/sisirkoppaka/.rubies/ruby-3.2.0/lib/ruby/site_ruby/3.2.0 extconf.rb
checking for assert.h... yes
creating Makefile

current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
make DESTDIR\= sitearchdir\=./.gem.20240203-10621-j9d0j7 sitelibdir\=./.gem.20240203-10621-j9d0j7 clean

current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
make DESTDIR\= sitearchdir\=./.gem.20240203-10621-j9d0j7 sitelibdir\=./.gem.20240203-10621-j9d0j7
compiling fast_xs.c
fast_xs.c:144:39: error: incompatible function pointer types passing 'VALUE (VALUE)' (aka 'unsigned long (unsigned long)') to parameter of type 'VALUE (*)(VALUE, VALUE)' (aka 'unsigned long (*)(unsigned long, unsigned long)') [-Wincompatible-function-pointer-types]
  144 |         array = rb_rescue(unpack_utf8, self, unpack_uchar, self);
      |                                              ^~~~~~~~~~~
/Users/sisirkoppaka/.rubies/ruby-3.2.0/include/ruby-3.2.0/ruby/internal/iterator.h:364:62: note: passing argument to parameter 'r_proc' here
  364 | VALUE rb_rescue(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2);
      |                                                              ^
1 error generated.
make: *** [fast_xs.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0 for inspection.
Results logged to /Users/sisirkoppaka/.gem/ruby/3.2.0/extensions/arm64-darwin-22/3.2.0-static/fast_xs-0.8.0/gem_make.out```

这是如何解决的?

执行以下命令:

bundle exec rake db:create
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

在启动 Redis 和 Postgres 服务器后,我收到以下错误。

fe_sendauth: no password supplied
Couldn't create 'discourse_development' database. Please check your configuration.
rake aborted!

当我未启动 Redis 和 Postgres 服务器而执行此操作时,我收到以下错误。

bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate
Couldn't connect to Redis
rake aborted!

有人能告诉我该怎么做吗?我迷茫了。

谢谢

到目前为止,我设法使用以下命令解决了它:

bundle config build.fast_xs --with-cflags="-Wno-incompatible-pointer-types"
bundle config build.gc_tracer --with-cflags="-Wno-incompatible-pointer-types"
bundle install

请注意,我们已决定在以下两个拉取请求中删除这两个非必需的 gem:

3 个赞

调用此选项后,如何关闭服务器?

这似乎(不再)有效,我收到:

fatal: couldn't find remote ref master

覆盖本地更改的版本(向下 2 帖)也不起作用。

关于如何升级 macOS Discourse 开发安装的任何想法?

master 已重命名为 main 有一段时间了。请尝试

cd ~/discourse
git pull origin main
4 个赞

谢谢 Simon,这很有帮助。

我能够运行 git 命令,但在某个环节弄坏了我的开发环境。我现在有了一个损坏的开发环境,它显示了我的 Discourse 开发主页,但似乎什么都无法工作(“新建主题”一直在加载)。

重置或全新安装我的 Discourse 开发环境的最简单方法是什么?

我尝试重新运行本主题开头的安装命令(在 pnpm install 命令处失败)。我还尝试运行 Arpit 早些时候在本主题中提出的 rake db:drop db:create db:migrate,但也没有成功。

我通过运行 npm install -g pnpmbrew install node 更新了 pnpm 和 node 安装,这使我能够再次运行安装说明。但是,我现在收到以下构建错误:

Module not found: Error: Can't resolve '@ember/debug' in '/Users/pieces/discourse/app/assets/javascripts/node_modules/ember-tracked-storage-polyfill/addon/index.js'

您在运行 npm install -g pnpm 后运行了 pnpm install 吗?

有关切换到使用 pnpm 进行包管理的详细信息,请参见:Discourse core is switching to pnpm for JS package management

2 个赞

是的,我做到了,但仍然收到错误。

我执行了以下步骤:

  1. 更新了我的 Mac 上的软件包(重新运行了初始脚本)
  2. 运行了 bundle install
  3. 运行了 pnpm install
  4. 运行了 bundle exec rake db:create bundle exec rake db:migrate RAILS_ENV=test bundle exec rake db:create db:migrate
  5. 运行了 bundle exec rails server
  6. 在单独的终端窗口中运行了 bin/ember-cli

运行第 6 步时出现错误。

查看您提供的链接中的详细信息,感觉 Yarn 管理的 Node 模块没有正确转换为 pnpm?它提到了手动删除“node_modules”文件夹。但是,这应该在新 git pull 中得到处理,对吧?

请看下面第 6 步的错误。

如果这有助于找到原因,我可以分享提到的错误日志。

值得注意的是,我没有 macOS 系统可以进行测试。不过,我最近在 Arch Linux 系统上更新了我本地的 Discourse 实例。我预计这两种系统处理 javascript 依赖项的方式会相似。

我认为那是不正确的。node_modules 目录不受 git 跟踪。当你运行 pnpm install 时,会安装 node 模块。

我不能保证这是正确的,但如果我遇到这个错误,我会删除然后重新安装依赖项,使用:

rm -rf node_modules app/assets/javascripts/*/node_modules

pnpm install

我认为 ember-tracked-storage-polyfill 直接位于 discourse/node_modules 中,但运行我上面发布的完整命令应该是安全的。

如果 pnpm install 返回错误,你也可以尝试使用详细日志运行它:

pnpm install --reporter=silent --loglevel=verbose

我已经删除了依赖项并重新安装了它们,提供的命令运行正常。它会无误地删除和安装 pnpm。

但是,当我运行 bin/ember-cli 时,仍然出现相同的错误。

有没有办法完全删除我的 Discourse 开发安装,然后从 Git 进行干净的拉取并进行干净的安装?

我完全可以丢失开发环境中的数据。

您可以运行 rm -rf ~/discourse 来彻底删除 Discourse 源代码。然后按照其“克隆 Discourse”步骤中的安装指南进行操作:Install Discourse on macOS for development

2 个赞

搞定了!\n\n谢谢你的耐心,Simon,感谢你没有放弃 :slight_smile:

2 个赞

太好了!我猜问题可能与之前在 /discourse/tmp/cache/assets/sprockets/ 目录中编译过的缓存资源有关。可能通过运行以下命令可以解决问题:

rm -rf ~/discourse/tmp/cache/

不过这只是我的猜测。

3 个赞

我不太走运地遵循这些说明。它们没有提供一个可用的环境,因为当我尝试安装任何东西(插件、主题、主题组件)时,我都会收到 500 错误。看起来安装向导无法正常工作。我现在已经安装了大约 10 次,并卸载和重新安装了依赖项。当我运行 autospec 时,我得到了很多失败,但关于它们的失败信息不多。欢迎任何关于如何让这个东西运行起来的建议。

谢谢!

对于从Discourse Development README开始并来到这里的人来说——如果您是第一次设置依赖项,我建议使用PostgreSQL 14+,尽管README中说的是PostgreSQL 13。

为什么?当您设置数据库并运行迁移时,它会在其中一个迁移中尝试访问pgvector扩展时失败。而为PostgreSQL 13安装pgvector有点麻烦。但是,如果您安装了PostgreSQL 14,然后安装pgvector,一切都会顺利进行。

我建议两者都使用Homebrew:

brew install postgresql@14
brew install pgvector

另外!如果您没有安装ImageMagick,第一次运行Rails服务器时会收到一个错误。(我知道本指南的开头说它是可选的)

希望这对某人有所帮助!

3 个赞

生产环境已经是 15 了,我推荐那个或者 16。

2 个赞