Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

Qbilinux 開発について(その82): openssl 1.1.1 とか古い icu とか削除

Plamo Linux 6.x のソース一式からブランチして,Qbilinux という linux ディストリビューションをぼちぼちと作成.

いつまで続くのか.

情報などを記載したホームページは https://qbilinux.org/ に,ビルドスクリプトは https://github.com/qbilinux/qbilinux,バイナリは https://qbilinux.org/pub/ 以下にあります.

先日作成したツールを使ってパッケージの依存関係を調べつつ,openssl 1.1.1 から openssl 3.x に移行するために 1.1.1 に依存しているパッケージの調整をしたり,古いバージョンの icu に依存しているパッケージがたくさん残っていたのでそれらを整理したりなど行っていました.

先日,qbilinux-current の方に上げた x86_64 パッケージ一式でそられは解消されたかと思います.openssl 1.1.1 や古い icu パッケージ一式も削除してあります.この作業に関して x86 は現在作業中,arm 系はまだ手付かずといった感じ.

また,python 周りも触ると影響が大きかったのでしばらくそのままにしていましたが,最新 python に追従.先日作成したスクリプトも python で作っているんですけど,python が最新版になったことによりかなり高速になりましたね.体感では3倍くらいかなぁ.かなり快適になりました.

ざっと気になっていたところは整理できたので,今後は古くなっているパッケージ類を少しずつアップデートしていきたいと思います.

簡単ですけど,そんな感じです.

Qbilinux 開発について(その81): メンテナンス用の補助ツールとりあえず作成

Plamo Linux 6.x のソース一式からブランチして,Qbilinux という linux ディストリビューションをぼちぼちと作成.

いつまで続くのか.

情報などを記載したホームページは https://qbilinux.org/ に,ビルドスクリプトは https://github.com/qbilinux/qbilinux,バイナリは https://qbilinux.org/pub/ 以下にあります.

先日,パッケージの更新/作成作業を効率的に行うために,バイナリとパッケージとの関連を検索するツールを作ろうかなと途中まで作業してるって書きましたが,とりあえず作成して github の x86_dev ブランチにあげました.usage メッセージ, スクリプト内のコメントなどはまだ暫定.

とりあえずは Plamo Linux にある get_depends.py, query_depends.py コマンドと同じような作りにしておきました.新しいコマンド名はとりあえず get_packages.py, query_packages.py という名前で x86_dev というブランチにあげてあります.

自分のメモも兼ねて簡単な使い方を書いておくと get_depends.py, get_packages.py の両方を実行して DB を作成/更新した後,query_packages.py を実行するかたち.query_packages -b xxx を実行すると xxx が使っているパッケージを表示し,query_packages -s xxx を実行すると xxx に依存するパッケージを表示します.実行例は (途中省略しているけど) こんなかんじ.

$ ./query_packages.py -b file
file needs these packages
  None
      linux-vdso.so.1 (None)
      /lib64/ld-linux-x86-64.so.2 (None)
  file
      libmagic.so.1 (usr/lib64/libmagic.so.1.0.0)
  libseccomp
      libseccomp.so.2 (usr/lib64/libseccomp.so.2.5.3)
  glibc
      libc.so.6 (lib64/libc.so.6)
  libc
      libc.so.6 (lib64/libc.so.6)
  xz
      liblzma.so.5 (usr/lib64/liblzma.so.5.4.0)
  ...

 

$ ./query_packages.py -s libcrypto.so.1.1
libcrypto.so.1.1 used by these packages
  GConf
      usr/lib64/GConf/2/libgconfbackend-evoldap.so
  Python2
      usr/lib64/python2.7/lib-dynload/_hashlib.so
      usr/lib64/python2.7/lib-dynload/_ssl.so
  anjuta
      usr/lib64/anjuta/libanjuta-subversion.so
  apr_util
      usr/lib64/apr-util-1/apr_crypto_openssl-1.so
  atril
      usr/lib64/atril/3/backends/libxpsdocument.so
  aura_browser
      usr/bin/aura-browser
  bsd_games
      usr/libexec/games/dm/factor
  cmake
      usr/bin/ccmake
      usr/bin/cmake
  ....

 

「file コマンドは file, libseccomp, glibc などのパッケージに含まれるライブラリなどに依存しています.」「libcrypto.so.1.1 は GConf, Python2, anjuta パッケージなどに含まれるファイルから呼び出されています.」って意味.依存しているライブラリ名などはパッケージ名のあとに表示されています.

