【Rails/MySQL】bundle installでgem mysql2がインストールできない時の解決法

1. 開発環境 macOS Monterey:12.3.1 Ruby:3.1.0 Ruby on Rails:6.1.5 Bundler:2.3.12 MySQL:8.0.28(Homebrew3.4.10でインストール) 2. エラー時の状況 RailsでMySQLを使うためにrails new <app> -d mysqlを実行 bundle installの所でエラーが発生(mysql2のインストールに失敗していた) 3. エラーログ $ rails new <appname> -d mysql 省略 run bundle install Fetching gem metadata from https://rubygems.org/........... Resolving dependencies.... 省略 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/mysql2-0.5.3/ext/mysql2 /Users/kazunoko/.rbenv/versions/3.1.0/bin/ruby -I /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0 -r ./siteconf20220503-1924-xwtu0t.rb extconf.rb checking for rb_absint_size()... yes checking for rb_absint_singlebit_p()... yes checking for rb_wait_for_single_fd()... yes ----- Using mysql_config at /usr/local/bin/mysql_config ----- checking for mysql.h... yes checking for errmsg.h... yes checking for SSL_MODE_DISABLED in mysql.h... yes checking for SSL_MODE_PREFERRED in mysql.h... yes checking for SSL_MODE_REQUIRED in mysql.h... yes checking for SSL_MODE_VERIFY_CA in mysql.h... yes checking for SSL_MODE_VERIFY_IDENTITY in mysql.h... yes checking for MYSQL.net.vio in mysql.h... yes checking for MYSQL.net.pvio in mysql.h... no checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN in mysql.h... yes checking for SERVER_QUERY_NO_GOOD_INDEX_USED in mysql.h... yes checking for SERVER_QUERY_NO_INDEX_USED in mysql.h... yes checking for SERVER_QUERY_WAS_SLOW in mysql.h... yes checking for MYSQL_OPTION_MULTI_STATEMENTS_ON in mysql.h... yes checking for MYSQL_OPTION_MULTI_STATEMENTS_OFF in mysql.h... yes checking for my_bool in mysql.h... no ----- Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load ----- ----- Setting libpath to /usr/local/Cellar/mysql/8.0.28_1/lib ----- creating Makefile current directory: /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/mysql2-0.5.3/ext/mysql2 make DESTDIR\= clean current directory: /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/mysql2-0.5.3/ext/mysql2 make DESTDIR\= compiling client.c client.c:178:24: warning: 'rbimpl_tainted_str_new_cstr' is deprecated: taintedness turned out to be a wrong idea. [-Wdeprecated-declarations] VALUE rb_sql_state = rb_tainted_str_new2(mysql_sqlstate(wrapper->client)); ^ /Users/kazunoko/.rbenv/versions/3.1.0/include/ruby-3.1.0/ruby/internal/intern/string.h:1742:29: note: expanded from macro 'rb_tainted_str_new2' #define rb_tainted_str_new2 rb_tainted_str_new_cstr /**< @old{rb_tainted_str_new_cstr} */ ^ /Users/kazunoko/.rbenv/versions/3.1.0/include/ruby-3.1.0/ruby/internal/intern/string.h:1615:7: note: expanded from macro 'rb_tainted_str_new_cstr' rbimpl_tainted_str_new_cstr : \ ^ /Users/kazunoko/.rbenv/versions/3.1.0/include/ruby-3.1.0/ruby/internal/intern/string.h:1401:1: note: 'rbimpl_tainted_str_new_cstr' has been explicitly marked deprecated here RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) ^ /Users/kazunoko/.rbenv/versions/3.1.0/include/ruby-3.1.0/ruby/internal/attr/deprecated.h:36:53: note: expanded from macro 'RBIMPL_ATTR_DEPRECATED' # define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg)) ^ client.c:787:14: warning: incompatible pointer types passing 'VALUE (void *)' (aka 'unsigned long (void *)') to parameter of type 'VALUE (*)(VALUE)' (aka 'unsigned long (*)(unsigned long)') [-Wincompatible-pointer-types] rb_rescue2(do_send_query, (VALUE)&args, disconnect_and_raise, self, rb_eException, (VALUE)0); ^~~~~~~~~~~~~ /Users/kazunoko/.rbenv/versions/3.1.0/include/ruby-3.1.0/ruby/internal/iterator.h:388:26: note: passing argument to parameter 'b_proc' here VALUE rb_rescue2(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2, ...); ^ client.c:795:16: warning: incompatible pointer types passing 'VALUE (void *)' (aka 'unsigned long (void *)') to parameter of type 'VALUE (*)(VALUE)' (aka 'unsigned long (*)(unsigned long)') [-Wincompatible-pointer-types] rb_rescue2(do_query, (VALUE)&async_args, disconnect_and_raise, self, rb_eException, (VALUE)0); ^~~~~~~~ /Users/kazunoko/.rbenv/versions/3.1.0/include/ruby-3.1.0/ruby/internal/iterator.h:388:26: note: passing argument to parameter 'b_proc' here VALUE rb_rescue2(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2, ...); ^ 3 warnings generated. compiling infile.c compiling mysql2_ext.c compiling result.c compiling statement.c statement.c:49:24: warning: 'rbimpl_tainted_str_new_cstr' is deprecated: taintedness turned out to be a wrong idea. [-Wdeprecated-declarations] VALUE rb_sql_state = rb_tainted_str_new2(mysql_stmt_sqlstate(stmt_wrapper->stmt)); ^ /Users/kazunoko/.rbenv/versions/3.1.0/include/ruby-3.1.0/ruby/internal/intern/string.h:1742:29: note: expanded from macro 'rb_tainted_str_new2' #define rb_tainted_str_new2 rb_tainted_str_new_cstr /**< @old{rb_tainted_str_new_cstr} */ ^ /Users/kazunoko/.rbenv/versions/3.1.0/include/ruby-3.1.0/ruby/internal/intern/string.h:1615:7: note: expanded from macro 'rb_tainted_str_new_cstr' rbimpl_tainted_str_new_cstr : \ ^ /Users/kazunoko/.rbenv/versions/3.1.0/include/ruby-3.1.0/ruby/internal/intern/string.h:1401:1: note: 'rbimpl_tainted_str_new_cstr' has been explicitly marked deprecated here RBIMPL_ATTR_DEPRECATED(("taintedness turned out to be a wrong idea.")) ^ /Users/kazunoko/.rbenv/versions/3.1.0/include/ruby-3.1.0/ruby/internal/attr/deprecated.h:36:53: note: expanded from macro 'RBIMPL_ATTR_DEPRECATED' # define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg)) ^ 1 warning generated. linking shared-object mysql2/mysql2.bundle ld: library not found for -lssl clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [mysql2.bundle] Error 1 make failed, exit code 2 Gem files will remain installed in /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/mysql2-0.5.3 for inspection. Results logged to /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/extensions/x86_64-darwin-21/3.1.0/mysql2-0.5.3/gem_make.out /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:95:in `run' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:44:in `block in make' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:36:in `each' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:36:in `make' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:63:in `block in build' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tempfile.rb:317:in `open' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:26:in `build' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:161:in `build_extension' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:195:in `block in build_extensions' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `each' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `build_extensions' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/installer.rb:847:in `build_extensions' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/rubygems_gem_installer.rb:71:in `build_extensions' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/rubygems_gem_installer.rb:28:in `install' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/source/rubygems.rb:204:in `install' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/installer/gem_installer.rb:54:in `install' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/installer/gem_installer.rb:16:in `install_from_spec' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/installer/parallel_installer.rb:186:in `do_install' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/installer/parallel_installer.rb:177:in `block in worker_pool' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/worker.rb:62:in `apply_func' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/worker.rb:57:in `block in process_queue' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/worker.rb:54:in `loop' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/worker.rb:54:in `process_queue' /Users/kazunoko/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.12/lib/bundler/worker.rb:91:in `block (2 levels) in create_threads' An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue. In Gemfile: mysql2 run bundle binstubs bundler Could not find gem 'mysql2 (~> 0.5)' in locally installed gems. rails webpacker:install Could not find gem 'mysql2 (~> 0.5)' in locally installed gems. Run `bundle install` to install missing gems. 4. エラーの原因と思しき箇所 ld: library not found for -lssl opensslのパスが見つからないと言っている gemのmysql2はopensslが必須であり、bundleのビルド時にopensslのパスを設定する必要がある macに標準でopenssl入ってなかったっけ? mac OS High SierraからデフォルトのOpenSSLがLibreSSLに変わった 5. 解決法 bundle configでbundlerの設定ファイルにopensslのパスを設定して、bundle installで再度mysql2をインストールする ...

