青木 様

丸山です。色々ご教示くださり、有難うございます。

Mon, 8 Dec 2025 19:37:17 +0900
Tomoaki AOKI <[email protected]> writes:

>青木@名古屋です。 以下、部分ごとにコメントします。

ご指摘事項を読んで、ちょっと気がつきました。

>On Mon, 08 Dec 2025 13:22:18 +0900
>丸山直昌 <[email protected]> wrote:

>> 「バグだらけ」というのは、私の予想に過ぎません。賛成するかどうかは、読む
>> 方の考え方次第です。私は「パッケージ同士の依存関係すら正しく記述されてい
>> ないようではバグだらけに違いない」と考えたので、それを書いたまでです。興
>> 味が無ければ無視してください。
>> 
>> 正確に言えば、chromium 自体のソースと、それをfreebsd用パッケージにするた
>> めにpackage maintainer が書いたソースの部分があるわけで、パッケージの依
>> 存関係がおかしいというのは、後者のソース部分にバグがあることを示している
>> と思います。

ここ、"package maintainer" ではなくて "ports の maintainer"と書いた方が
実状に近かったかな?FreeBSDのコミュニティーにおける役割分担を私は正確に
理解していないので、正確な表現ではないかも知れませんが、言いたかったのは
元祖Chromium(Google作?)のバグではなく、それをFreeBSDにportingする作業で
のミス、という意味です。

>丸山様のひとつ前のポストに関してですが、例えば「www/chromiumを
>削除した場合、pkg info -r chromiumで表示される依存物が削除される」
>という懸念については、pkgそのものにバグが無ければ、他にも依存して
>いるものが存在するパッケージは削除されません。

そりゃそうですね。そんな事ちょっと考えればわかったはずですね。私の思考の
浅さが露見してしまいました。ご指摘有難うございました。

> あくまで、automatic
>扱い(依存関係で自動的にインストールされたもの)で他の何からも
>依存されていなければお掃除してくれる、という位置づけです。

はい、納得です。

># 例外的に、削除するときの公式メタデータ確認で新しいバージョンが
># みつかり、他からも依存されているので更新しようとしたら何らかの
># 障害(理由は問いません)が発生してインストールできなかったため、
># あたかも道連れで消える構造になっていたように見えることはあります。

ここのところはちょっと私の知識の範囲ではどういう状況か想像しにくい事です。
これの理解は将来の課題にしておきます。

>既に修正されていますが、pkgの2.x系への移行初期、このあたりの処理が
>壊れていて大変なことになっていました。

「pkgの2.x系への移行」って割と最近のことですよね。半年以内くらい?

>また、現行のpkgについての個人的不満もあるのですが、pkgを(公式・
>非公式問わず)portsからビルドする際、記録される依存関係は
>「インストールしたものを実行する際に必要(LIB_DEPENDSとRUN_DEPENDS)
>なもの」についてのみで、

そうですよね。だから

% pkg info -r chromium
chromium-142.0.7444.175:
        libplacebo-7.351.0_1 (libvulkan.so.1)
        gtk4-4.18.6 (libvulkan.so.1)
        webkit2-gtk_60-2.46.6_4 (libvulkan.so.1)
        evolution-data-server-3.56.2_3 (libvulkan.so.1)
        ibus-1.5.32 (libvulkan.so.1)
        mpv-0.40.0_5,1 (libvulkan.so.1)
        wlroots019-0.19.2 (libvulkan.so.1)
%

は何としてもおかしい。「gtk4 を実行する際にchromiumが必要」なんてあり得
ない。どういう作業をやったらこんなバグが入り込むのか、私の頭では全く想像
できません。

前のメールにも書きましたが、私は半年に一度くらい、使いそうなパッケージは
全部一斉にpkg install して /var/cache/pkg をそっくり保存しておいて、自分
が使う他のすべてのマシンで使いまわします。そのようにするので、

% pkg info |wc
    1753   11914  127722
% ls /var/cache/pkg |wc
    3508    3508  109852

というようなことになります(他の方々はもっと多いかも知れませんが)。他のマ
シンで pkg add コマンドを1752回やるのはいかにも無駄なので、最小回数の
pkg add だけで済ませたいと考えて以下のような shell script に pkg info の
出力を食わせます。つまり「依存関係の頂点にある package だけを pkg add す
る」というわけです。

#!/bin/sh
PKG_DIR=/var/cache/pkg
PKG_DIR=${DIR-$PKG_DIR}

echo "#!/bin/sh
PKG_DIR=${PKG_DIR}
PKG_DIR=\${DIR-\$PKG_DIR}
set -x

date
"

echo '
cd ${PKG_DIR}
'

cd $PKG_DIR
set - `cut -f 1 -w`

for i
do
  if [ `pkg info -r $i | wc | cut -f 2 -w` = 1 ]; then
    echo "pkg add ${i}.pkg"
  fi
done

echo "
date
"

すると「pkg add chromium-xxxx.pkg が無い!何でだ?」となるわけで、それで
上記 pkg info -r chromium のバグに気が付くわけです。

>「fetch・ビルド・packageに際して必要だった
>もの」が記録されません。 不具合を再現して原因究明したい場合等には
>非常に困ります。
>
>一方、portsではそのあたりの設定がなければビルド不可能なので
>必然的に記載自体は存在します。 但し、AがBに依存していて
>AはBが依存しているCもB経由で使用するという場合、Aのportsには
>通常Cへの依存関係は記載されません。

私には雲の上の話のようですが、一度何か(unzipだったかな?)のコンパイルデ
フォルトが気に入らなくて、 ports から make したら、 portconfig の make
まで始まってしまって、驚いた記憶があります。 portconfig などというものは
一生使うことがないだろうと思っていたのですが、この一件以後、 pkg install
portconfig はやるようになりました。

>portsでどういう種類の依存関係が定義できるかは(英文ですが)
>ここに纏っています。
>
> https://docs.freebsd.org/en/books/porters-handbook/makefiles/#makefile-depend

英語に苦手意識はありませんが、 ports の作り方まで勉強している時間は、私
の残りの人生には無いと思っています。

>私は公式pkgをほぼ使っておらず、stable/15環境ではpoudriereでビルド
>していますが(OSVERSIONの末尾が1上がるだけの変更でも全てをリビルド
>しようとするのでmain環境では使っていません)、これでビルドしたものを
>歴史的な/usr/ports/packages/All以下に都度コピーして、なにかトラブルが
>生じたときに手戻りできるようにしています。
>
># 明らかに大規模な影響が見据えられる場合は/usr/local/と/var/db/等の
># snapshotを作成してロールバックできるように備えますが。

これまた私には雲の上の話ですが、心の片隅に留めておきます。有難うございま
した。

--------
丸山 直昌 まるやま なおまさ
メールアドレス: [email protected]

Reply via email to