Linux,環境構築

こんにちは、しきゆらです。
今回は、またまたWSL2環境でsystemdをPID1で動かす手順をメモしておきます。

というのも、またまたPCパーツを買ったので組みなおしつつOSをクリーンインストールしました。
1年程度でOSをクリーンインストールするので、妙な不具合なんかは出ないのでとても良いのですが、
WSL2のインストールももう一度やることになります。
以前の記事「【WSL2】Ubuntu20.04でPID1をSystemdにする」を参考にしてみるとうまくいかない。
なんでや、と思ってもろもろ調べてみると結構手順が変わっていたので、調べながらインストールしました。
その手順をメモしておきます。

公式はこちらに移ったようです。
arkane-systems/genie: A quick way into a systemd “bottle" for WSL | https://github.com/arkane-systems/genie

READMEにはトップページを全部読んでね、と書いてあるので読んでおきましょう。
ではインストール。
なお、環境はUbuntu20.04です。

インストール手順

まずは、依存しているライブラリから。
Ubuntuなので、公式のDebianの手順を参考にしていきます。

dotnet-runtime-5.0を以下を参考にインストール。
https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-ubuntu

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get install -y dotnet-runtime-5.0

続いて本命。
こちらも公式が別で手順を置いてくれていたのでそちらを参考に。
https://arkane-systems.github.io/wsl-transdebian/

sudo apt install apt-transport-https
sudo wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg
sudo chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg

sudo emacs /etc/apt/sources.list.d/wsl-transdebian.list
// Ubuntu 20.04環境なので<distro>をfocalに置換
deb https://arkane-systems.github.io/wsl-transdebian/apt/ focal main
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ focal main

これにて準備終わり。
本命をインストール。

sudo apt update 
sudo apt install systemd-genie

これにてインストール完了です。
あとはいつも通りgenie -sとかで動かせば終わり。

一応公式使い方を張っておきます。

以下からの引用ですよ。
arkane-systems/genie: A quick way into a systemd "bottle" for WSL | https://github.com/arkane-systems/genie

genie:
  Handles transitions to the "bottle" namespace for systemd under WSL.

Usage:
  genie [options] [command]

Options:
  -v, --verbose <VERBOSE>    Display verbose progress messages
  --version                  Display version information

Commands:
  -i, --initialize           Initialize the bottle (if necessary) only.
  -s, --shell                Initialize the bottle (if necessary), and run a shell in it.
  -l, --login                Initialize the bottle (if necessary), and open a logon prompt in it.
  -c, --command <COMMAND>    Initialize the bottle (if necessary), and run the specified command in it.
  -u, --shutdown             Shut down systemd and exit the bottle.
  -r, --is-running           Check whether systemd is running in genie, or not.
  -b, --is-in-bottle         Check whether currently executing within the genie bottle, or not.

まとめ

だいぶ長いことこの辺を詰まったタイミングで追っていますが、今回はどうもちょっと面倒でした。
というのも、元のリポジトリが移動したことでどこにあるのかを見つけるのに時間がかかりましたね。
見つかってよかった。

そして、元のリポジトリのころは「429 Too Many Requests」のエラーで更新できない状況が続いていましたが、Githubに移行したようで問題なくインストールできました。
何度かアップデートをたたいても問題なさそう。
良き良き。
これで心置きなくLinuxっぽい世界で遊べますね。

今回は、ここまで。
おわり

Linux,Windows,環境構築

こんにちは、しきゆらです。
今回は、MySQLをまっさらな状態からインストールして最初にはまるであろうルートパスワードの設定方法で詰まったのでメモしておきます。

毎回MySQLの初期ルートパスワードで詰まる

これまで、5.xのころからMySQLさんを使ってきましたが、バージョンの違いなのかディストリビューションごとの差異なのかはわかりませんが、初期状態のルートパスワードが変わります。
パスワードなしでログインできたり、どこかにあるログファイルにかかれていたり、いくつかバリエーションがあるようです。

今回、MySQL8.xをインストール後にルートユーザとしてログインしようとしてもログインできませんでした。
パスワードなしでアクセスしても怒られ、ログがそもそもどこにあるのかわからず完全に詰んでいました。
そんな中、過去の記憶を掘り起こしたところ、MySQLの初期化コマンドでルートパスワードを設定していたことを思い出しました。
secure_mysql_installationコマンドです。

Linux,Windows,環境構築

こんにちは、しきゆらです。
Railsと戯れ始めたわけですが、MySQLを動かすために結構時間がかかってしまいました。
serviceで自動起動する方法がわからず、毎回service mysql startとして起動しています。

