Qbilinux 日記

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

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 とマージしたりするかもですが,とりあえず使えるレベルのものになったかなと.

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