とりあえず ffmpeg5 あたりをビルドしなおして,上記コマンドで依存関係を調べながら関連パッケージを更新してみましたが,だいぶん楽になりました.

先述した usage メッセージ, スクリプト内のコメント周りの修正の他にも,表示がちょっと気に入らないんで修正するつもりだけど,さらに気が向いたら既存の get_depends.py, query_depends.py とマージしたりするかもですが,とりあえず使えるレベルのものになったかなと.

そんな感じで暇を見てぼちぼちと作業をしている感じです.はい.

cakephp 3.x のサポート終了に伴って 4.x への移行作業

最近の php フレームワークは laravel が主流になっているのかなぁとは思いますが,手元に cakephp で運用しているサーバーがあります.

実は最近は laravel 環境で作業している方が多いんですけどね.

その cakephp ですが,とうとう cakephp 3.x のサポートが終了してしまいました.

いろいろなツールのサポート機関を調べている際に,今回初めて知ったのですが,endoflife ってサイトに各ツールのサポート終了時間がまとまっていてかなり便利だなと感じました.

endoflife.date

ということで,少し前から手持ちの cakephp 3.x 環境を cakephp 4.x 環境に移行作業中.3年くらい前にも少し作業をしていましたが,その時は様子見って感じでした.

あまり時間もかからずに主なところは動作するようになりましたが,ユーザーログイン回りとかクッキー回りで苦戦中.

ユーザーログイン回りは Plug-in は使わずに全部自前で記述しているんですがそれが婀娜になっている感じ.かなり書き換えが必要.

クッキー回りは制御方法が全く変わってしまっているので全然使い回しが効かないのね.クッキークラス経由で save / load ができていましたが,response 経由で制御する形に変更になったみたいですね.

作業環境を整え始めたのが cakephp 4.4.6 の頃だったのでその環境でとりあえず今も作業していますが,一段落したら最新の 4.4.x 系に置き換えてもう一回チェックする感じかな.あとはついでに php も最新にしておいた方が良いかなと 8.2 を使っています.

という感じで作業していますが,今月中くらいにテストも終わらせてなんとか入れ替えたいなと思っています.

とはいいつつ,すでに cakephp 自体は 5.0.0-beta1 が公開されていたりするんですけどね.

いろいろなサイトを見ると php とかフレームワークをサポートが切れた古い環境のまま使い続けているところをたくさん見掛けますが,個人的にサポート切れているものを使い続けるのは抵抗あるのでバージョンアップ作業をしています.はい.

各ツールのリリースサイクルをもう少しこまめにチェックして,今後はアップデートスケジュールをきちんと立てておかないとダメかなと少し反省しています.まぁ,他の作業とか業務が忙しかったりするとスケジュール立てていても実行できないときもあるんだけどね.

時間に余裕があって,気が向いたら cakephp 3.x から 4.x の移行記事でも書こうかと思います.が,また徐々に忙しい感じになってきてるのでちょっと無理かもしれないですが.

まぁ最近はそんな感じの作業もしていますって感じのただの日記でした.

CakePHP 超入門

CakePHP 超入門

Amazon

 

Qbilinux 開発について(その80): メンテナンス用の補助ツールでもつくろうかなと作業中

Plamo Linux 6.x のソース一式からブランチして,Qbilinux という linux ディストリビューションをぼちぼちと作成.

いつまで続くのか.

情報などを記載したホームページは https://qbilinux.org/ に,ビルドスクリプトは https://github.com/qbilinux/qbilinux,バイナリは https://qbilinux.org/pub/ 以下にあります.

一旦仕切り直しということで,パッケージ一覧をざっと眺めて古くなっているものを徐々に更新.

けど,依存関係がいろいろとあるので手作業で調べつつの作業だとやぱり時間がかかって厳しいかんじ.

ということで補助ツールでも作ろうかなと.

古いバージョンの icu とか openssl などを消そうと思ったんだけど,依存しているパッケージが現状では簡単に調べられないので,ぱっと調べられるツールを作っておこうかなと思って.他にもライブラリの soname が変更になった場合に,どのパッケージを更新すれば良いかもパッケージレベルで簡単に調べられないし.

いろいろ調べてなんとなくやれば良いことはわかったので python でインプリ作業中.ツールが公開できるレベルになったらペースアップしてパッケージ更新できれば良いなと思ってます.

