Chromebook を導入する 6 — Git & Go コンパイラ

no extension

さて。 色々と脱線したが「Chromebook を導入する 3」の続きでようやく git の設定を始めるですよ。 その前に Linux サブシステムの日本語化pinentry-gnome3 の導入を済ませておく。 以降はこれらの設定が終わってることを前提に書いていく。

Git のセットアップ

Git は最初から入っているのだが,見ての通り最新バージョンではない(2024-05-06 時点の最新は 2.45.0)。

git version

Ubuntu であれば PPA から最新をインストールできるのだが, Debian にはそういうのはないらしい。 最新バージョンが欲しければソースコードをビルドして自前で用意しないとダメなようだ。 なんだかなぁ。 Debian 系ってそういう文化なのかね。

というわけで git のバージョンアップは諦めて,とっととセットアップを済ませてしまおう。

最初に ~/.config/git/config ファイルを作っておく。 中身は空でよい。

$ touch ~/.config/git/config

こうしないと勝手に ~/.gitconfig ファイルを作ってくれやがるので,ホームディレクトリが煩くなるのだ。

ファイルを作ったら初期設定を行う。 初期設定なんか滅多にやらないので忘れてしまってるよ(笑) まずは基本情報から。

$ git config --global user.name "username"
$ git config --global user.email "username@example.com"

実際には自分の名前とEメールアドレスで置き換えること。

次は電子署名関連のの設定

$ git config --global user.signingkey 4F56CCE34EB6819E
$ git config --global commit.gpgSign true
$ git config --global tag.gpgSign true

これでコミットおよびタグ付与の際に電子署名を付けてくれる。 user.signingkey の後ろの 4F56CCE34EB6819E の部分は各自の電子署名鍵の鍵 ID で置き換えること。 鍵 ID は gpg --list-keys コマンドの出力で分かる。

以下の設定はお好みで。

$ git config --global core.autocrlf input
$ git config --global init.defaultBranch main

私はリモートの Git リポジトリへのアクセスに ssh を使うことを想定している(「Chromebook を導入する 3」を参照のこと)。 もし HTTPS アクセスを使う場合は credenntial 情報を管理するためのツールの導入や設定が必要になるかも知れない。

設定した内容は

$ git config --global -l

で確認できる。

Go コンパイラのインストール

Chromebook の Linux サブシステムには GCC や Go コンパイラは入ってない。 いずれも APT でインストールできるのだが APT の Go コンパイラはバージョンが古いので(そういうとこよ),公式サイトからバイナリを取ってきて展開する。

$ cd /usr/local/src
$ sudo curl -L "https://go.dev/dl/go1.22.2.linux-amd64.tar.gz" -O
$ cd ..
$ sudo tar xvf src/go1.22.2.linux-amd64.tar.gz
$ sudo mv go go1.22.2
$ sudo ln -s go1.22.2 go

Go コンパイラへの PATH は /etc/profile/usr/local/go/bin を追記しておけばいいだろう。 これで

$ go version
go version go1.22.2 linux/amd64

と起動が確認できた。

Git と Go コンパイラの動作を確認する

今回はあらかじめ GitHub に動作確認用のリポジトリを作っておいた。

これをローカルに git clone する。

Hello World

go run hello.go 実行で “Hello World!” が表示されるところまで確認できた。 ソースコードはこんな感じ。

package main

import "fmt"

func main() {
    fmt.Println("Hello World!")
}

このコードの “World” の部分を “Chromebook” に書き換えて GitHub にプッシュするところまでやってみる。

Hello Chromebook

上手く行ったかな? ちなみにこの時点ではエディタに vim を使っている。 GitHub サイトで確認してみよう。

Hello Chromebook

うんうん。 ちゃんとコミットに電子署名が付いてるね。 これでよーやく VS Code を導入する準備ができたよ。

【2024-05-12 追記】 Go の開発環境を外部ストレージに構築する

内部ストレージを十分備えている Chromebook なら以下の設定は不要だと思う。 たとえば ASUS CX34 シリーズなら十分なストレージ容量を持つ(これで税込8万円切るもんなー)。 まぁ,私の場合は14インチという時点で対象外だが。

Go の環境設定については以下の拙文が参考になる。

Chromebook を導入する 2」で

$ ln -s /mnt/chromeos/removable/SD\ Card/linux ~/ws

てな感じに外部ストレージのディレクトリをシンボリックファイルで繋いだので, ~/.profile に以下の内容を追記してみた。

if [ -d "$HOME/ws/go" ] ; then
    export GOPATH="$HOME/ws/go"
    export GOCACHE="$GOPATH/go-build"
    export GOBIN="$GOPATH/bin"
    PATH="$GOBIN:$PATH"
fi

この設定が効いてる状態で go env コマンドの結果を見てみる。

go env

注目する変数は GOPATH, GOBIN, GOCACHE, GOCMODACHE あたり。 これらの設定が外部ストレージを指示していれば問題ない。

外部ストレージのファイルモード

外部ストレージのファイルにファイルを置くと何故か実行権限 x が付いてしまう。 しかも chmod コマンドで変更できないようだ。 ちなみに chown コマンドも効かない。

軽くググってみたら以下の記事を見つけた。

こちらは外部ストレージファイルを実行できないというものだが,私の環境を見ると /etc/mtab を見ると

9p /mnt/chromeos 9p rw,nosuid,nodev,relatime,access=any,msize=65560,trans=fd,rfd=18,wfd=18 0 0

となっていて noexec が外されているようだ。 これによって /mnt/chromeos 以下の外部ストレージの全ファイルが実行可能ファイルになってしまうっぽい?

