先日自宅サーバが起動しなくなってしまいました.10年以上ほぼ起動しっぱなしでしたししょうがないかなという感じも.この端末はNASやUnbound,apt-cacher-ngなど自宅向けのサービスの他にも外部向けのWebServerとしても動作させていました.
すぐに復旧するのは難しそうなのでとりあえずシングルボードコンピュータでWebServerを起動してHTTPステータスコードの503を返すようにしてみました.
カテゴリー: Raspberry Pi OS
yt-dlpでAbemaTVをダウンロード
yt-dlp 2022.03.08でAbemaTVが対応していたので試してみました.
[AbemaTV] Add extractors by Lesmiscore
yt-dlpでYouTubeで配信されているラジオをダウンロードして視聴する
YouTubeで配信されているラジオ番組の1話を視聴して面白かったのでダウンロードして移動中などに聞こうと思いました.ダウンロードにはyt-dlpを利用しました.
Raspberry Pi OS を buster から bullseye に dist-upgrade
Raspberry Pi OS bullseye がリリースされていたので手元のRaspberry Pi 3 model B のOS をbuster からbullseye にアップグレードしてみました.
Debian/Ubuntuでawkを切り替える
Debian等でのインストール直後のawkは mawk
が導入されます.
Debianのパッケージでは他にGNU awk(パッケージ名 gawk
), The One True Awk(パッケージ名 original-awk
)というものもあります.*BSDなどでよく見る nawk
もあるように見えますが,シンボリックリンクだけのようです.
(他にもあるかもしれない?)
mawk
は初期状態で入っていて軽量.GNU awk
はmawkに比べて多機能で既定値では導入されませんが, byobu
などが依存を求めるので入っている人も多いと思います.
複数のawkパッケージが導入されているときに awk
と実行したときは update-alternatives
で管理されたシンボリックリンク先のいずれかのawkが実行されます.これを切り替えてみます.
cpu情報を表示するcpufetch
cpufetchというscreenfetchインスパイアな感じのcpu情報表示ツールを見かけたので試してみました.
$ git clone https://github.com/Dr-Noob/cpufetch
$ cd cpufetch
$ make
$ ./cpufetch -s retro
################
####### #######
#### ####
### #### Name: Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
### ### Microarchitecture: Ivy Bridge
### ### Technology: 22nm
# ### ### ### Max Frequency: 3.300 GHz
## ### ######### ###### ###### ### ### Cores: 2 cores (4 threads)
## ### ### ### ### #### #### ### ### AVX: AVX
## ### ### ### ### ### ### ### ### FMA: No
## ### ### ### ### ########## ### #### L1i Size: 32KB (64KB Total)
## ### ### ### ### ### ### ##### L1d Size: 32KB (64KB Total)
## ## ### ### ##### ######### ## ### L2 Size: 256KB (512KB Total)
### L3 Size: 3MB
### Peak Performance: 52.80 GFLOP/s
#### ####
##### ##########
########## ################
###############################
標準のスタイルでテキストで貼り付けると真っ白になるので retro
です.通常の実行結果は以下に.
コマンドライン標準入力からあいまい検索が出来る「pick」
コマンドラインの標準入力をあいまい検索してその結果を主治力出来るpickというコマンドを知ったので試してみました.
たくさんの環境パッケージがあります.今回はDebian sid amd64とRaspberry Pi OS buster armhfで pick
パッケージを導入しました.
$ sudo apt install pick (1)
$ ls ~/Downloads/*.pdf | wc -l (2)
181
$ ls ~/Downloads/*.pdf | pick | xargs -I{} xpdf "{}" (3)
rpi (4)
/home/matoken/Downloads/rpi_DATA_CM_3p0.pdf
/home/matoken/Downloads/rpi_MECH_3b_1p2.pdf
/home/matoken/Downloads/RPi-Camera-User-Manual.pdf
/home/matoken/Downloads/rpi_SCH_3b_1p2_reduced.pdf
/home/matoken/Downloads/rpi_SCH_4b_4p0_reduced.pdf
/home/matoken/Downloads/rpi_SCH_ZeroW_1p1_reduced.pdf
/home/matoken/Downloads/RPi_Pi Pico_Digital Edition.pdf
pick
パッケージ導入- pdfファイルがたくさんある
- lsの結果をpickを挟んでxpdfに渡す
- 「rpi」とキーワードを入力することで絞り込まれる
上下カーソル入力で結果を選択,Enterで確定.確定された行はSTDOUTに出力され,今回の例では xpdf で開かれる.
コマンド結果が多くて grep を繋いでいくみたいなときに pick を使うとインタラクティブに絞り込まれたりしてわかりやすいです.
似たものに sysbox の choose-stdin というものもあります.
$ dpkg-query -W pick
pick 2.0.2-1.1
$ lsb_release -dr
Description: Debian GNU/Linux bullseye/sid
Release: unstable
$ uname -m
x86_64
$ dpkg-query -W pick pick 2.0.2-1 $ lsb_release -dr Description: Raspbian GNU/Linux 10 (buster) Release: 10 $ uname -m armv7l $ cat /proc/device-tree/model ;echo Raspberry Pi 3 Model B Rev 1.2
盆栽楽しい
盆栽が表示できるアプリです.
- John Allbritten / cbonsai · GitLab
- John Allbritten / bonsai.sh · GitLab (以前開発されていたshell版)
sourceとx86_64用の.debがあります.armhf環境でsourceからbuildしてみました.
$ sudo apt install libncurses-dev build-essential
$ git clone https://gitlab.com/jallbrit/cbonsai
$ cd cbonsai
$ make
$ install ./cbonsai ~/bin/
いくつかの実行例です.
$ cbonsai (1)
$ cbonsai -p (2)
$ cbonsai -l (3)
$ cbonsai -l -t 0.01 (4)
$ cbonsai -c '<>' (5)
$ cbonsai -m "hello BONSAI" (6)
$ cbonsai -i -w1 (7)
- 盆栽を表示(なにかキー入力で終了)
- 盆栽をプリントして終了
- ライブモード
- ライブモードで速度を1/3に(既定値0.03で単位は秒)
- 葉っぱを変更
- メッセージを表示(マルチバイト文字は不可)
- 無限に表示,間隔を1秒間隔に(既定値は4.00秒)
楽しいです🌳
ログイン時に盆栽とfortuneのメッセージを表示したいときはこんな感じで.
$ echo 'cbonsai -p -m "`fortune`"' >> ~/.profile
$ git log -1
commit 15e19580ddc58741291386000076928b2e591ef2 (HEAD -> master, origin/master, origin/HEAD)
Author: John A <jallbritten6@gmail.com>
Date: Thu Mar 4 10:37:32 2021 -0500
Update install instructions and add bashrc notice
$ dpkg-query -W libncurses-dev build-essential
build-essential 12.6
libncurses-dev:armhf 6.1+20181013-2+deb10u2
$ lsb_release -dr
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
$ arch
armv7l
$ cat /proc/device-tree/model && echo
Raspberry Pi 3 Model B Rev 1.2
いくつかの”sl”コマンドを試す
ノーマル?sl
なんとなくジョークプログラムのslを導入しました.
$ sudo apt install sl
しかし物足りません🤔
Izumiさん改造版
昔はSunOS上でとても長い編成だったり通り過ぎて遮断器が上がったかと思うとまた下がって折り返したりするpatchを当てていました.探してみると恐らくこちらのもの.
しかしpatchがリンク切れ.Wayback Machineにも見つかりません.
検索するとこちらのページを発見.patch適用済のものをGitHubにアップロードされています.こちらを試してみました.
$ sudo apt build-dep sl (1)
$ git clone https://github.com/gmkou/sl (2)
$ cd sl
$ make (3)
$ install ./sl ~/bin/ (4)
$ which sl (5)
/home/matoken/bin/sl
$ sl
- slのビルドに必要なパッケージを導入
- sourceをclone
- make
- 適当な場所にインストール
- slのパスを確認
30両くらいのなが〜いslも出現するようになりました😻これでlsのTypo矯正が捗る……かもしれません.
ミラー版sl
こちらのslはミラーバージョンでlsの結果を反転させて表示します.これも楽しい
$ /tmp/sl -l
04 latot
dm.ETALPMET_EUSSI 70:60 2 raM 044 nekotam nekotam 1 --r--r-wr-
elifekaM 70:60 2 raM 868 nekotam nekotam 1 --r--r-wr-
dm.EMDAER 70:60 2 raM 0351 nekotam nekotam 1 --r--r-wr-
itg 70:60 2 raM 0079 nekotam nekotam 1 x-rx-rxwr-
6.itg 70:60 2 raM 8001 nekotam nekotam 1 --r--r-wr-
c.itg 70:60 2 raM 2258 nekotam nekotam 1 --r--r-wr-
$ ls -l
total 40
-rw-r--r-- 1 matoken matoken 440 Mar 2 06:07 ISSUE_TEMPLATE.md
-rw-r--r-- 1 matoken matoken 868 Mar 2 06:07 Makefile
-rw-r--r-- 1 matoken matoken 1530 Mar 2 06:07 README.md
-rwxr-xr-x 1 matoken matoken 9700 Mar 2 06:07 gti
-rw-r--r-- 1 matoken matoken 1008 Mar 2 06:07 gti.6
-rw-r--r-- 1 matoken matoken 8522 Mar 2 06:07 gti.c
おまけ)gti
そういえばslインスパイアなgitに対するgtiというものもあります.これはgitと打とうとしてgtiと入力してしまったとき車が走っていきます🚗
楽しいですね.
$ git clone https://github.com/rwos/gti
$ cd gti
$ make
$ install ./gti ~/bin/
$ gti
環境
$ lsb_release -dr
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
$ uname -a
Linux raspberrypi 5.10.11-v7+ #1399 SMP Thu Jan 28 12:06:05 GMT 2021 armv7l GNU/Linux
$ cat /proc/device-tree/model ;echo
Raspberry Pi 3 Model B Rev 1.2
GitHub.comのリポジトリの特定のディレクトリ以下をダウンロードできる「GitHub clone」
大きなGitリポジトリをcloneすると時間がかかります.最新のものだけが欲しい場合は --depth
オプションがありますが,リポジトリの一部のディレクトリ以下だけが欲しい時には使えません.そういうときにGitHub cloneを使うと,特定のディレクトリ以下だけをダウンロードできて便利そうです.
少し試してみました.
$ pip3 install git+git://github.com/HR/github-clone#egg=ghclone (1)
$ ghclone (2)
Usage:
ghclone <url> [-t | --token=<token>]
ghclone (-h | --help)
ghclone (-v | --version)
$ ghclone https://github.com/torvalds/linux/tree/master/tools/usb/usbip (3)
Cloning into 'usbip'...
done.
$ cd usbip
$ ls -A (4)
.gitignore AUTHORS COPYING INSTALL Makefile.am README autogen.sh cleanup.sh configure.ac doc libsrc src vudc
$ git status (5)
fatal: not a git repository (or any of the parent directories): .git
$ cd ..
$ ghclone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/usb (6)
Invalid GitHub URI
- pipで導入する(もしPATHが通ってなければ
~/.local/bin
を加える) - USAGE
- Linux Kernelの一部だけをダウンロード
- ダウンロード内容確認
- Git管理はされていない
- GitHub以外のGitリポジトリに対して実行すると失敗する
GitHub.comのAPIを利用しているのでGitHub.com以外では使えませんが便利そうです.
似たものにBitBacketで同様のことができる,「bb-clone」というものもあるようです.
$ ghclone -v 1.2.0 $ dpkg-query -W git python3-pip python3 git 1:2.20.1-2+deb10u3 python3 3.7.3-1 python3-pip 18.1-5+rpt1 $ lsb_release -dr Description: Raspbian GNU/Linux 10 (buster) Release: 10 $ uname -a Linux raspberrypi 5.10.11-v7+ #1399 SMP Thu Jan 28 12:06:05 GMT 2021 armv7l GNU/Linux $ cat /proc/device-tree/model ;echo Raspberry Pi 3 Model B Rev 1.2