大きなところに手を入れ始めるとやることが増えてしまっていますが,ぼちぼち作業できればと思っています.

そんな感じです.

Qbilinux 開発について(その79): 久しぶりに作業

Plamo Linux 6.x のソース一式からブランチして,Qbilinux という linux ディストリビューションをぼちぼちと作成.

いつまで続くのか.

情報などを記載したホームページは https://qbilinux.org/ に,ビルドスクリプトは https://github.com/qbilinux/qbilinux,バイナリは https://qbilinux.org/pub/ 以下にあります.

かなり前になりますが,リリースしようかと思って作業していましたが,思いっきりタイミング逃した感じ.

本業が忙しくなってまったく手付かずになっている間にいろんなものがバージョンアップしてしまいましたね.

最近ようやく少し時間が取れるようになってたので少しインストーラに手を入れる作業をしたいたのですが,この環境でリリースしてもちょっと個人的にメンテナンスするモチベーションが沸かないかもなって思ってしまいました.

ということで,仕切り直してパッケージ全体をできるだけ最新に追従させてからまとめる形にしたいなと思っています.

とりあえず,glibc とか gcc,llvm などを手元の環境で最新に更新してみました.徐々にパッケージ全体を見直していこうかと思います.

そんな感じですが,よろしくお願いします.

Qbilinux 開発について(その78): aarch64 も追従させました(2)と 0.5.0a2 の iso イメージ

Plamo Linux 6.x のソース一式からブランチして,Qbilinux という linux ディストリビューションをぼちぼちと作成.

いつまで続くのか.

情報などを記載したホームページは https://qbilinux.org/ に,ビルドスクリプトは https://github.com/qbilinux/qbilinux,バイナリは https://qbilinux.org/pub/ 以下にあります.

Qt のビルドにこけていた aarch64 版をある程度修正しました.まだ,一部エラーになっているので KDE 自体は動作しないかなと思います.(未確認)

一旦この状態で aarch64 版の実行イメージを作成しようかと思っています.

また,x86/x86_64 版のパッケージ作成エラーをほとんど修正して 0.5.0a2 の iso イメージを作成してみました.

iso イメージを使ってブートできること,VirtuslBox にインストールできることは確認していますが,まだインストーラーの調整を行なっていないので不具合があるかもしれないです.といったレベルのものです.はい.

インストーラ周りを調整したら beta 版にしたいと思っています.

取り急ぎそんな感じです.

Qbilinux 開発について(その77): インストーラを使わないインストール方法 (メモ)

Plamo Linux 6.x のソース一式からブランチして,Qbilinux という linux ディストリビューションをぼちぼちと作成.

いつまで続くのか.

情報などを記載したホームページは https://qbilinux.org/ に,ビルドスクリプトは https://github.com/qbilinux/qbilinux,バイナリは https://qbilinux.org/pub/ 以下にあります.

手元で開発している時にインストーラ経由ではなく,コマンドラインからインストールすることがあるので,その手順をメモがわりに記載しておきます.たまにやろうとするとどうだったっけ?ってなるので自分用の備忘録代わりです.

下記記載は Qbilinux 上で作業しているものとしています.もしかしたら Plamo Linux とか Slackware など,同じ管理方法・管理コマンドを採用しているディストリビューションでも同様の方法でインストールできるかもしれないですが,私自身は確認していません.

また,ブートローダーは別途自分で用意して,インストールしたパーティションから起動できるように修正してください.手動でインストールすることもできますがここでは説明しません.

 1. インストールするパーティションを用意

あらかじめインストールするパーティションを作成して ext4 などでフォーマットしておきます.

ex)
% mkfs.ext4 /dev/nvme0n1p4

2. インストールするパーティションをどこか作業用ディレクトリにマウント

ex)
% mount /dev/nvme0n1p4 /mnt

3. パッケージ類を上記ディレクトリにインストール

installpkg コマンドを使ってマウントしたディレクトリ以下にパッケージ類をインストールします.パッケージ単位,ディレクトリ単位のどちらでも構いません.当然,パッケージファイル一式を手元に置いておく必要があります.引数のパッケージ名,ディレクトリ名はインストールしたいアーキテクチャのものを指定してください.

installpkg コマンドの引数 -root の後ろにインストールしたいパーテションをマウントしたディレクトリを指定します.絶対 path での指定が必要です.

00_base から 12_lxqt まですべてのディレクトリをインストールすればフルインストール状態になります.00_base と 01_minimum のみをインストールすれば最小環境になります.

