Atom公式の推奨する手順に従って、AtomをUbuntuにインストールしました。
結論を言うと、次の4行のコマンドを実行します。
$ wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add - $ sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list' $ sudo apt update $ sudo apt install atom
このコマンドで行っている処理をそれぞれ読み解いていきます。
はじめに
おはよう。@bioerrorlogです。
Linuxではエディタとしてvimを使っています。 使いこなせばとても優秀なエディタだそうですが、初心者としては使いにくい部分があるのは事実です。
そこでとりあえず、Windowsでいつも私が使っているエディタAtomを、Ubuntuにもインストールしてみました。
インストール方法がAtom公式ホームページで解説されていましたが、初心者である私にとってその処理内容は謎ばかりでした。 今回は、その一つ一つの手順を読み解いていきます。
↓Atom公式のインストール方法ヘルプ
Installing Atom
作業環境
Ubuntu18.04.1 LTS を
Windows10の上に、VMwareによって構築した仮想環境で起動しています。
www.bioerrorlog.work
UbuntuにAtomをインストールする
1行目 | 認証キーのダウンロード・登録
$ wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -
wget
コマンドをとあるURLに対して実行し、その結果をパイプでsudo apt-key add -
に渡しているようです。
まずはwget
コマンドとそのオプション-pO
の機能について、マニュアルから調べます。
$man wget
NAME Wget - The non-interactive network downloader. ~ -q --quiet Turn off Wget's output. ~ -O file --output-document=file The documents will not be written to the appropriate files, but all will be concatenated together and written to file. If - is used as file, documents will be printed to standard output, disabling link conversion. (Use ./- to print to a file literally named -.) Use of -O is not intended to mean simply "use the name file instead of the one in the URL;" rather, it is analogous to shell redirection: wget -O file http://foo is intended to work like wget -O - http://foo > file; file will be truncated immediately, and all downloaded content will be written there.
wget
コマンドはネットワークダウンローダーであり、オプション-p
はただ出力を表示しないという意味みたいです。
面白いのは次の出力オプション-O
で、出力ファイルとして-
を指定すると、結果が標準出力にプリントされると書いてあります。
今回実行するwget
コマンドの前半部分は$ wget -qO - <URL>
ですので、まさにURLからダウンロードした結果の出力先に-
が指定されており、標準出力として後半のsudo apt-key add -
へとパイプされることになります。
さて、次はダウンロードするURLhttps://packagecloud.io/AtomEditor/atom/gpgkey
を調べてみます。
まずはこのURLにブラウザからアクセスしてみました。
するとダウンローダーが立ち上がり、”AtomEditor-atom-4C6E74D6C0A35108.pub.gpg”というファイルのダウンロードを提示されました。
先のwget
コマンドではこのファイルをダウンロードし、sudo apt-key add -
へとパイプしたわけでしょう。
さっそくこのファイルを手動でダウンロードし、中身を調べてみます。
まずはfile
コマンドでファイルタイプを調べます。
$ file AtomEditor-atom-4C6E74D6C0A35108.pub.gpg AtomEditor-atom-4C6E74D6C0A35108.pub.gpg: PGP public key block Public-Key (old)
ファイルタイプは"PGP public key block Public-Key"とあります。
これは暗号化でよく聞く公開鍵というやつでしょう。
"PGP"をwikipediaで調べてみると
Pretty Good Privacy (PGP) is an encryption program that provides cryptographic privacy and authentication for data communication.
やはりデータ通信のための暗号化プログラムのようです。
実際に"AtomEditor-atom-4C6E74D6C0A35108.pub.gpg"ファイルの中身を見てみると、
$ cat AtomEditor-atom-4C6E74D6C0A35108.pub.gpg -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.11 (GNU/Linux) mQINBFo0Ix8BEADWFvFinBKSD+0OTCGrY4F+GxdXdZm3tCT0YxSc54phh6JaDGvs 7gkNYNl4nbGPMK7jfN0X859BOFqBUUZ7A49C3fMVtjT7Q5SIrRCRyuHxy+RHs/gi 1+veNxJU5kQLM2RHC0kzOFczGc83JJvuyecDLfRp9DzpgNFG8BunazByfqz5WhFu ~中略~ z2PiG8U/1G4rcGyRaYbh0YA2GzsM9iGLds7YaMRGhMDytNqZOairMdZJRc5u7x4i Md1AC6VBgFkelmdqGxyFIFqL3OjzgnCA5xjtKyHctxUldkIVPB/Tuso2pWeybzbt geP9xVV2t32y5Vnm184J09woo9YPSkdHtwhACy8KUFjcTr+gPK4MuDPi =xIV1 -----END PGP PUBLIC KEY BLOCK-----
膨大な文字列が記載されています。
これが公開鍵、はじめて出会いました。
さて次は、このダウンロードされた公開鍵がsudo apt-key add -
へと渡されています。
apt-key
をマニュアルで調べてみると、
DESCRIPTION apt-key is used to manage the list of keys used by apt to authenticate packages. Packages which have been authenticated using these keys will be considered trusted. ~ COMMANDS add filename Add a new key to the list of trusted keys. The key is read from the filename given with the parameter filename or if the filename is - from standard input.
パッケージを認証するための鍵リストを管理する機能があるようです。
今回のケースでは”AtomEditor-atom-4C6E74D6C0A35108.pub.gpg”を新たな認証キーとして登録するということなのでしょう。
add -
とすることで、標準入力から読み込むことができるようです。
以上より、1行目では新たな認証キーをダウンロード・登録していることが分かりました。
[関連記事] LinuxではじめてのC言語を実行する | vim + gcc
2行目 | aptにAtomリポジトリを登録
それでは2行目に移ります。
$ sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'
sh ~
からはじまる前半部分の結果が、/etc/apt/sources.list.d/atom.list
へと、sudo
権限のもとで出力されています。
まずはsh
コマンドのマニュアルを調べます。
$ man sh
NAME dash — command interpreter (shell) ~ -c Read commands from the command_string operand instead of from the standard input. Special parameter 0 will be set from the command_name operand and the positional parameters ($1, $2, etc.) set from the remaining argument operands.
dash
コマンドのマニュアルに飛びました。
Ubuntuではsh
はdash
という名前だそうです。
dash
はコマンドインタプリタで、シェルスクリプトの実行などに使われるもののようです。
しかし、ここで-c
オプションを与えると、指定したコマンド文字列を実行させることができます。
今回のケースでは'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'
が実行される訳です。
こいつは大変面白い工夫です。
例えば今回のこのコマンドをsh -c
を使わずに実行してみたとすると、
$ sudo echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list
となりますが、これはうまく行きません。
リダイレクト> /etc/apt/sources.list.d/atom.list
にsudo
権限が及んでいないため、出力ができないからです。
そこで、echo ~
以下のコマンドをすべてひとまとまりとし、sh -c
に渡してsudo
権限で実行することで、/etc/apt/sources.list.d/atom.list
への出力までを実現できるということでしょう。
実によくできていると思いました。
ちなみに、/etc/apt/sources.list.d/atom.list
の中身を確認してみると、
$ cat /etc/apt/sources.list.d/atom.list deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main
たしかに指定した文字列が書き込まれていました。
この書き込まれたURLを見ると、Atomのpackagecloudリポジトリが指定されています。
AtomEditor/atom - Packages · packagecloud
ここからAtomパッケージをダウンロードできます。
つまりこの行では、aptディレクトリにAtomパッケージのリポジトリを登録した、ということになります。
[関連記事] Ubuntuディスプレイ解像度の変更 | 1920x1080
3-4行目 | aptインストール
$ sudo apt update $ sudo apt install atom
3-4行目でやっていることは、普段aptでパッケージをインストールするのと変わりありません。
aptをアップデートした後、Atomをインストールしています。
以上によって、Atomをインストールできました。
おわりに
今回は、Atom公式の推奨するインストール手順を読み解いてきました。
無事Atomもインストールできましたし、それぞれのコマンド処理内容もとりあえず把握できましたが、まだまだわからないことだらけです。
登録した公開鍵は実際どのようにして、何の認証に使われているのでしょうか。 そもそも、aptインストールとはつまるところ何を行っているのでしょうか。
単なるAtomのインストール作業から、思いもよらぬ謎が豊富に湧き上がってきました。
こういうのも、なかなか面白いことです。