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 とマージしたりするかもですが,とりあえず使えるレベルのものになったかなと.
そんな感じで暇を見てぼちぼちと作業をしている感じです.はい.