ex)
% installpkg qbilinux/00_base -root /mnt
% installpkg qbilinux/01_minimum/perl-5.32.0-x86_64-1.txz  -root /mnt

4. fstab ファイルを作成

/etc/fstab ファイルをインストールしたいディレクトリ以下に手作業で作成します./mnt ディレクトリ以下で作業している場合には /mnt/etc/fstab ファイルを作成します.下記は作成する fstab の例です./ を /dev/nvme0n1p3 に,swap を /dev/nvme0n1p4 にしています./, swap などを自分の環境に合わせて修正してください.

/dev/nvme0n1p4       swap        swap        defaults   0   0
/dev/nvme0n1p3       /        ext4        defaults   1   1
/dev/sr0       /cdrom   iso9660   user,ro,noauto,exec,iocharset=euc-jp 0   0
none             /proc    proc        defaults   0   0
none             /sys     sysfs       defaults   0   0
none             /dev     tmpfs       defaults   0   0
none                /tmp     tmpfs       defaults   0   0
none            /dev/pts        devpts  gid=5,mode=620    0 0
none            /proc/bus/usb             usbfs        noauto   0   0

/home などのマウントが必要なら適宜

/dev/sda1       /home        ext4     defaults  1   2

などを追加してください.(パーティション名,各種オプションなどは適当に変更してください)

5. 使用するブートローダーを設定

上記の例では /dev/nvme0n1p3 にインストールしたので,このパーティションから linux ブートできるように使用するブートローダーを設定してください.

デフォルトの grub で使用しているオプションは /etc/default/grub 中に記載していますが下記になります.

vga16 panic_output=7 net.ifnames=0

net.ifnames=0 がないとネットワーク I/F が eth0 になりませんので,手動で調整する必要があります.

6. ブートローダーをつかって起動

各自の使用しているブートローダーを使ってインストールしたディレクトリから起動してください.

必要な初期設定などは起動時に行われます.また,root のパスワードなどは入力する画面で止まりますので,適宜入力してください.

login プロンプトが出れば,root ユーザーでログインできます.

7. 必要な初期設定

手作業でインストールを行なった場合には,当然のことですがネットワークの設定,時刻などの設定が行われていません.

ネットワークの設定は /sbin/netconfig.tradnet コマンドを,時刻の設定は /usr/sbin/timeconfig コマンドを使って行ってください.

日本語が化ける場合には LANG を設定してから実行してください.

インストーラを使ってインストールしている場合には /var/log/setup 以下に入っているスクリプトがインストーラ中で実行されています.先頭に e がついているものが英語版のコマンドで,ついていないものが日本語版のコマンドです.これらを実行しても問題ないかと思います.(が,試したことはありません)

ex)
export LANG=ja_JP.UTF-8
/sbin/netconfig.tradnet
/usr/sbin/timeconfig 

 

手順としては以上です.あとはユーザーの追加,X の設定などを適宜行えば普通に使えるようになるかと思います.

余談ですが,これまではラズパイ用の実行環境イメージはインストーラ経由で作成したイメージを配布していましたが,今後は上記手順で作成したイメージに変更しようかと思っています.上記手順の方が作成時間がかなり短くて済みますので.ドキュメント等は必要に応じて修正します.

まぁ特定の方しか関係なさそうな説明ですが,まぁこんなこともやっていますという参考程度まで.

Linux 開発用 PC のメモリ調達

以前,Linux 開発用 PC のメモリが足りないので注文してますって話をしました.下記の blog 記事あたりかな.

toshi-mtk.hatenablog.com

toshi-mtk.hatenablog.com

昨年末くらいに 32Gx2 の DDR4 DIMM を注文.その時の納期が 4/E だったけど,まぁ,そんなに急ぐものでもないかと思って地道に待ってました.

けど,実際に 4/E になったら納期不明ですとの連絡が.ヨドバシカメラで注文していたんだけど,注文していたメモリ自体はヨドバシカメラのホームページ表示では生産終了という表示になってました.で,いつ納品されるかもわからない状態.

昨今のコロナの影響とか半導体不足とかが影響しているのかなと.

うーむ,どうしよう.

為替の変動も考えると,今後は値段が上がりそうなので早めにどうするか考えた方が良いのかなと.待つのか,キャンセルして別のものを注文するのか.

ということで近所のドスパラ店舗に行ってみました.