May 7, 2022

【Rails/MySQL】dotenv-railsを使ってデータベースの認証情報を環境変数で管理する

RailsにMySQLを導入する際に、パスワードをdatabase.ymlに直接書くのはいかがなものかと思い、他の方法を調べた結果、dotenv-railsを使って認証情報を環境変数で管理できることがわかりました。 今回は作成済みのRailsアプリケーションにdotenv-railsを導入する手順を紹介します。 1. 開発環境 macOS Monterey:12.3.1 Ruby:3.1.0 Ruby on Rails:6.1.5 dotenv-rails:2.7.6 MySQL:8.0.28 2. dotenv-railsとは 認証情報などを環境変数で管理するためのgem 起動時にプロジェクトのルートディレクトリにある.envを読み込み、環境変数ENVに設定する dotenv-rails公式レポジトリ 3. 手順 3-1. dotenv-railsのインストール Gemfileに以下を追記します。 gem 'dotenv-rails' dotenv-railsをインストールします。 $ bundle install 3-2. database.ymlの修正 database.ymlを以下のように修正します。 default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV['DATABASE_DEFAULT_USER'] %> password: <%= ENV['DATABASE_DEFAULT_PASSWORD'] %> host: <%= ENV['DATABASE_DEFAULT_HOST'] %> socket: /tmp/mysql.sock development: <<: *default database: <%= ENV['DATABASE_DEV_NAME'] %> test: <<: *default database: <%= ENV['DATABASE_TEST_NAME'] %> <<: *defaultで一番上のdefaultの設定が呼び出されています。 こうやって書いたのと同じ↓ development: adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV['DATABASE_DEFAULT_USER'] %> password: <%= ENV['DATABASE_DEFAULT_PASSWORD'] %> host: <%= ENV['DATABASE_DEFAULT_HOST'] %> socket: /tmp/mysql.sock database: <%= ENV['DATABASE_DEV_NAME'] %> 3-3. .envの作成 アプリケーションのルートディレクトリ配下に、.envを作成します。 ...

