20191021のMacに関する記事は10件です。

Mosquitto - Brew パッケージの不具合

概要

mosquittoのbrewパッケージにバグがあります

この投稿の読者

  • OSXでmosquittoを動かす方
  • brewでmosquittoをインストールした方
  • mosquittoをシステムサービスと稼働したい方
  • Subscriber/Publisherからconnection refusedと怒られてしまい困っている方

結論(対策)

mosquittoインストール後、次の様にディレクトリを作成してください

$ sudo mkdir /usr/local/var/mosquitto
$ sudo chmod 775 /usr/local/var/mosquitto

現象

(1) コマンドラインから指定すれば動作

これなら動きます

$ /usr/local/sbin/mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf
 1571663276: mosquitto version 1.6.7 starting
 1571663276: Config loaded from /usr/local/etc/mosquitto/mosquitto.conf.
 1571663276: Opening ipv6 listen socket on port 1883.
 1571663276: Opening ipv4 listen socket on port 1883.
...
$ mosquitto_sub -d -t orz
 Client mosq-PteU0oBSzkCWYl8edo sending CONNECT
 Client mosq-PteU0oBSzkCWYl8edo received CONNACK (0)
 Client mosq-PteU0oBSzkCWYl8edo sending SUBSCRIBE (Mid: 1, Topic: orz, QoS: 0, Options: 0x00)
 Client mosq-PteU0oBSzkCWYl8edo received SUBACK

(2) サービスとしては起動失敗

下記の様にサービスとしてmosquittoを起動すると失敗。subscriber等からアクセスできません。

$ brew services start mosquitto
 ==> Successfully started `mosquitto` (label: homebrew.mxcl.mosquitto)
...
$ mosquitto_sub -d -t orz
 Error: Connection refused
...


# launchctlでも同じ
$ launchctl load /usr/local/Cellar/mosquitto/1.6.7/homebrew.mxcl.mosquitto.plist
...
$ mosquitto_sub -d -t orz
 Error: Connection refused
...

バグ

(1)原因

plistファイルで指定されるWorkingDirectoryが存在しないため

(2)解説

  • サービスとして動作を記述するplistファイルで指定される実行ディレクトが存在しない。
  • サービス起動時にエラーも吐かず「成功メッセージ」がでます。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>homebrew.mxcl.mosquitto</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/mosquitto/sbin/mosquitto</string>
    <string>-c</string>
    <string>/usr/local/etc/mosquitto/mosquitto.conf</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>KeepAlive</key>
  <false/>
  <key>WorkingDirectory</key>
  <string>/usr/local/var/mosquitto</string>    <===== ココ
</dict>
</plist>

(3)対応

上記の「結論(対策)」を実行してください

$ sudo mkdir /usr/local/var/mosquitto
$ sudo chmod 775 /usr/local/var/mosquitto

感想

パッケージャのミスで、早々に治るかと思いましたが、思いの外情報がなく、
brewに投稿するより、こちらの方が苦しむ方が減るかと思い。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

「キーボード種類変更」を毎回選ぶのがしんどい自分への備忘録

職場と自宅でキーボード種類変更がしんどい

自宅では英語キーボードを利用し、職場ではMBPデフォルトの日本語キーボードを利用している私です。
キャプが手抜きで申し訳ないですが(備忘録なので)

image.png

image.png

image.png

image.png

という感じで「キーボードの種類を変更...」に移動していました。
この生活もけっこう長く続いていたのですが時短することにしました。

本当は、英語キーボードをつなげた時に勝手に認識してくれよ。
なのですが、どうしてもそうならない私のMBP。

キーボード種類変更アプリはどこにある?

キーボード種類変更で起動するアプリの正式名称は「KeyboardSetupAssistant.app」というらしく。
macの以下に格納されています。

起動すると立ち上がるこいつです。

コマンドでアプリを起動する方法

/System/Library/CoreServices/

なので、コマンドプロントからならこちらを実行するとこちらです。
aliasなんかしてサクッと起動もいいかもしれません。

$ open /System/Library/CoreServices/KeyboardSetupAssistant.app

Dockに登録してからの起動方法

ターミナルから/System/Library/CoreServicesを開いて「KeyboardSetupAssistant.app」をドラックしてDockに登録する。

$ open /System/Library/CoreServices