32Gx2枚 の 3200 メモリが 34800円くらいで販売してました.注文していたメモリよりはスペック的には劣るけど,実際に品物があるし,注文していたものより 7000円くらい安かったのでまぁこれでいいかなと購入.ヨドバシカメラに注文していたメモリはキャンセルしました.

ちなみにヨドバシカメラで注文していたのは crucial の 32Gx2枚 3600 なもの.

購入したのは Corsair CMG64GX4M2E3200C16

で,取り付け.

無事認識.最初,BIOS で自動認識させたところ,2600 で動作していたので手動で 3200 に設定変更しました.3200 に変更しても特に問題なく動作している感じ.

注文後にキャンセルしたメモリは,メモリのホームページの動作確認機種に手持ちの M/B (ROG STRIX B550-I GAMING) がリストアップされていたから注文していたんだけど,今回購入したものはとくにそういった記述もなかったのでちょっとドキドキしていました.けど,まぁ一応ドスパラのモバイル会員になっているので動作しない場合の交換保証がついているので少しは安心してましたけどね.

www.dospara.co.jp

ゲーミングメモリ(?)なのでケースの外から LED が光りまくってるのが見えてるのがちょっとあれですけど,まあ動作している各任意なるのは良いかなと思ってます.はい.

 

ということで 64G メモリ環境になりました.

Linux 開発環境で webkit のコンパイルを行ってみたところトータルで 34G くらいのメモリを使っていましたので,やっぱり 32G ではなく一応 64G にしておいて良かったかなと.使っている CPU が AMD Ryzen 9 3900 12C/24T なので,単純計算しても 64G/24T = 2.66G ってことで 1 thread あたり 2.6 G くらい使うと 24T フルで動かすと 64G を使い切る計算になります.2.6G って多い気もするけど 32bit 環境でのメモリ上限あたりって考えるとそれほど大きくもない気もしてきます.感覚が麻痺してる?

まぁこれでしばらくは問題なく使えるかなと思っています.

時間がとれた時にチェック用に memtest86 を一応実行しておこうかなとは思っています.

簡単ですが,そんな感じです.

Plamo Linux のホームページにある日記とかデータとか

最近ふと Plamo Linux のホームページにある日記にアクセスしたら Internal Server Error でアクセスできない状態になっているのを見つけました.

http://plamo.linet.gr.jp/~matsuki/dialy/ のあたり.

メンテしようかなと思ってログインしようとしたところ,ログインできず.

なんかアカウントが削除されたっぽい.

ここ数年は Plamo 関係のメンテナらしい作業もしていないし,特に ML 等で発言もしていないし,また,ここの日記のタイトルも Plamo Linux から Qbilinux に変えちゃったしって状態なので Plamo 用のアカウントを再び作ってもらうのもなんか違うかなということでそのまま放置することにしました.

というわけで,Plamo Linux のホームページにある日記とかデータとかは今後メンテできませんのでよろしくお願いします.

まぁ,今更どうでも良いかなとは思いましたが,一応連絡まで.

Qbilinux 開発について(その76): aarch64 も追従させました

Plamo Linux 6.x のソース一式からブランチして,Qbilinux という linux ディストリビューションをぼちぼちと作成.

いつまで続くのか.

情報などを記載したホームページは https://qbilinux.org/ に,ビルドスクリプトは https://github.com/qbilinux/qbilinux,バイナリは https://qbilinux.org/pub/ 以下にあります.

新しいバージョン用の aarch64 版パッケージを x86_64 環境に追従させました.ただし,Qt のビルドがこけているため KDE まわりは軒並みビルド失敗してリリースバージョンのものより退化してしまいました.一応,バックアップも兼ねて https://qbilinux.org/pub/qbilinux-current/aarch64/ 以下を更新しておきましたが,追々修正するつもりです.
あと,ついでに x86_64 用の arm クロスコンパイル環境を更新.https://qbilinux.org/pub/tools/ 以下にパッケージ形式としておいてありますが,gcc を 11.3.0 に更新したものを作成してみました.aarch64 用と armhf 用. 

/opt/cross 以下にインストールされますので path を適当に通して使ってください.収録してある glibc などは現時点での最新版を使っています.kernel は 5.15 系を使っていたかと思います.

あとは,github の最新バージョンの作業をしているブランチ名を master から main に変更しました.今時にあわせた変更ですね.はい.

まぁ,簡単ですけど最近はそんな感じです.