さて、今回はserviceコマンドを使ってMySQLを立ち上げようとしたときにおこった問題と解決方法をメモしておきます。

 

Linux,Ruby,Windows

皆さん、Sinatra使っていますか?
簡単なWebアプリであれば一瞬でできてしまうような、Webアプリケーションフレームワークです。

しかし、簡単なので機能をたくさん増やしていたり、処理が多くなってくるとどうしても起こるのが「全体像が見えにくくなる」ということ。
機能やエンドポイントごとに分割したい、と思うこともあるでしょう。
私は思いました。
その方法を調べてみたので、まとめておきます。

例として、以下のような形でアプリケーションを作成しているとします。

[ruby]
# app.rb
require 'sinatra’
class MyApp < Sinatra::Application
get '/’ do
'hello’
end
end
[/ruby]

今回は、エンドポイントごとにファイルを分割していきます。

 

Linux,Mac

こんにちは、しきゆらです。
今回は、screenコマンドを知ったのでメモしておきます。

Linux等を触っていると、時々時間がかかる処理を走らせることがありますよね。
私の場合は、aptやyum、dnf等のパッケージマネージャでのアップデート関係やrbenvなどで環境を整えるときなどです。
このようなコマンドをSSH越しに実行しているときに、途中で接続が切れると悲しいことになりますよね。

そんなことが起きても大丈夫なようにしてくれる魔法のコマンドが「screen」コマンドです。
できることはいくつかあるようですが、よく使うのがセッションの管理でしょう。
今回は、簡単に使い方をまとめておきます。

 

Linux,Mac

こんにちは、しきゆらです。

今回は、特定のバックグラウンド処理をログアウト後も継続してほしいときに使えるコマンドを知ったのでメモしておきます。

 

何らかの処理をバックグラウンドで処理させていて、ログアウトすると

そのタイミングでバックグラウンドの処理は止まってしまいます。

処理が終わるまで継続してほしいが、自分はログアウトしたい。

そんなときには、「nohup」コマンドを使いましょう。

【 nohup 】コマンド――端末を閉じてもログアウトしても処理を続ける

http://www.atmarkit.co.jp/ait/articles/1708/24/news022.html

ログアウトしてもバックグラウンド ジョブを継続する方法

https://www.codereading.com/nb/ignore-the-hangup-signal.html

 

nohupコマンドの使い方

バックグラウンドで処理させたいときは、こうすると思います。

command &

これだと、ログアウトしたときに止まってしまうようです。

 

nohupコマンドは、この前につけてあげます。

nohup command &

これにて、commandはバックグラウンドで実行されて、ログアウトしても処理が終わるまで続けてくれます。

 

 

まとめ

簡単ですが、バックグラウンド処理をログアウトしても止めずに続けて貰う方法でした。

SSH接続時などでは威力を発揮しそうなコマンドでしたね。

 

今回は、ここまで。

おわり

Linux,Raspberry Pi,環境構築

こんにちは、しきゆらです。

Raspberry Piネタは、これまでずっとインストールする系のものばかりですが、今回もそれです。

 

これまで、Raspbian => CentOS7 とインストールしてきました。

前回のCentOSでは、GUIは不要ということでEmacsをコンパイルしたりしましたが

やはりGUIが欲しい。

というか、自分用のサイネージとして利用しようと思った次第です。

[amazonjs asin="B01GZXMIUU" locale="JP" title="Kuman 7インチ Raspberry Pi用ディスプレイ LCD 800*480解像度 タッチスクリーン TFTモニタ 7インチタッチパネル+タッチペン+スクリューパック+CD資料 Raspberry Pi 3 2 Model B B+ A A+ 用ディスプレイ ラズベリーパイ SC7B"]

 

ということでGUI付きでインストールしてみます。

これまでと同じものをインストールしても面白くないということで

Raspberry Piでも動くというFedoraを入れてみました。

 

詳しくは、続きからどうぞ。

 

Linux,Raspberry Pi,Ruby,エディター,環境構築

こんにちは、しきゆらです。

前回の記事は、RaspbianからCentOSに乗り換えたお話でした。

【Raspberry Pi】CentOS7をインストールする

 

その記事の中で、あまり使い慣れていないviさんと一悶着もありました。

どうしても使い慣れた環境を作りたい・・・。

 

ということで、今回はEmacsやRubyをインストールしていきます。

どれも、自前でコンパイルしていきますよ。

 

Linux,Raspberry Pi,環境構築

こんにちは、しきゆらです。

以前、Raspberry PiにRaspbianを入れました。