こちらも案外いいてかもしれません。私はそうしました。
もしかしたら皆さんいい手を知っているかもしれませんので良き方法あれば教えてください。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unity メッセージのないエラーログ

エラーメッセージのないエラー発生

先日から突然Unityで意味不明なエラーログが発生しだしかなり苦労させられたので、備忘録に残しておきます。

環境

Unity2018.4.2f
Mac 10.14.5

現象

Unityを触っていたらこのような意味不明なエラーログが4つほど発生。

スクリーンショット 2019-10-20 23.14.22.png

試したこと

  • 他のプロジェクトでも立ち上げると同じエラーが発生
  • 新規プロジェクト作成するも同じエラー発生

どうやら、Unity自体に問題がありそう。。

ここの記事を参考にUnityをクリアインストールを試すが解決せず。。

発見その1

昔使っていたUnity2018.2.5では謎のエラーは発生せず正常運転!

Unityのバージンで問題があるかもしれないと推測し、バージョンごとにテストした結果

Unity2018.2.xx以下ではOK
Unity2018.3.xx以上ではNG

スクリーンショット 2019-10-21 18.18.19.png

Unityのバージョンで問題があるのならば、もっと大きな問題になっているはずなので、根本的にはバージョンの問題ではない気がする。

発見その2

Bootcampで入れたWindows10側でUnity2018.4.11をインストールして試してみると、正常運転!

やはり、Unityのバージョンが問題ではなく、MacOSとUnityの組み合わせで問題が出ている気がする。

解決

結局、MacOSのバージョンをMojave(10.14.5)から最新のCatalina(10.15)へアップデートすることで謎のエラーは出なくなりました。
根本的な解決ではないような気もしますが、とりあえず結果オーライということで。

スクリーンショット 2019-10-21 18.34.18.png

あとがき

アップデートしてソフトウェアが動かなくなることは多々ありますが、アップデートしないことで動かないという現象は初めての経験でした。

OSのアップデートは、不具合も多いのでいつもは1ヶ月ほど様子見てからにするのですが、今回のようなこともあるので、また一つ勉強になりました。

ちなみに、最近調子悪かったAdobe Creative Cloudもアップデート後は正常運転するようになってくれて、いろいろと問題が解決できました!!

スクリーンショット 2019-10-21 18.37.58.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

mac で tree コマンドを使う(ディレクトリツリーを表示する)

こんな感じのディレクトリツリーが欲しい。

./vue-test/src/
├── App.vue
├── assets
│   └── logo.png
├── components
│   └── HelloWorld.vue
├── main.js
├── router
│   └── index.js
└── views
    ├── About.vue
    └── Home.vue

そんな時に使えるのが、treeコマンドです。

インストール

homebrew のインストールが必須。

# インストール
brew install tree

# varsion 確認
tree --version
tree v1.8.0 (c) 1996 - 2018 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro

https://formulae.brew.sh/formula/tree

基本コマンド

# カレントディレクトリ配下のディレクトリツリーを出力
tree .

# ディレクトリを指定
tree ./vue-test/

# フォルダ名のみ出力
tree -d .

# 何階層まで出力するか指定
tree -L 2 . # 先は二階層まで表示

# ファイルサイズも出力
tree -h .

その他

