Ruby on Rails

MSYS2を理解したい

投稿日:

こんにちは、Shinyaです

Windows10でrailsを使うためにMSYS2をインストールしようとしているのですが、ことごとく失敗しているので、本格的に理解していこうということで調べ物や薄い理解を残していきます

めっちゃ理解が薄いので間違いなどあるかもしれません

現状の理解

Rubyを使うだけならMSYS2は必要ないが、gemのrailsを使うためにはRubyがC言語を内部的に必要とする(with native extensions)

C言語を扱うためにMinGWが必要で、そのためにMSYS2が必要

インストールしようとすると、

  • pacman
  • IPC connect call
  • GnuPG agent

あたりでエラーが出る

(以前は上手くインストールできたのにアンインストールしたらできなくなってしまった(笑))

試したこと

  • RubyInstallerのwith Devkitでインストール
  • MSYS2のサイトからインストール
  • Chocolateyでインストール

全部同じようなエラーで失敗

エラーの一例(Chocolateyでインストールしようとしたとき)

Installing to: C:\tools\msys64
Extracting 64-bit C:\ProgramData\chocolatey\lib\msys2\tools\msys2-base-x86_64-20190524.tar.xz to C:\tools\msys64...
C:\tools\msys64
Extracting C:\tools\msys64\msys2-base-x86_64-20190524.tar to C:\tools\msys64...
C:\tools\msys64
Invoking first run to setup things like bash profile, gpg etc...
Invoking msys2 shell command: -defterm -no-start -c "ps -ef | grep '[?]' | awk '{print $2}' | xargs -r kill"
mkdir: cannot change permissions of '/dev/shm': Permission denied
mkdir: cannot change permissions of '/dev/mqueue': Permission denied
Copying skeleton files.
These files are for the users to personalise their msys2 experience.

They will never be overwritten nor automatically updated.

'./.bashrc' -> '/home/owner/.bashrc'
'./.bash_logout' -> '/home/owner/.bash_logout'
'./.bash_profile' -> '/home/owner/.bash_profile'
'./.inputrc' -> '/home/owner/.inputrc'
'./.profile' -> '/home/owner/.profile'
'C:\Windows\system32\drivers\etc\hosts' -> '/etc/hosts'
'C:\Windows\system32\drivers\etc\protocol' -> '/etc/protocols'
'C:\Windows\system32\drivers\etc\services' -> '/etc/services'
'C:\Windows\system32\drivers\etc\networks' -> '/etc/networks'
gpg: /etc/pacman.d/gnupg/trustdb.gpg: trustdb created
gpg: no ultimately trusted keys found
gpg: starting migration from earlier GnuPG versions
gpg: can't connect to the agent: IPC connect call failed
gpg: error: GnuPG agent unusable. Please check that a GnuPG agent can be started.
gpg: migration aborted
gpg: starting migration from earlier GnuPG versions
gpg: can't connect to the agent: IPC connect call failed
gpg: error: GnuPG agent unusable. Please check that a GnuPG agent can be started.

予想されるエラー原因

  • MSYS2のアンインストールが上手くいってない
  • バグ
  • 設定ファイルか何か
  • ロックファイル
  • pacman関係
  • キー関係

分からない言葉

  • MSYS2
  • MinGW
  • gcc
  • g++
  • ツールチェイン
  • pacman
  • IPC
  • gpg(Gnu Privacy Guard)

MSYS2とは

MSYS2 は,Windows 上で UNIX/Linux と同じ UNIX風シェル環境を提供するものです.この上に MinGW を導入すれば,gcc/g++ コンパイラや各種開発ツールを用いてシェル環境上で C/C++ 言語プログラムを開発できます
...
MSYS (Minimal SYStem)は,Windows上で動作する UNIXシェル(Bash)や各種ツール類 (gawk, sed, tar など) を統合したプログラム開発環境を提供するパッケージです.コンパイラ環境である MinGW (Minimalist GNU for Windows) をより使い易くサポートするものです.MSYS2 は,MSYS の別バージョンとして MSYS とは独立に開発されています.

https://sehermitage.web.fc2.com/program/win_msys2.html

MSYS(Minimal SYStem)は、Windows上で動作するUnixシェル(Bash)やテキスト操作ユーティリティ(gawk, sed, findutil)、ソースコードパッチ用ツール(diffutil), アーカイブツール(tarbzip2zlib)を統合したパッケージである。MinGWを補う目的で作られた。
...
Unix向けのソフトウェアパッケージの一種であるtarボール(tar + gzip形式あるいはtar + bzip2形式で圧縮されたソフトウェア自体のソースコード/スクリプトのセット)からソフトウェアを構築・インストールするために最低限必要なツール群を提供している。また、仮想ターミナルソフト(rxvt)やCUIのテキストエディタ(Vim)も同梱しており、MinGWと併用する最小限のUnix風のCUI環境として利用することができる。

https://ja.wikipedia.org/wiki/MSYS

「MSYS2とは」まとめ

  • WindowsにUnix環境を提供するもの
  • MinGWを使いやすくする

gccとは

gccとは、GNUプロジェクトが開発・公開しているコンパイラ。様々なプログラミング言語のコンパイラを集めたパッケージとなっている。多くのUNIX系OSで標準的に利用され、オープンソースのOSではOS自体のコンパイルに用いられることも多い。

http://e-words.jp/w/gcc.html

g++とは

gccは,GNU C Compilerの意味
・g++は,GNU C++ Compilerの意味
なお,gccとg++はともにGNU Compiler Collection(Wikipedia)のcompiler-driver(コンパイラを呼び出すプログラム).

https://kamocyc.hatenablog.com/entry/2020/01/23/075331