【Raspberry Pi】OSのインストールから日本語化までを設定

 

しかし、この後幾度となく制御不能となる、謎の現象が・・・。

基本的なコマンド(lsなど)が使えなくなり、制御不能となってしまう。

原因を調べてもよくわからない。

 

ということで、使い慣れたCentOSに乗り換えてみました。

今回は、基本的なOSのインストールから日本語設定までを行っていきます。

 

Linux,Mac,プログラミング

こんにちは、しきゆらです。

9月の中頃から10月の頭にかけて、学会とインターンシップ参加、さらに学会と

なんだか忙しい日々を過ごしていました。

 

いくつか、メモしておきたいことは溜まっているのでそれを放出していきます。

まずは、タイトル通りTerminalの設定をいじって見たお話を。

 

MacやLinuxではよく使うTerminal。

これの見た目を自分好みに変えることができることを最近知りました。

例えば、

$ cd hoge

とかの「$」の前にはユーザ名とかが書かれていると思います。

ここの文言や表示する色などを変更することができるようです。

 

方法に関しては、以下のサイトを参考にしました。

【mac】ターミナルのプロンプトの変更 – Qiita

https://qiita.com/griffin3104/items/0d610ad1a57fa6ad6a09

 

「.bashrc」に対して以下のように書けばいいようです。

# 上記サイトより
export PS1='\h:\W \u\$ '

 

設定の内容等も、上記サイトに書かれています。

設定項目:

\h ホスト名(最初の.まで)
\H ホスト名
\W ディレクトリ
\w ディレクトリ(フルパス)
\u ユーザ名
\t 時間

色の設定:

\[\e[0;30m\]色をつけたい部分\[\e[0;0m\]
\[\e[0;31m\]色をつけたい部分\[\e[0;0m\]
\[\e[0;32m\]色をつけたい部分\[\e[0;0m\]
\[\e[0;33m\]色をつけたい部分\[\e[0;0m\]
\[\e[0;34m\]色をつけたい部分\[\e[0;0m\]
\[\e[0;35m\]色をつけたい部分\[\e[0;0m\]
\[\e[0;36m\]色をつけたい部分\[\e[0;0m\]
\[\e[0;37m\]色をつけたい部分\[\e[0;0m\]

 

これにより、「$」の前部分を自分好みに変えることができます。

例えば、顔文字を入れたりもできますよ。

 

さて、これらの情報をもとにUbuntuっぽいTerminalを作っていきましょう。

まずは、プロンプトの文言は以下のような感じ。

PS1="\[\e[0;32m\]\u\[\e[0;0m\]:\[\e[0;34m\]\W\[\e[0;0m\]$ "

本当であれば「ユーザ名@PC名」となりますが、長くなるのでユーザ名までしか記載していません。

充実に再現する場合は「\u」のあとに「@\h」とするといいかもしれません。

 

最後に、背景色です。

これに関してはブログで紹介してくれている方が。

Default background color of Terminal in Ubuntu – Code Yarns

https://codeyarns.com/2013/01/21/default-background-color-of-terminal-in-ubuntu/

このサイトによると、UbuntuのTermilan背景色は「RGB = (48, 10, 36)」だそうです。

これをTerminalの環境設定から指定してあげます。

 

Terminalの「環境設定」=> 「プロパティ」タブの中に複数のテンプレがあるので、そのどれかをいじるか、

新しく追加しましょう。

私は新規追加しました。

(新規追加は、左側のリストの下にある「+」ボタンを押すだけ)

適当な名前をつけて、「背景色」を上記のRGB値にします。

 

そして、作成したプロファイルをダブルクリックすれば、作成した設定でTerminalが開きます。

紫っぽい背景色、緑色の文字。

Ubuntuっぽい。

個人的にはUbuntuの背景色が好きで、このためだけにUbuntuをインストールするくらいです。

最近はもっぱらMacしか使いませんが、心の隅っこくらいにはUbuntuのTerminalのことを覚えておいてあげましょう。

 

さらに追加で、「ls」コマンドを実行したとき、UbuntuのTerminalは以下のような感じで、

ファイルとディレクトリを色分けしてくれました。

これを再現するのはかんたん。

プロンプトの設定をした「.bashrc」に以下を追加すればOK。

alias ls='ls -G'

単純に、lsコマンドのオプションを付けるようにするだけ。

これで、上記の画像のようにディレクトリを色分けしてくれます。

 

 

今回はここまで。

需要はないと思いますが、Ubuntu好きな方はTerminalの色をUbuntuっぽくしてみてはいかがでしょうか。

おわり