$ tree --help
usage: tree [-acdfghilnpqrstuvxACDFJQNSUX] [-H baseHREF] [-T title ]
    [-L level [-R]] [-P pattern] [-I pattern] [-o filename] [--version]
    [--help] [--inodes] [--device] [--noreport] [--nolinks] [--dirsfirst]
    [--charset charset] [--filelimit[=]#] [--si] [--timefmt[=]<f>]
    [--sort[=]<name>] [--matchdirs] [--ignore-case] [--fromfile] [--]
    [<directory list>]
  ------- Listing options -------
  -a            All files are listed.
  -d            List directories only.
  -l            Follow symbolic links like directories.
  -f            Print the full path prefix for each file.
  -x            Stay on current filesystem only.
  -L level      Descend only level directories deep.
  -R            Rerun tree when max dir level reached.
  -P pattern    List only those files that match the pattern given.
  -I pattern    Do not list files that match the given pattern.
  --ignore-case Ignore case when pattern matching.
  --matchdirs   Include directory names in -P pattern matching.
  --noreport    Turn off file/directory count at end of tree listing.
  --charset X   Use charset X for terminal/HTML and indentation line output.
  --filelimit # Do not descend dirs with more than # files in them.
  --timefmt <f> Print and format time according to the format <f>.
  -o filename   Output to file instead of stdout.
  ------- File options -------
  -q            Print non-printable characters as '?'.
  -N            Print non-printable characters as is.
  -Q            Quote filenames with double quotes.
  -p            Print the protections for each file.
  -u            Displays file owner or UID number.
  -g            Displays file group owner or GID number.
  -s            Print the size in bytes of each file.
  -h            Print the size in a more human readable way.
  --si          Like -h, but use in SI units (powers of 1000).
  -D            Print the date of last modification or (-c) status change.
  -F            Appends '/', '=', '*', '@', '|' or '>' as per ls -F.
  --inodes      Print inode number of each file.
  --device      Print device ID number to which each file belongs.
  ------- Sorting options -------
  -v            Sort files alphanumerically by version.
  -t            Sort files by last modification time.
  -c            Sort files by last status change time.
  -U            Leave files unsorted.
  -r            Reverse the order of the sort.
  --dirsfirst   List directories before files (-U disables).
  --sort X      Select sort: name,version,size,mtime,ctime.
  ------- Graphics options -------
  -i            Don't print indentation lines.
  -A            Print ANSI lines graphic indentation lines.
  -S            Print with CP437 (console) graphics indentation lines.
  -n            Turn colorization off always (-C overrides).
  -C            Turn colorization on always.
  ------- XML/HTML/JSON options -------
  -X            Prints out an XML representation of the tree.
  -J            Prints out an JSON representation of the tree.
  -H baseHREF   Prints out HTML format with baseHREF as top directory.
  -T string     Replace the default HTML title and H1 header with string.
  --nolinks     Turn off hyperlinks in HTML output.
  ------- Input options -------
  --fromfile    Reads paths from files (.=stdin)
  ------- Miscellaneous options -------
  --version     Print version and exit.
  --help        Print usage and this help message and exit.
  --            Options processing terminator.
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

macOS 10.15(Catalina)にアップデートしたらhttpd.confの設定が飛んだので復旧させたメモ

自身のMacBook ProのOSを10.14から10.15にアップデートしたらhttpd.confの設定が飛んでしまったので解決メモ。

正確には飛んでしまった、というよりもこれまで使っていたhttpd.confが「場所が変更された項目」に移動されてしまい、10.15に準拠したファイルが新たに作成されていました。

「場所が変更された項目」とは

10.14から10.15へとアップデートが完了した際に、突如デスクトップに出現した「場所が変更された項目」へのエイリアス。大元は/ユーザ/共有/以下に作成されています。

そのフォルダに「場所が変更された項目とは?.lpdf」というファイルがあるので、その内容を抜粋。
(ん?.lpdfファイル?)

前回のmacOSアップグレードまたはファイル移行中に、一部のファイルを新 しい場所に移動できませんでした。このフォルダには、移動できなかった ファイルが含まれています。

新しい場所に移動する必要があるファイル
macOSのセキュリティ設定に適合しなくなった場所にあったファイルがありました。確認の ために、それらのファイルは“セキュリティ”フォルダに移動されました。
保持したいファイルは、アップグレードまたは移行の前の場所とは別の場所であれば、新しい 場所に移動できます。

構成ファイル
これらの構成ファイルはご自身、別のユーザ、またはアプリケーションによって変更またはカ スタマイズされました。それらの変更は最近のmacOSアップグレードと互換性がありませ
ん。変更されたファイルは“構成”フォルダ内にあり、元の場所の名前が付いたサブフォルダで 整理されています。

カスタム構成のいずれかを復元するには、macOSのアップグレード時に行われた構成変更と 比較して、可能であれば両者を統合してください。

ということです。httpd.confは「構成」フォルダ以下に置かれているので、構成ファイルの内容によれば、旧httpd.confと新httpd.confは互換性がないとのこと。マジですか。

新しいhttpd.confを確認

とりあえず/etc/apache2/httpd.confを開いて内容を確認。
一部これまでなかった記述があるものの、全体としては同じような内容。
一先ず旧httpd.confを参考に新しい方を更新。
自分のMacではPHPとPerlの設定がしてあったので、それを記載します。

PHP用の変更内容
186行目 #LoadModule php7_module libexec/apache2/libphp7.so →コメントアウトはずす
458行目  #AddOutputFilter INCLUDES .shtmlから459行目 </IfModule>の間に
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source  .phps
の2行を追記
Perl用の変更内容
170行目 #LoadModule cgid_module libexec/apache2/mod_cgid.so
173行目 #LoadModule cgi_module libexec/apache2/mod_cgi.so
183行目 #LoadModule userdir_module libexec/apache2/mod_userdir.so
185行目 #LoadModule rewrite_module libexec/apache2/mod_rewrite.so
187行目 #LoadModule perl_module libexec/apache2/mod_perl.so
    →コメントアウトはずす
268行目 Options FollowSymLinks Multiviews    →末尾にExecCGI追記
446行目 #AddHandler cgi-script .cgi          →コメントアウト外して、末尾に.pl追加
必要があれば次の項目も変更
199行目 User _www       →設定したいユーザ名に
200行目 Group _www      →設定したいユーザ名に
221行目 ServerAdmin you@example.com   →設定したいメールアドレスに
230行目 ServerName www.example.com:80 →設定したいURLに

変更が終わったら保存してapacheを再起動。
特に問題なく起動し、Webページも問題なく表示されました。

まとめ

今回行った記述変更に旧OSと全く同じ。
ということは、移動された理由としては、新しいOSとの互換がないとのことだけど
自分で手を加えた内容がNG、ということではなさそう。
とはいえ、今回はローカル環境で気づいたけど、他の人も閲覧するサーバでアップデート後に
気づかないと各所問題が起きるので要注意。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

rails server コマンドでエラーが出た話

目的

  • サーバをスタートするコマンド$ rails serverを実行した時のエラー解決法を知る。

エラー内容

$ MacBook-miriwo:test_app admin$ rails s
MacBook-miriwo:test_app admin$ rails s
=> Booting Puma
=> Rails 6.0.0 application starting in development 
=> Run `rails server --help` for more startup options
RAILS_ENV=development environment is not defined in config/webpacker.yml, falling back to production environment
Exiting
Traceback (most recent call last):
    80: from bin/rails:3:in `<main>'
    79: from bin/rails:3:in `load'
    78: from /Users/admin/Documents/test/test_app/bin/spring:15:in `<top (required)>'
    77: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
・
・
・
MacBook-miriwo:test_app admin$ rails webpacker:install
Yarn not installed. Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/

解決方法

  • コマンド$ rails webpacker:installを実行しようとしたところでエラーがでた。
$ rails webpacker:install
Yarn not installed. Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/
  • yarnが入っていないためエラーが出たようなのでコマンドbrew install yarnを実行して入れた。
$ brew install yarn
==> Installing dependencies for yarn: node
==> Installing yarn dependency: node
==> Downloading https://homebrew.bintray.com/bottles/node-12.12.0.high_sierra.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/0f/0f35e88be5a84c808dba472d053af25639b300c095392f63e85d9ae94cf12b20
・
・
・
  • コマンド$ rails webpacker:installを実行した。
$ rails webpacker:install
RAILS_ENV=development environment is not defined in config/webpacker.yml, falling back to production environment
      create  config/webpacker.yml
Copying webpack core config
      create  config/webpack
      create  config/webpack/development.js
      create  config/webpack/environment.js
・
・
・
  • コマンド$ rails serverを実行したところ、正常にローカルサーバが起動した。
$ rails s
=> Booting Puma
=> Rails 6.0.0 application starting in development 
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.4-p104), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
・
・
・

付録

  • コマンド$ rails serverを実行した時のエラーを記載する。
$ rails s
=> Booting Puma
=> Rails 6.0.0 application starting in development 
=> Run `rails server --help` for more startup options
RAILS_ENV=development environment is not defined in config/webpacker.yml, falling back to production environment
Exiting
Traceback (most recent call last):
    80: from bin/rails:3:in `<main>'
    79: from bin/rails:3:in `load'
    78: from /Users/admin/Documents/test/test_app/bin/spring:15:in `<top (required)>'
    77: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    76: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    75: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>'
    74: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load'
    73: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/bin/spring:49:in `<top (required)>'
    72: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/client.rb:30:in `run'
    71: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call'
    70: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `call'
    69: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `load'
    68: from /Users/admin/Documents/test/test_app/bin/rails:9:in `<top (required)>'
    67: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:325:in `require'
    66: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:291:in `load_dependency'
    65: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:325:in `block in require'
    64: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
    63: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
    62: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
    61: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
    60: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
    59: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands.rb:18:in `<main>'
    58: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/command.rb:46:in `invoke'
    57: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/command/base.rb:65:in `perform'
    56: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
    55: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
    54: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
    53: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands/server/server_command.rb:138:in `perform'
    52: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands/server/server_command.rb:138:in `tap'
    51: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands/server/server_command.rb:147:in `block in perform'
    50: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands/server/server_command.rb:37:in `start'
    49: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands/server/server_command.rb:77:in `log_to_stdout'
    48: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/server.rb:354:in `wrapped_app'
    47: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/server.rb:219:in `app'
    46: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/server.rb:319:in `build_app_and_options_from_config'
    45: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:40:in `parse_file'
    44: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:49:in `new_from_string'
    43: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:49:in `eval'
    42: from config.ru:in `<main>'
    41: from config.ru:in `new'
    40: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:55:in `initialize'
    39: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:55:in `instance_eval'
    38: from config.ru:3:in `block in <main>'
    37: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:48:in `require_relative'
    36: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:325:in `require'
    35: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:291:in `load_dependency'
    34: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:325:in `block in require'
    33: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/zeitwerk-2.2.0/lib/zeitwerk/kernel.rb:23:in `require'
    32: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
    31: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
    30: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
    29: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
    28: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
    27: from /Users/admin/Documents/test/test_app/config/environment.rb:5:in `<main>'
    26: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/application.rb:363:in `initialize!'
    25: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/initializable.rb:60:in `run_initializers'
    24: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:205:in `tsort_each'
    23: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:226:in `tsort_each'
    22: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:347:in `each_strongly_connected_component'
    21: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:347:in `call'
    20: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:347:in `each'
    19: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:349:in `block in each_strongly_connected_component'
    18: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:431:in `each_strongly_connected_component_from'
    17: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
    16: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:228:in `block in tsort_each'
    15: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/initializable.rb:61:in `block in run_initializers'
    14: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/initializable.rb:32:in `run'
    13: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/initializable.rb:32:in `instance_exec'
    12: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/railtie.rb:84:in `block in <class:Engine>'
    11: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker.rb:27:in `bootstrap'
    10: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/commands.rb:14:in `bootstrap'
     9: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/manifest.rb:18:in `refresh'
     8: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/manifest.rb:83:in `load'
     7: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:47:in `public_manifest_path'
     6: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:43:in `public_output_path'
     5: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:39:in `public_path'
     4: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:80:in `fetch'
     3: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:84:in `data'
     2: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:88:in `load'
     1: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:88:in `read'
/Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:88:in `read': No such file or directory @ rb_sysopen - /Users/admin/Documents/test/test_app/config/webpacker.yml (Errno::ENOENT)
    79: from bin/rails:3:in `<main>'
    78: from bin/rails:3:in `load'
    77: from /Users/admin/Documents/test/test_app/bin/spring:15:in `<top (required)>'
    76: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    75: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    74: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>'
    73: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load'
    72: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/bin/spring:49:in `<top (required)>'
    71: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/client.rb:30:in `run'
    70: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call'
    69: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `call'
    68: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `load'
    67: from /Users/admin/Documents/test/test_app/bin/rails:9:in `<top (required)>'
    66: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:325:in `require'
    65: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:291:in `load_dependency'
    64: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:325:in `block in require'
    63: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
    62: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
    61: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
    60: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
    59: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
    58: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands.rb:18:in `<main>'
    57: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/command.rb:46:in `invoke'
    56: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/command/base.rb:65:in `perform'
    55: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
    54: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
    53: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
    52: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands/server/server_command.rb:138:in `perform'
    51: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands/server/server_command.rb:138:in `tap'
    50: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands/server/server_command.rb:147:in `block in perform'
    49: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands/server/server_command.rb:37:in `start'
    48: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/commands/server/server_command.rb:77:in `log_to_stdout'
    47: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/server.rb:354:in `wrapped_app'
    46: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/server.rb:219:in `app'
    45: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/server.rb:319:in `build_app_and_options_from_config'
    44: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:40:in `parse_file'
    43: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:49:in `new_from_string'
    42: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:49:in `eval'
    41: from config.ru:in `<main>'
    40: from config.ru:in `new'
    39: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:55:in `initialize'
    38: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:55:in `instance_eval'
    37: from config.ru:3:in `block in <main>'
    36: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:48:in `require_relative'
    35: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:325:in `require'
    34: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:291:in `load_dependency'
    33: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:325:in `block in require'
    32: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/zeitwerk-2.2.0/lib/zeitwerk/kernel.rb:23:in `require'
    31: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
    30: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
    29: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
    28: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
    27: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
    26: from /Users/admin/Documents/test/test_app/config/environment.rb:5:in `<main>'
    25: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/application.rb:363:in `initialize!'
    24: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/initializable.rb:60:in `run_initializers'
    23: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:205:in `tsort_each'
    22: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:226:in `tsort_each'
    21: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:347:in `each_strongly_connected_component'
    20: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:347:in `call'
    19: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:347:in `each'
    18: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:349:in `block in each_strongly_connected_component'
    17: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:431:in `each_strongly_connected_component_from'
    16: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
    15: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/2.6.0/tsort.rb:228:in `block in tsort_each'
    14: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/initializable.rb:61:in `block in run_initializers'
    13: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/initializable.rb:32:in `run'
    12: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/initializable.rb:32:in `instance_exec'
    11: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/railtie.rb:84:in `block in <class:Engine>'
    10: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker.rb:27:in `bootstrap'
     9: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/commands.rb:14:in `bootstrap'
     8: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/manifest.rb:18:in `refresh'
     7: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/manifest.rb:83:in `load'
     6: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:47:in `public_manifest_path'
     5: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:43:in `public_output_path'
     4: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:39:in `public_path'
     3: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:80:in `fetch'
     2: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:84:in `data'
     1: from /Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:87:in `load'
/Users/admin/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/webpacker/configuration.rb:91:in `rescue in load': Webpacker configuration file not found /Users/admin/Documents/test/test_app/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - /Users/admin/Documents/test/test_app/config/webpacker.yml (RuntimeError)
MacBook-miriwo:test_app admin$ rails webpacker:install
Yarn not installed. Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macにインストールした証明書をコマンド一発で.pemファイルにエクスポート

Dockerコンテナ内でGCPの証明書エラーと戦ってみた - Qiitaという記事を以前書きました。
この記事ではホスト(Mac OSX)の証明書をコンテナにコピーすることで、コンテナの証明書エラーを解消していました。
この時の手順では、Macにインストールされた証明書をGUI操作でエクスポートしていたのですが、この辺のエラーは割とよく起こるので、もうちょっと手軽に使いたい!
ということでコマンド一発でできないのか調べてみました。

結論

インストールされている全ての証明書をエクスポートする場合

$ security find-certificate -p -a > cert.pem

証明書の名前を指定する場合

$ security find-certificate -p -c CertName > cert.pem

securityコマンド

キーチェーンアクセスと同じ情報を見えるコマンドがないか調べたところ、以下の質問が見つかりました。

macos - OSX: Export system certificates from keychain in PEM format programmatically - Stack Overflow

今やりたいことにマッチするのは

$ security find-certificate -a -p /System/Library/Keychains/SystemCACertificates.keychain > allcerts.pem

$ security find-certificate -a -p >certs.pem

ですかね

このコマンドで生成されたpemファイルの中身を見ると以下のようになってました。このファイルをコンテナに持っていけば良さそうですね。
解決しました

$ security find-certificate -a -p -c "Apple World"
-----BEGIN CERTIFICATE-----
************************
************************
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
************************
************************
-----END CERTIFICATE-----

ちなみに、この2つの違いは全ての証明書を指定するか、システムの証明書のみか、という違いです。

以下のコマンドでキーチェーンの一覧が表示されるので、ここから指定すれば良いみたいです。

$ security list-keychains
    "/Users/${username}/Library/Keychains/login.keychain-db"
    "/Library/Keychains/System.keychain"

securityコマンドの使い方

一応コマンドの使い方も確認しておこう、ということでman securityで確認してみました。
この中で今回使うのは以下3つですかね

  • -a
    • 全証明書を一括でエクスポートしたい場合はつける。これをつけない場合は先頭1つのみエクスポートされる
  • -p
    • pem形式でエクスポートする。今回は必須
  • -c
    • 名前で絞り込みする。任意
     find-certificate [-h] [-a] [-c name] [-e emailAddress] [-m] [-p] [-Z] [keychain...]
            Find a certificate item.  If no keychain arguments are provided, the default search list is used.

            Options:
            -a              Find all matching certificates, not just the first one
            -c name         Match on name when searching (optional)
            -e emailAddress
                            Match on emailAddress when searching (optional)
            -m              Show the email addresses in the certificate
            -p              Output certificate in pem format.  Default is to dump the attributes and keychain the cert is in.
            -Z              Print SHA-1 hash of the certificate

            Examples

            security> find-certificate -a -p > allcerts.pem
                     Exports all certificates from all keychains into a pem file called allcerts.pem.

            security> find-certificate -a -e me@foo.com -p > certs.pem
                     Exports all certificates from all keychains with the email address me@foo.com into a pem file called certs.pem.

            security> find-certificate -a -c MyName -Z login.keychain | grep ^SHA-1
                     Print the SHA-1 hash of every certificate in 'login.keychain' whose common name includes 'MyName'

-cオプション

-cをつけると、証明書の名前が指定できます
例えばApple Worldwide Developer Relations Certification Authorityの証明書をエクスポートしたい場合は以下のようになります
部分一致なので、-cのあとには、他と被らない程度のキーワードを入れれば良いです。
-aをつけると一致した全ての証明書が吐かれるので、ここで出力される証明書が1つになるまで探しました

$ security find-certificate -a -p -c "Apple World"
-----BEGIN CERTIFICATE-----
************************
************************
-----END CERTIFICATE-----

動作確認

確認のために前回と同様のGCPの動作確認をしてみました

最後2行を追加して証明書インストール済みイメージを作ります

FROM ubuntu:18.04

RUN apt update && apt install -y lsb-release
RUN apt install -y curl gnupg
RUN export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \
    echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \
    curl -k https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \
    apt-get update -y && apt-get install google-cloud-sdk -y
# 追加
COPY root.pem /certificates/root.pem
RUN gcloud config set core/custom_ca_certs_file /certificates/root.pem

ビルドして、実行していきます

# root.pemに証明書を出力
$ security find-certificate -a -p  > root.pem
# この証明書を含んだDockerfileをビルド
$ docker build -t certificate_test .

これで無事にログインできるか確認します


$ docker run --rm -it certificate_test gcloud auth login
Go to the following link in your browser:

    https://accounts.google.com/o/oauth2/auth?code_challenge=****


Enter verification code: **********
WARNING: `gcloud auth login` no longer writes application default credentials.
If you need to use ADC, see:
  gcloud auth application-default --help

You are now logged in as [***].
Your current project is [None].  You can change this setting by running:

OKです

WarningはGCPのプロジェクトを設定しろよ、という警告なので関係ないです

おわりに

どうしても証明書周りで結構ハマるので、コマンドで証明書を吐き出せるのは助かります。コマンドなら手順的にも入れやすいので。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

libxml-ruby 3.1.0 install on macOS 10.15 Catalina

xml2homebrew などからインストールせずに、macOS 10.15 でOSのライブラリ(Xcode)を使ってlibxml-ruby gem をインストール

gem install

% gem install libxml-ruby -v '3.1.0' -- \
--with-xml2-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr \
--with-xml2-lib=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib \
--with-xml2-include=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libxml2

bundle install

bundler を使う場合は --with-xml2-include だけでないとダメだった

% bundle config build.libxml-ruby --with-xml2-include=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libxml2
% bundle

libxml2 の場所は xml2-config --cflags で参照できる。
GCCなど用に -I フラグがついてしまうので、そのままでは使えないので今回は上記のようにベタがきにした。

% xml2-config --cflags
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libxml2
% xml2-config --libs
-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -lxml2 -lz -lpthread -licucore -lm

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MacOS CatalinaでPostgresqlをインストール・初期操作

導入

卒業制作の関係でWEBアプリを制作しており、レンタルサーバーでsqliteが使えないことが判明しPostgresqlをインストールしようとしたら記事がバラバラで死ぬほど時間がかかったので備忘録。

注意

当チャートは試行錯誤の上にインストールが完了し、最終的にこの流れが正しかったのだろうという振り返りの元、書き込んでいます。環境依存の問題や順番の間違いなど、当方で確認が取れ次第修正はしますが、全て自己責任の元で行ってください。

もし、記事内に修正箇所を発見された方はコメントで教えていただけると幸いです。

環境

MacOS Catallina 10.15
Homebrew 2.1.5
postgresql 11.5

インストール

ここではHomebrewを使ってインストールを進めていきます。
まだインストールしていなければ以下のリンクを参考にしてください。

https://fukatsu.tech/homebrew

Postgresqlのインストール

$ brew install postgresql

その後、

$ brew link postgresql

を、したいがおそらくこの辺りで次のようなエラーコードが出て困ってるはず。

Linking /usr/local/Cellar/postgresql/11.5_1... 
Error: Could not symlink include/ecpg_config.h
/usr/local/include is not writable.

これは/usr/localに書き込み権限が無いため。
となれば書き込み権限を与えればよい。※1

$ sudo chown -R $(whoami) /usr/local

sudoなのでパスワードを入力して実行。
もう一度、linkを行う。

$ brew link postgresql
Linking /usr/local/Cellar/postgresql/11.5_1... 392 symlinks created

link成功。
その後Postgresqlをpostinstallする。

$ brew postinstall postgresql
==> Postinstalling postgresql
==> /usr/local/Cellar/postgresql/11.5_1/bin/initdb --locale=C -E UTF-8 /usr/local

これでPostgresqlのインストールは完了。
最後にデータベースをutf-8で初期化する。

データベースの初期化

$ initdb /usr/local/var/postgres -E utf8
The files belonging to this database system will be owned by user "(ここにユーザーネーム)".
This user must also own the server process.

The database cluster will be initialized with locale "ja_JP.UTF-8".
initdb: could not find suitable text search configuration for locale "ja_JP.UTF-8"
The default text search configuration will be set to "simple".

Data page checksums are disabled.

initdb: directory "/usr/local/var/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/var/postgres" or run initdb
with an argument other than "/usr/local/var/postgres".

なにやらエラーコードが出てるがこれで処理は完了しているらしい。
本当に初期化できてるのか、起動して確認する。

起動

$ brew services start postgresql

バージョン確認

$ psql -V
psql (PostgreSQL) 11.5

この時、psqlコマンドが見つからないとエラーが出た場合、
PostgresqlにPATHが通ってない証拠なので以下のリンクを参考に通す。※2

https://qiita.com/nbkn/items/01a11392921119fa0153

データベース一覧を確認

$ psql -l
                                 List of databases
   Name    |    Owner    | Encoding | Collate | Ctype |      Access privileges      
-----------+-------------+----------+---------+-------+-----------------------------
 postgres  | ユーザーネーム | UTF8     | C       | C     | 
 template0 | ユーザーネーム | UTF8     | C       | C     | =c/ユーザーネーム             +
           |             |          |         |       | ユーザーネーム=CTc/ユーザーネーム
 template1 | ユーザーネーム | UTF8     | C       | C     | =c/ユーザーネーム             +
           |             |          |         |       | ユーザーネーム=CTc/ユーザーネーム
(3 rows)

これが出て、utf-8でエンコードされていれば初期化は成功。
インストール完了となる。

注意点

※1

他のブログなどでは書いてなかったのだが、私の環境ではsudoなのに、このユーザー権限を与える段階あたりでうまく権限が与えられずに困ったことがあった。
調べるとSIPと呼ばれるカーネルセキュリティで保護されているからとのこと。

https://berukann.hatenablog.jp/entry/2015/12/30/123020

上記のリンクを参考にSIPを解除したところ問題なくステップを進めることができた。
もしsudoコマンドで困っている場合は試してほしい。

※2

これも他のブログでは全くといっていいほど説明されてないので、もしかすると環境依存なのかもしれない。おそらく本来ならlinkコマンドが通った時点で追加されるのかもしれないが、当環境では手動でインストールせざるを得なかった。

ちなみに、「psql path」と検索するとこちらのQiitaが一番上に出るが、

https://qiita.com/okame_qiita/items/002fb07786ed9fab1498

こちらの環境ではPostgresqlのインストール場所が、
/usr/local/pgsql/bin/
となっているが、Homebrewインストールの場合はここにはない。
/usr/local/cellar/postgresql/11.5_1/bin
となるので注意。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LibreSSLのエラーが出るときの対処法

curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to XXXXXXX.com:443

このようなエラーが出る

参照

https://entotsu44.hatenablog.com/entry/2019/10/21/063000

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む