RedHat Enterprise Linux 8.5 に Canon の家庭用ネットワークプリンター (PIXUS TS8430) をIPアドレス直接指定で追加する非公式手順
タイトル長いねん。
注意
- いわゆる「よく分からんけど動いた」状態です。自分は素直に CentOS か AlmaLinux 使ってたらいいのにイキって RHEL 使ってるだけの人であり、全然詳しくないです。
- CentOS や AlmaLinux などの類似環境では試していません。
- CUI と GUI で操作しています。CUI で完結していません。
なんでこの記事書いたの
- 公式ドキュメント通りにやってもネットワークプリンターが検出されなかったため。
- 公式がサポートしている rpm 系ディストリビューションが Fedore 32 で対象外っぽそうだったため。
- 履歴書印刷しようとしたら意外とセットアップ面倒だったと感じたため。
環境
- RedHat Enterprise Linux 8.5 (4.18.0-348.7.1.el8_5.x86_64)
- Canon PIXUS TS8430 (Ver 1.050)
- Canon IJ Printer Driver Ver. 6.10 for Linux (rpm 版)
前提
- プリンターは既にネットワークに接続されている状態とします。
手順
Canon 公式サイトから IJ Printer Driver for Linux の rpm 版をダウンロードします。現時点での URL は https://cweb.canon.jp/drv-upd/ij-mfp/linux-pd-20202h-610.html です。 今後もドライバが更新されダウンロードページが変わる可能性はあるので、公式トップから辿る方が確実だと思います。
rpm 版ドライバの tar.gz ファイルをダウンロードしたら展開し、 packages/cnijfilter2-6.10-1.x86_64.rpm
もしくは同等の適切なファイルが存在することを確認してください。
cnijfilter2-6.10-1-rpm ├── documents │ ├── LICENSE-cnijfilter-6.10EN.txt │ ├── LICENSE-cnijfilter-6.10FR.txt │ ├── LICENSE-cnijfilter-6.10JP.txt │ └── LICENSE-cnijfilter-6.10SC.txt ├── install.sh ├── packages │ ├── cnijfilter2-6.10-1.i386.rpm │ └── cnijfilter2-6.10-1.x86_64.rpm └── resources ├── printer_fr_utf8.lc ├── printer_ja_utf8.lc └── printer_zh_utf8.lc 3 directories, 10 files
次にドライバーをインストールします。下記の様にターミナルでインストールでもよいのですが、普通に rpm ファイルをダブルクリックでインストールできると思います。
# 前述で展開されたファイル群が `$HOME/Downloads/cnijfilter2-6.10-1-rpm` に存在するものとします。 cd ~/Downloads/cnijfilter2-6.10-1-rpm sudo dnf install ./packages/cnijfilter2-6.10-1.x86_64.rpm
その後「設定」 (GNOME Control Center) アプリを開き、「デバイス」>「プリンター」項目を選択します。
画面が表示された後「追加」ボタンをクリックすると、プリンターを追加するダイアログが表示されます。 ダイアログ下部に何だか検索できそうなテキスト入力欄があるので、そこにプリンターの IP アドレスを追加してください。プリンターの IP アドレスはプリンター本体の設定画面などから参照してください。
入力してすぐに JetDirect-Printer と LPD-Printer という項目が表示されますが、もう少し待つと TS8430 といったプリンターの形式名が表示されるので、それを選択します。
すると、プリンター一覧にプリンターが追加され、セットアップ完了です。形式名も「Canon TS8430 series Ver 6.10」と正しく表示されていますね。
ちなみに
ドライバをインストールせずにプリンターを追加することも可能ですが、その際には「Generic Text-Only Printer」として登録することになってしまいます。
ついでに「追加のドライバが必要」という旨の通知も併せて表示されます。
もしドライバをインストールしたつもりでも上記の状態となってしまう場合、一度プリンター一覧から該当のプリンターを削除し、ドライバのインストールからやり直してみることをお勧めします。
CentOS 8 Stream に VirtualBox 6.1 入れようとしたらうまく動かない件への対応
必要なものをインストールしてもエラーになってしまうので調べた備忘録です。
この記事は 2021/09/16 現在の情報で書かれています。
構成
- CentOS 8 Stream 4.18.0-338.el8.x86_64
- VirtualBox 6.1.26_145957_el8-1
前提
必要なソフトウェアなどを下記ページを参考にインストール済みです。
対処法
こちらのチケットに従い、/usr/share/virtualbox/src/vboxhost/vboxdrv/r0drv/linux/alloc-r0drv-linux.c
の 41行目付近を書き換える。
-# if RTLNX_VER_MIN(2,6,23) && RTLNX_VER_MAX(5,8,0) +# if RTLNX_VER_MIN(2,6,23) && RTLNX_VER_MAX(4,17,0)
その後、sudo /sbin/vboxconfig
を実行してエラーが起きなければ成功。
小話
- GNOME Boxes で動かす Windows 10 がまぁまぁ遅くて、VirtualBox の Guest OS Addon 無しとくらべても格段に遅いので、さすがにVirtualBoxを動かした方が良いと思い今回の備忘録に至りました。
- カーネルのバックポートがあったやらなんやらの話を見かけますが、なんかあの安定しているイメージのCentOSがStreamになってから何だかなぁの気持ちはあります。
- 本当は VMWare Player でやろうとしたけどそちらはカーネルモジュールのビルドに失敗してより難易度が高そうだったのでやめました。
RHEL8 に Ulauncher 5.8 を入れた時の備忘録
メモ
- https://github.com/Ulauncher/Ulauncher/releases から最新の tar.gz をダウンロードして展開する
sudo dnf install libappindicator-gtk3
sudo dnf install platform-python-devel
sudo pip3 install python-Levenshtein
- Wayland 使ってるなら https://github.com/Ulauncher/Ulauncher/wiki/Hotkey-In-Wayland を参考にホットキー設定
参考文献
CentOS8 + Rootless Podman + NextcloudでVJ素材管理環境作りたい
QNAP か Synology の NAS 買えよって話なんですけど、最近フットレストと化している足下にある富士通のサーバーがキラキラした瞳で見上げてくるので・・・。
注意
全然詳しくない領域において試行錯誤した作業の備忘録となので、問題解決の方法が雑であるなど、あまり綺麗ではありません。あと今回VJはそこまで関係ないです。
前提
- 家庭の閉じたネットワーク内での運用
- CentOS が Docker 捨てたならその流れに乗る (Docker わざわざ導入するのが面倒)
podman-compose
は使わない- Podman は Rootless で動かす
作業環境
下ごしらえ
必要なソフトウェアをインストールします。
sudo yum install -y podman
Nextcloud を9000番ポートで公開するために、ファイアウォールの設定をします。
sudo firewall-cmd --add-port=9000/tcp --zone=public sudo firewall-cmd --permanent --add-port=9000/tcp --zone=public sudo firewall-cmd --reload sudo systemctl restart firewalld
/etc/fstab
を編集し、OS起動時に内蔵HDDが /mnt/storage
にマウントされるようにします。
エディタは何でも良いですが、emacs の場合 /sudo::/etc/fstab
とすることで良い感じに開けます。
ls -l /dev/disk/by-uuid # 下記のような結果が出力されるので、/dev/sd?? と UUID との対応を見て fstab に書き込む UUID を探します # lrwxrwxrwx. 1 root root 10 Mar 22 10:48 ********-****-****-****-************ -> ../../sda2 # lrwxrwxrwx. 1 root root 10 Mar 22 10:48 ****-**** -> ../../sda1 # lrwxrwxrwx. 1 root root 10 Mar 22 10:48 ********-****-****-****-************ -> ../../sdb1 emacs /sudo::/etc/fstab
一旦再起動してマウントされているか確認します。
そして Nextcloud の保存先となる /mnt/storage/nextclouddata
の用意をします。
sudo mkdir /mnt/storage/nextclouddata chown 1000:1000 /mnt/storage/nextclouddata chcon -R -t svirt_sandbox_file_t /mnt/storage/nextclouddata
chron
のところは https://github.com/containers/libpod/issues/3683#issuecomment-517237050 を参考にしました。
Nextcloud を起動する
podman-compose
使わない縛りをするのと、podman play kube
が調子悪いので、コマンド手入力でポチポチ進めます。
なお Redis は必須ではないので、適宜 Redis に関する記述やオプションなどは消しても動きます。
まずは pod を用意します。pod 内で稼働する rootless コンテナ同士は localhost
を介して相互に通信できます。
podman pod create --name nextcloud --publish 9000:80
次にコンテナを起動していきます。データベースのパスワードなど、必要に応じて適宜変更してください。
MariaDB 起動時のオプションについては https://hub.docker.com/_/nextcloud/ に記載されていたものをそのまま書いています。
podman run -d --name db --pod nextcloud \ -v mariadb-data:/var/lib/mysql \ -e MYSQL_RANDOM_ROOT_PASSWORD=yes \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud \ -e MYSQL_PASSWORD=nextcloud \ mariadb --transaction-isolation=READ-COMMITTED --binlog-format=ROW
podman run -d --name redis --pod nextcloud -v redis-data:/data redis
Nextcloud の保存先が /mnt/storage
に作成したディレクトリに向くようオプションを設定します。
podman run -d --name app --pod nextcloud \ -e MYSQL_HOST=127.0.0.1 \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud \ -e MYSQL_PASSWORD=nextcloud \ -e REDIS_HOST=127.0.0.1 \ -v nextcloud-html:/var/www/html \ -v /mnt/storage/nextclouddata:/var/www/html/data \ nextcloud
今回できなかったこと
- 最新の podman (1.8.x) を試すこと
podman play kube
を使うこと- Kubernetes に詳しくないので・・・
- ボリューム周りの機能がまだ貧弱そうに見えた
- MariaDB のソケットをボリューム経由で Nextcloud に渡すこと
- ソケット自体は見えているのになぜかうまくいかなかった
- systemd と連携させること
終わりに
RedHat 先生が意気揚々と Docker を置き換えた割には Podman の使い勝手が微妙じゃない?と思うものの、Rootless で動かせたりと面白さもあります。
参考文献
docker-compose
で構築した例を探していて見つけたページ- SELinux で詰んだ時に調べていて見つけたページ
VVVV で masawada モデルを使って遊ぼう
この記事は masawada Advent Calendar 2019 の 14日目です。昨日は id:mazco さんでした。
というか凄いお久しぶりです。なんと私ベトナム・ホーチミンにいるんですよ。11月に一時帰国を挟みましたが 4ヶ月目になります。 そしてその一時帰国中のスキを突いて Surface Pro 7 とか Apple Watch series 5 とかを買ったりしました。
そういえばベトナムって日本との時差2時間ありましたね。完全に公開タイミングミスりました。
masawada-3d
大学の時の友人 masawada 氏が 本人の3Dモデルを公開 していたのでとりあえず遊ぼうかという内容なのですが、遊び方を工夫したいと思います。(Apple Watch を買ったので masawada モデルをその上で動かすことを考えたのですがスキルがありません。)
とりあえず、いつもの VVVV https://vvvv.org で遊ぼうと思います。
FBX から DAE に変換
VVVV はデフォルトで DAE 形式の取り扱いに対応しています(VVVV上で自由にボーンを動かすとかはできませんが・・・)。 いったん Blender を使って FBX ファイルを取り込み、DAE ファイルをエクスポートしましょう。
ColladaFile ノードを使ってインポートして遊ぶ
とりあえず masawada でオーディオスペクトラムを作りました。
マイクで拾った音に反応して masawada モデルが伸びます。
インタラクティブmasawada pic.twitter.com/9GudfkAy3k
— Kanon Kakuno (@yadex205_vj) December 13, 2019
CircularSpread を使って円状に配置することもできます。
どうせなのでテクスチャにエフェクトをかけてかっこよくしましょう。
音圧で普段の見た目(テクスチャ)を取り戻すようにしました。
— Kanon Kakuno (@yadex205_vj) December 13, 2019
終わりに
終わりにへったくりもないですが、VVVV を使うとテクスチャとかモデルとかにエフェクトをかけまくれたり試しまくれたりするのが好きです。 また VVVV でVJするの復活してみようかな。
明日は id:maku693 さんです。
Node.js から ffmpeg 走らせてたら pipe 書き込み量の上限でハングアップしたらしい話
備忘録です(言い訳)。 あと、書いている内容は書いている時の知識に基づくので、誤りがある可能性があります。
状況
買った・ダウンロードした VJ 素材を VDMX で使えるように一括変換するバッチ処理的なものを Node.js で書いてます。
変換には内部で ffmpeg を呼び出しているのですが、進捗を取得できるよう -progress -
というオプションをつけて標準出力に情報を書き出し、
それを Node.js スクリプト側で受け取る実装にしていました。
ところが、一定時間 経過すると呼び出している ffmpeg がハングアップするも、 ffmpeg 自体は死んでいないというよくわからない状態に必ずなるようになりました。
なお、呼び出しているのと全く同じコマンドを bash で実行すると ffmpeg はちゃんと完走するため、さらによくわからん状態です。
原因(らしきもの)の特定
はじめ htop とにらめっこしたりして紆余曲折を経ていたのですが、神頼みで ffmpeg hangup
で検索したところ、
下記の Stack overflow の QA にヒットしました。
It hangs because after a certain point it can not write to it's output pipe any longer.
なるほど、ffmpeg の進捗情報を pipe 経由で大量に受け取ってたのが原因かもしれません。
ということで ChildProcess.spawn
するときに { stdio: 'ignore' }
をしたところ、無事に完走できるようになりました。
パイプ以外で ffmpeg の進捗を受け取る
ごめんなさい現在探っている状態なので、見つけ・思いつき次第追記したいと思います。
(追記 2019.04.30) Node.js 側のバッファの問題?
古めですがこちらの issue に気になる内容があり、適宜 proc.stdout.on('data', (chunk) => {})
してやれば止まらず実行し続けるとのことでした。
そういえばと思い、(すでに stdout の方は .on('data')
で拾っていたので)stderr に対して上記の対応をしたところ、
{ stdio: 'ignore' }
をしなくても止まらず完走するようになりました。
zsh で cd の時に peco 使って移動先を選んだ後に移動までやってもらいたい
実は4月から社会人デビューしていたのですが、
職場で使いやすいターミナル環境整えている時に peco
でディレクトリ移動をするいろんな記事を思い出し導入しました。
試行錯誤した結果、上記の記事を参考にしてバッファ上に
$ cd
と入力されている時だけ C-h
を押すと、近い階層のディレクトリ一覧を peco
で表示するところまではできました。
function peco-path-find() { if [[ $LBUFFER =~ \s*cd\s* ]]; then # バッファに cd が入力されていた場合は5階層分のディレクトリを選択できるようにする local filepath="$(find . -maxdepth 5 -type d -not -path '*/\.*/*' | peco --prompt 'CHANGE DIRECTORY>')" BUFFER=$LBUFFER$filepath else # 上記以外の場合は近場のファイルやディレクトリを選択できるようにする local filepath="$(find . -maxdepth 3 -not -path '*/\.*/*' | peco --prompt 'PATH>')" BUFFER=$LBUFFER$filepath fi CURSOR=$#BUFFER } zle -N peco-path-find bindkey '^h' peco-path-find
ただ、peco
で選択したディレクトリをバッファに入力してくれるところまではしてくれるものの、
どうせなら peco
で選択した後は実際に移動までしてもらいたいです。
その際に
zle accept-line
をするとバッファ上にある文字列で実行してくれるということを最近ようやく知れたので (参考: https://qiita.com/ymorired/items/4b0d8e95786efc1378b4)、結果以下のようになりました。
function peco-path-find() { if [[ $LBUFFER =~ \s*cd\s* ]]; then local filepath="$(find . -maxdepth 5 -type d -not -path '*/\.*/*' | peco --prompt 'CHANGE DIRECTORY>')" BUFFER=$LBUFFER$filepath zle accept-line # これ!!!!!! else local filepath="$(find . -maxdepth 3 -not -path '*/\.*/*' | peco --prompt 'PATH>')" BUFFER=$LBUFFER$filepath fi CURSOR=$#BUFFER } zle -N peco-path-find bindkey '^h' peco-path-find
zsh については完全に疎い人間なので改めて設定を見直してこんがらがっていますが、開発環境が改善されて気持ち良くなるのは良いですね。