いろいろ追加で調べている中で、/mnt/chromeosをマウントする際に指定されていたファイルシステム「9P(Plan 9 Filesystem Protocol)」(/etc/mtab に記載されていたファイルシステム)について調べつつ、Chromium OSのissue trackerを確認したところ、どうやらこの9p(p9)を利用することと、chownが利用できないことに関連があるようでした(「by design」とあるので、不具合というよりそもそもの仕様として、というようなイメージ)。

これはちょっと取り扱い注意かも。 それにしても,なんで安全でない方に倒すかね。

念のため git にも以下の設定を加えておく。

$ git config --global core.filemode false
$ git config --global core.ignorecase false

これでうっかり実行可能ファイルとしてコミットしてしまうこともないだろう。 ちなみにファイル名の大文字小文字も区別しないので core.ignorecasefalse にしておく(これは外部ストレージのフォーマットのせいかな)。

ブックマーク

参考

photo
【Amazon.co.jp限定】 ASUS Chromebook クロームブック Flip CX1 11.6インチ 2-in-1 タッチスクリーン 日本語キーボード 重量1.32kg トランスペアレントシルバー CX1102FKA-MK0037
ASUS (Release 2022-11-04)
Personal Computers
B0BKKF7JHV (ASIN), 0195553939942 (EAN), 195553939942 (UPC)
評価     

ASUS 製 Chromebook。11.6インチディスプレイ,8GBメモリ,32GBストレージ。正直,ストレージはもう少し欲しかったがメモリ容量優先で選んだ。

reviewed by Spiegel on 2024-03-27 (powered by PA-APIv5)

photo
CloudValley 0.6mm 超薄型 ウェブカメラカバー、メタルカメラカバー カメラ目隠し MacBook air・ノートパソコン・iMac・デスクトップ・PC・MacBook Pro・iPad・iPhone 8/7/6用、プライバシーウェブカメラプロテクション 【2本セット】ブラック
CloudValley
Personal Computers
B079MCPJGH (ASIN), 0654070887322 (EAN), 654070887322 (UPC)
評価     

ノートPCに見られるのが嫌なので目隠しした。

reviewed by Spiegel on 2024-03-30 (powered by PA-APIv5)

photo
エレコム ワイヤレスマウス Bluetooth Slint M-TM10BBBU/EC 薄型 静音 4ボタン プレゼンモード機能付 Windows Mac Android iOS iPadOS FireOS対応 ネイビーブルー
エレコム(ELECOM) (Release 2020-11-24)
Personal Computers
B08LMYWKZD (ASIN), 4549550198189 (EAN)
評価     

静音マウスを使いだしたら普通のマウスがカチカチ煩いと感じるようになってしまい,仕方ないので Bluetooth 無線マウスも静音マウスに替えた。単三電池一本で駆動するの助かる。

reviewed by Spiegel on 2024-04-13 (powered by PA-APIv5)

photo
【 サンディスク 正規品 】 SanDisk microSDカード 128GB UHS-I Class10 10年間限定保証Ultra SDSQUAB-128G-GH3MA 新パッケージ
SanDisk (Release 2023-09-29)
Personal Computers
B0CH2X5LBX (ASIN), 0619659201579 (EAN), 619659201579 (UPC)
評価     

Chromebook の外部ストレージとして購入。

reviewed by Spiegel on 2024-03-29 (powered by PA-APIv5)

photo
Anker PowerExpand+ 7-in-1 USB-C PD メディア ハブ 85Wパススルー充電 Power Delivery USB-Cポート HDMI USB-Aポート
Anker
B07KJWYQJW (ASIN), 0848061003871 (EAN), 848061003871 (UPC)
評価     

購入した Chromebook と周辺機器を繋ぐために購入。 USB-C は電源用(Power Delivery 対応)とデータ用の口がある。 HDMI の口もありモニタと繋ぐこともできる。 USB-DAC も繋がる。助かる。

reviewed by Spiegel on 2024-05-06 (powered by PA-APIv5)

photo
Chromebook仕事術 最速で業務に生かす基本+活用ワザ できるビジネスシリーズ
株式会社インサイトイメージ (著)
インプレス 2021-08-04 (Release 2021-08-04)
Kindle版
B09BMPZ3BZ (ASIN)
評価     

Chromebook の操作・設定の基本部分について一通り網羅している感じ。参考になった。

reviewed by Spiegel on 2024-03-28 (powered by PA-APIv5)

photo
スーパーユーザーなら知っておくべきLinuxシステムの仕組み
Brian Ward (著), 柴田 芳樹 (翻訳)
インプレス 2022-03-08 (Release 2022-03-08)
単行本(ソフトカバー)
4295013498 (ASIN), 9784295013495 (EAN), 4295013498 (ISBN)
評価     

版元で PDF 版が買える。セキュリティ・エリアにも持ち込めるよう紙の本を買ったのだが,オンライン読書会が始まったので PDF 版も購入。Linux システムの扱い方に関するリファレンス本として優れている。最初に軽く流し読みして,必要に応じて該当項目を拾い読みしていけばいいだろう。

reviewed by Spiegel on 2023-02-11 (powered by PA-APIv5)

photo
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
丸善出版 2016-06-20
単行本(ソフトカバー)
4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
評価     

著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。

reviewed by Spiegel on 2016-07-13 (powered by PA-APIv5)

photo
改訂2版 わかばちゃんと学ぶ Git使い方入門
湊川あい (著), DQNEO (著)
シーアンドアール研究所 2021-06-12 (Release 2021-06-12)
Kindle版
B096TH798S (ASIN)

この機会に読んでみようか...

reviewed by Spiegel on 2021-07-07 (powered by PA-APIv5)