May 5, 2022

【無料】プログラミング質問サイトまとめ【日本・海外】

本稿では、エンジニア向けの技術系Q&Aサイトを紹介します。 1. 日本 1-1. teratail(テラテイル) teratail【テラテイル】|ITエンジニア特化型Q&Aサイト 投稿した質問・回答の削除は原則不可(teratail 投稿の削除ポリシー) 1-2. Qiita(キータ) Qiita 「投稿する」>「質問」>「フォーマットを選択」>「Q&A」 1-3. スタック・オーバーフロー スタック・オーバーフロー Stack Overflowの日本語版 スタック・オーバーフローMeta(スタック・オーバーフローについてのQ&Aサイト) 1-4. クォーラ Quora - 知識を共有し合い、世界を知ろう 技術系じゃない質問もある 2. 海外 2-1. Stack Overflow Stack Overflow 日本語版とアカウントは共通 2-2. Stack Exchange All Sites - Stack Exchange 技術系じゃない質問もある 2-3. Code Project Code Project 2-4. Code Ranch Coderanch, a friendly place for programming greenhorns! 2-5. Reddit Reddit - ソーシャルの新たな中心地 技術系じゃない質問もある 【参考】 Top 11 Alternatives of Stack Overflow Comparison of Q&A sites 技術系メーリングリストで質問するときのパターン・ランゲージ_結城浩

May 4, 2022

MySQLをHomebrewでインストールしてセキュリティ設定を行う

本稿ではMySQLのインストールからセキュリティ設定までの手順を解説します。 1. 開発環境 macOS Monterey バージョン12.3.1 Homebrew 3.4.10 MySQL 8.0.28 2. 手順 2-1. MySQLのインストール HomebrewでMySQLをインストールします。 $ brew install mysql MySQLがインストールされたことを確認します。 $ brew info mysql brew info - Homebrew Documentation 2-2. MySQLのセキュリティ設定 サーバーを起動します。 $ mysql.server start セキュリティ設定を開始します。 $ mysql_secure_installation 以下の項目の設定を行います。 VALIDATE PASSWORDプラグインの利用確認 rootユーザーのパスワード設定 匿名ユーザーの削除 リモートからrootユーザでログインできないようにする testデータベースの削除 ユーザーの権限に関するテーブルの再読み込み # VALIDATE PASSWORDプラグインの利用確認 VALIDATE PASSWORD COMPONENT can be used to test passwords 省略 Press y|Y for Yes, any other key for No:<Enterを押してスキップ> # rootユーザーのパスワード設定 Please set the password for root here. New password:<パスワードを入力> # 匿名ユーザーの削除 By default, a MySQL installation has an anonymous user, 省略 Remove anonymous users? (Press y|Y for Yes, any other key for No) : <yを入力> # リモートからrootユーザでログインできないようにする Normally, root should only be allowed to connect from 省略 Disallow root login remotely? (Press y|Y for Yes, any other key for No) :<yを入力> # testデータベースの削除 Remove test database and access to it? (Press y|Y for Yes, any other key for No) :<yを入力> # ユーザーの権限に関するテーブルの再読み込み Reload privilege tables now? (Press y|Y for Yes, any other key for No) :<yを入力> MySQL 8.0 リファレンスマニュアル 「mysql_secure_installation」 ...