「gccとg++とは」まとめ

GNUの開発したC言語とC++のコンパイラー

MinGWとは

MinGW(ミン・ジー・ダブリュー、Minimalist GNU for Windows)はGNUツールチェーンWindows移植版である。MinGWはWindows APIのためのヘッダファイルを含んでおり、フリーコンパイラであるGCCを、Windowsアプリケーションの開発のために利用できる。

https://ja.wikipedia.org/wiki/MinGW

MinGW(Minimalist GNU for Windows)とは、GCC などの開発環境をWindowsで利用できるようにしてくれる便利なアプリです。

https://webkaru.net/clang/mingw-gcc-install/

MinGWとはWindows上で使えるGNUのツールチェインのひとつだ。
ツールチェインとはmake, gcc, gdb, binutils, ライブラリなどがセットになった開発用パッケージのことだ。
MinGWをインストールするとWindows上でconfigureやmake(mingw32-make)が可能となる。

https://qiita.com/Ted-HM/items/4f2feb9fdacb6c72083c#pacman

「MinGWとは」まとめ

gccをWindows環境で使えるようにするツールチェイン

ツールチェインとは

ソフトウェア分野におけるツールチェーン: toolchain)は、製品(典型的には他のコンピュータ用のプログラム、またはシステムプログラム)を製作するのに使われるプログラム(ツール)の集合体である。一つのツールの出力が他のツールの入力となり、連鎖的に使われることからツールチェーンと呼ばれる。

https://ja.wikipedia.org/wiki/%E3%83%84%E3%83%BC%E3%83%AB%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3

GNUツールチェーンは、GNUプロジェクトが生み出したプログラミングツール群の総称。これらツールがツールチェーン(次々と使用されるようなツール群)を形成し、アプリケーションソフトウェアオペレーティングシステムの開発で使われる。
GNUツールチェーンは、LinuxカーネルBSD組み込みシステム向けソフトウェアなどの開発で重要な役割を果たしている。SolarismacOSWindowsCygwinMinGW/MSYS経由)、PlayStation 3[1]などでも、そのまま、あるいは移植した上でGNUツールチェーンを使っている。

https://ja.wikipedia.org/wiki/GNU%E3%83%84%E3%83%BC%E3%83%AB%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3

「ツールチェインとは」まとめ

複数のプログラムが連携して動作するひとつのまとまり

pacmanとは

pacmanはMSYS2のパッケージ管理システムだ。
ArchLinux由来でとても使い勝手がいい。
パッケージ管理システムの便利さに慣れてしまえば、もうそれ無しではいられない。
MSYS2(mintty+bash)を起動したら初めにやることはパッケージの更新だ。

https://qiita.com/Ted-HM/items/4f2feb9fdacb6c72083c#pacman

「pacmanとは」まとめ

msys2のパッケージ管理システム

IPCとは

IPCとは、コンピュータ上で実行中のプログラムの間でデータをやり取りするための仕組み。あるプログラムから別のプログラムへデータやメッセージを通知したり、データの提供依頼や処理依頼を行ったり、依頼に対する結果を返したりすることができる。

http://e-words.jp/w/IPC.html

「IPCとは」まとめ

通信手段、、かな(笑)

gpgとは

GnuPG is a complete and free implementation of the OpenPGP standard as defined by RFC4880 (also known as PGP). GnuPG allows you to encrypt and sign your data and communications; it features a versatile key management system, along with access modules for all kinds of public key directories. GnuPG, also known as GPG, is a command line tool with features for easy integration with other applications. A wealth of frontend applications and libraries are available. GnuPG also provides support for S/MIME and Secure Shell (ssh).

https://gnupg.org/

GnuPG は、OpenPGP から派生した、企業が使用できるもう1つの無料の暗号化規格であり、シマンテックの PGP の代わりとして機能します。主な違いはサポートされているアルゴリズムですが、デザイン上、GnuPG は PGP と遜色なく機能します。

https://blog.ipswitch.com/jp/the-difference-between-pgp-openpgp-and-gnupg-encryption

pgpとは

Pretty Good Privacy は、その頭字語である PGP もよく使われますが、元々は盗聴されずにコミュニケーションをとるための手段として、Phil Zimmerman 氏によって、1991年に作成されたものです。今日では、テキストメッセージと電子メールの暗号化と復号化に使用されています。手短かに言うと、メッセージやファイルを暗号化して送りたい場合、ランダムな鍵で暗号化してから、その鍵を受信者の公開鍵で暗号化します。公開鍵は、指定された受信者だけが持っている秘密鍵でしか復号化できないようになっています。公開鍵がわかっていたとしても、メッセージやファイルを復号化できるのは、秘密鍵を持っている受信者だけということです。

https://blog.ipswitch.com/jp/the-difference-between-pgp-openpgp-and-gnupg-encryption

「gpgとは」まとめ

GNUが作ったオープンなpgp(暗号化アプリケーション?)

いま(2020/4/30)のまとめ

多分これが核心かな、、

GnuPG agent unusable.

ネット記事見てるとここで引っ掛かってる人そんなにいなそう

英語記事は多いし、試したけど、上手くいかない

全体的に参考資料が少ない

どちらにしろgpg周辺を理解する必要がある

gpgはなんとなくわかったけど、そもそもなんでMSYS2のインストールにgpgが必要なのか分からない

がんばろう(´;ω;`)

ちなみにWSLにUbuntu入れてその上にrailsは構築できた

けどWindowsに直接立てたいんだ!!

-Ruby on Rails
-

Copyright© 初心者のためのプログラミング独学ブログ , 2020 All Rights Reserved Powered by STINGER.