May 3, 2022

【IE記法】ER図の書き方

1. IE記法とは ER図の記法の一つ IE記法とIDEFX1記法がメジャー 別名「鳥の足記法」(Crow’s Foot Notation) 明確な規格がない 2. IE記法で使われる図形 2-1. エンティティ エンティティを長方形(角付)で書く エンティティ名を長方形の1段目に書く 2-2. アトリビュート(属性) 属性名を長方形の2段目に書く 主キーは、属性名の前に*を書く 2-3. リレーションシップ(関係) リレーションシップを実線で書く 2-4. カーディナリティ(多重度) カーディナリティとオプショナリティを書く カーディナリティ(cardinality) エンティティから近い方に書く 関連付くインスタンスの最大数を表す オプショナリティ(optionality) エンティティから遠い方に書く 関連付くインスタンスの最小数を表す modalityと言ったりもする 1をmandatory(必須)、0をoptional(任意)と呼ぶ カーディナリティとオプショナリティ 組み合わせ オプショナリティ カーディナリティ Aインスタンス1つに対するBインスタンスの数 (1) 1 1 1 (2) 0 1 0または1 (3) 1 多 1以上 (4) 0 多 0以上 3. IE記法で書いたER図 3-1. 1対1 3-2. 1対多 3-3. 多対多 ...

May 3, 2022

【Linuxコマンド】grep・egrep・fgrepの違い

本稿では、Linuxのgrep・egrep・fgrepコマンドの違いを解説します。 grep パターンを基本正規表現(BRE:Basic Regular Expression)として扱う egrep パターンを拡張正規表現(ERE:Extended Regular Expression)として扱う grep -Eと同じ fgrep パターンを固定文字列として扱うため、文字列をそのまま検索できる(正規表現を認識しない) grep -Fと同じ 以下のファイルを使用してそれぞれのコマンドの違いを見ていきます。 $ cat check_file file (f|g)ile '\(f\|g\)ile' 1. grep grepで使われるBRE(基本正規表現)では{,},(,),|,+,?を通常の文字列として扱います。 そのため、これらのメタ文字をちゃんとメタ文字として扱うには逆にエスケープが必要です。 $ grep -C 0 '(f|g)ile' check_file (f|g)ile $ grep -C 0 '\(f\|g\)ile' check_file file 1つ目の検索のように(,|,)をエスケープしない場合、BREはこれらのメタ文字を通常の文字列として扱うため、(f|g)ileという文字列を検索します。 2つ目の検索のように(,|,)をエスケープすると、BREはこれらをメタ文字として扱うため、メタ文字の意味通りにfileまたはgileという文字列を検索します。 2. egrep egrepで使われるERE(拡張正規表現)ではメタ文字をそのままメタ文字として扱うため、正規表現を使った検索に向いています。 $ egrep -C 0 '(f|g)ile' check_file file $ egrep -C 0 '\(f\|g\)ile' check_file (f|g)ile 1つ目の検索のように(,|,)をエスケープしない場合、EREはメタ文字の意味通りにfileまたはgileという文字列を検索します。 2つ目の検索のように(,|,)をエスケープすると、EREはこれらのメタ文字を通常の文字列として扱うため、(f|g)ileという文字列を検索します。 3. fgrep fgrepはメタ文字を認識しないため、直接文字列を検索するのに向いています。 $ fgrep -C 0 '(f|g)ile' check_file (f|g)ile $ fgrep -C 0 '\(f\|g\)ile' check_file '\(f\|g\)ile' 1つ目の検索では、fgrepはメタ文字を通常の文字列として扱うため、(f|g)ileという文字列を検索します。 2つ目の検索では、fgrepは\も通常の文字列として扱うため、\(f\|g\)ileという文字列を検索します。 【参考】 What’s Difference Between Grep, Egrep and Fgrep in Linux? Man Page of grep Linuxのコマンドで使われる正規表現の違い

April 27, 2022

【MySQL】ERROR 1064 (42000)→構文ミスが見つからない→予約語が原因かも

MySQLで構文は絶対正しいはずなのに、ERROR 1064 (42000)が出た時の話です。 解決法 予約語をバッククォートで囲む 1. ERROR 1064 (42000)について ERROR 1064 (42000)は構文エラーです。 以下のようなエラーメッセージが出力されます。 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near [入力したSQL文の一部] at line 1 解決法としては、基本的にはドキュメントと自分が書いたSQLを見比べて、構文ミスを見つけるだけなんですが… MySQL 8.0 リファレンスマニュアル(SQLステートメント) 2. 構文ミスが見つからない→予約語が原因かも 2-1. エラー発生 以下のSQL文でERROR1064(42000)の構文エラーが発生しました。 mysql> CREATE TABLE order (id INT); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order (id INT)' at line 1 2-2. 解決法 予約語である「order」をバッククォートで囲むことでエラーが解消されました。 ...

April 8, 2022

Alfredのブックマーク検索機能の使い方

本稿では、macOS用ランチャーアプリAlfredの「ブックマーク検索機能」について、設定方法や使い方を解説していきます。 1. 環境 macOS Monterey バージョン12.2.1 Alfred 4.6.3 2. ブックマーク検索機能とは Alfredの便利な機能の一つに「ブックマーク検索機能」があります。 ブックマークの名前・URL・フォルダ名で検索して、ブックマークしたサイトを開くことができます。 これまではブックマークしたサイトを開くには、以下の3ステップが必要でした。 ブラウザを開く ブックマークを選択 サイトが表示される これが、Alfredの「ブックマーク検索機能」を使うと以下のようになります。 Alfredで検索 サイトが表示される たったの2ステップでブックマークしたサイトを開くことができます。 また、階層構造になったブックマークフォルダの場合も、見たいサイトを一発で開くことができます。 3. 設定方法 設定方法は「Alfredの設定」と「Macの設定」に分かれます。 3-1. Alfredの設定 まずはAlfredの「Web Bookmarks」の設定を行います。 3-1-1. Alfred Preferencesを開く Alfredを起動した状態で、デスクトップ上部のメニューバーからAlfredのアイコンを選択し、「Preferences…」をクリックしてAlfred Preferencesを開きます。 3-1-2. Web Bookmarksを設定する Alfred Preferencesの「Features」→「Web Bookmarks」から各項目の設定を行います。 Sources ブックマークの検索対象とするブラウザを設定する項目です。 SafariとChromeで登録したブックマーク(またはどちらか一方のブックマークのみ)を検索対象に選択できます。 Chromeの場合は、選択したユーザーで登録したブックマークのみが検索対象になります。 Show bookmarks ブックマーク検索時のプレフィックスを設定する項目です。 プレフィックスを指定して検索することで、検索結果にブックマークのみを表示することができます。 【実行例:ブックマークの「PhotoshopVIP」を検索】 プレフィックスを設定していない場合(「in default results」) →PhotoshopVIPだけでなく、Photoshopアプリも検索結果に表示されてしまう。 プレフィックスを設定した場合(「via keyward」で「bm」を設定) →PhotoshopVIPだけが表示される Open Bookmarks ブックマークを表示するブラウザを設定する項目です。 ...

February 28, 2022

MacBookでシェルをbashやzshに切り替える方法

macOS Catalinaからデフォルトのシェルがbashからzshに変わりました。 「zshに変更したい」「bashに戻したい」などシェルを切り替えたい時があると思います。 本稿では、MacBookでシェルを切り替える方法を紹介します。 1.現在使用中のシェルの確認 % echo $SHELL /bin/zsh 2.使用可能なシェル一覧の確認 % cat /etc/shells # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/dash /bin/ksh /bin/sh /bin/tcsh /bin/zsh 3.シェルの変更 % chsh -s /bin/bash Changing shell for username. Password for username: ユーザーのパスワードを入力します。 ターミナル再起動後、シェルが切り替わります。 エラーの場合 chsh: no changes madeのエラーが出た場合は以下の手順でシェルを変更します。 「システム環境設定」 「ユーザとグループ」 左下の鍵アイコンをクリックしてロック解除 現在のユーザを右クリックして「詳細オプション」 「ログインシェル」を変更 4.設定ファイルの読み込み $ cat .zshrc >> .bashrc $ source ~/.bashrc これで設定ファイルの内容が反映されます。 ...

February 1, 2022