ラベル ports の投稿を表示しています。 すべての投稿を表示
ラベル ports の投稿を表示しています。 すべての投稿を表示

2023年3月28日火曜日

FreeBSD で Python のデフォルトバージョンを変えたら py-gobject3 がうまくアップデートできなかった話

 久々に書き込んでいる気がする…。
 今回は FreeBSD で Python のデフォルトバージョンを変えた時のトラブルの話を書こう。

 何をしたかと言うと,FreeBSD 上のアプリケーションとしていろいろあるのだが,Python もインストールされている。 Python は Python 自体を使いたいというよりは,他のアプリケーションとの依存関係で勝手にインストールされる。 ついこの間まで,なぜかうちの FreeBSD の python の default version は 3.8 に指定してあった。 もう 3.11 が出てるのにね。でも,まぁ,現時点では 3.9 がまだ FreeBSD 上でのデフォルトとなってるから,そこまでひどくはないと思うけど…。 ちなみに default version が 3.8 から 3.9 になったのは 2022/6/26 なんだけどね (現在は 2023/3 末)。

 なぜ急に default version をあげようと思ったかというと,ふと /usr/ports/UPDATING で python で検索したら,2022/6/26 に python の default version を 3.8 から 3.9 にした,と書いてあったから。 そこで,その 2022/6/26 の記載に従って処理をしてみた。
概略は,

(1) /etc/make.conf で python のデフォルトを指定してあったのをコメントアウトした。
(2) root 権限で以下を実行した。
  # portmaster -o lang/python39 python38
  # REINSTALL="$(pkg info -o "*py38*" | awk '{printf "%s ", $2}')"
  # pkg delete -f "*py38*"
  # portmaster $REINSTALL
  # REBUILD=$(pkg query -g "%n:%dn" '*' | grep py3 | grep -v py39 | cut -d : -f 1 | sort -u)
  # portmaster $REBUILD
  # REBUILD2=$(pkg list | grep python-38 | xargs pkg which | awk '{print $6}' | sort -u)
  # portmaster $REBUILD2
(3) 最後に "pkg remove python38" を実行して,/usr/local/lib/python3.8/ ディレクトリになにか残ってたら手動で消す。
というもの。

 で,エラーが起こったのは(まぁ,当然といえば当然だが)(2) の実行時。その中でも「portmaster $REINSTALL」ってのを実行中にエラーがでた。 これは,直前で python 3.8 で作られたアプリケーションを消し,それらを python 3.9 で(デフォルトで)作り直す,というコマンド。 それが最後まで実行されなかった。見ると途中に「ERROR」という文字が見える。 portmaster というコマンドは,複数のアプリケーションのアップデートを順にやってくれるが,どれかのアップデートでエラーが起こると,その先は実行してくれない。 今回見ていると,どうも「/usr/ports/devel/py-gobject3/」というアプリケーションのアップデート時にエラーを吐いていた。 エラーメッセージ(一部)はこんなんやった。
ERROR: Unhandled python OSError. This is probably not a Meson bug, but an issue with your build environment.
WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.
===>  Script "configure" failed unexpectedly.
Please report the problem to desktop@FreeBSD.org [maintainer] and attach the
"/var/ports/usr/ports/devel/py-gobject3/work-py39/pygobject-3.42.2/_build/meson-logs/meson-log.txt"
including the output of the failure of your make command. Also, it might be
a good idea to provide an overview of all packages installed on your system
(e.g. a /usr/local/sbin/pkg-static info -g -Ea).
*** Error code 1

 見ると,「/usr/ports/devel/py-gobject3/」という文字列が目に入った。つまり「py-gobject3」のアップデートに失敗している。 そこで,とりあえず環境変数「$REINSTALL」の中身を「echo $REINSTALL」として表示させ,py-gobject3 以外を portmaster でアップデートするとうまくいった。 しかし,その後のプロセスで py-gobject3 を使うみたいで再びエラーがでた。

 仕方ないのでネットワークのお世話になり,検索をかけると,https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238254 というページにたどり着いた。読んでみると,どうも「/usr/ports/devel/gobject-introspection/」をインストールしなおせ,と書いてある。 「pkg info -aI」として調べると,確かに「gobject-introspection-1.76.1,1」がインストールされていた。

 そこで「/usr/ports/devel/gobject-introspection/」(gobject-introspection-1.76.1,1)をインストールし直してから (make install として,重複してるとエラーがでたら make deinstall install clean とした),「py-gobject3」を portmaster でアップデートしたらうまくいった。 何がおかしいのかよくわからないが,時々起こる似たような現象がおこる。何かのサブルーチンが最新になってなかった,ということみたいやけど,それ以上はいいことにしてしまった…。

2022年3月26日土曜日

FreeBSD で libxml2 のアップデートしたら,多くのアプリケーションが動かなくなった

 2022年3月26日に FreeBSD 上のアプリケーションのアップデートをしていたら,急に多くのアプリケーションが動かなくなった。 その顛末を書こう(まだ終わってないけど…)

 ことの起こりは FreeBSD 上で portupgrade をしたことに始まる。 まぁ,ホントは他のアプリケーションのアップデートができない,といわれてごそごそやっていたのだが…。 そのごそごそやっている時にメモを残しているのだが,そこで新しく emcas でファイルを作ろうと思った。 そしたらいきなり
ld-elf.so.1: /usr/local/lib/libxml2.so.2: version LIBXML2_2.4.30 required by /usr/local/bin/emacs not defined
と言われてしまった。

その時点での libxml2 のバージョンは
% pkg info -aI | grep libxml2
libxml2-2.9.13                 XML parser library for GNOME
py38-libxml2-2.9.13            Python interface for XML parser library for GNOME
py38-lxml-4.8.0                Pythonic binding for the libxml2 and libxslt libraries
だった。「libxml2」自体のバージョンは「2.9.13」だった。 説明を見る限りでは,この libxml2 は GNOME 上で XML のテキストファイルの解析(解釈?)をするものみたい。 なので,GNOME 上で動きそうなアプリケーションではかなり影響を受けそうな感じだった。 私の場合はそれが emacs だった。

2022年2月23日水曜日

FreeBSD で print/tex-luatex/ と japanese/tex-ptex/ のアップデートがうまくできなかった件

 つい最近(2022/2/18 付)で,FreeBSD 上で ports を使った gdal のアップデートがうまくできなかった件について書いた。 その時は,最終的には gdal を一度 pkg delete してインストールし直すとうまくいったのだが,今回も同じだった,というお話。

 現在,個人的な web site 用に FreeBSD を運用している。 今のバージョンは「FreeBSD 12.2-RELEASE-p7」となっている。そろそろ 12.3 とかに上げないといけないかなぁ,と思っているところ。 それはさておき,今回も前回の gdal の件と同じく,ports 経由で portmaster を使ってアプリのアップデートをしようとした。 すると,うまくアップデートできないものがあった。

それが
・tex-luatex-0.80.0_24 
・ja-tex-ptex-3.6_1 
だった。

 実は,他にも print/texlive-full とか print/tex-dvipdfmx もエラーが出たのだが,各 ports に移動してから「make install」としたら,重複したアプリがあるから一度「make deinstall」してインストールし直せ(make install),と出たので,その通りにしたらちゃんと最新アプリをインストールできた。 しかし,luatex と ja-tex-ptex はそれでもだめだった。

2022年2月18日金曜日

FreeBSD で graphics/gdal/ のアップデートがうまくできなかった件

 現在,個人的な web site 用に FreeBSD を運用している。 今のバージョンは「FreeBSD 12.2-RELEASE-p7」となっている。

そこで,ports 経由でアプリケーションを管理しているが,portmaster でアプリのアップデートをしようとすると「gdal-3.3.3_2」のアップデートでエラーがでた,という話。

 まずは,いつものように「# portsnap fetch update」で ports を最新にし,それから「portmaster -aDG --no-confirm」でアプリケーションをアップデートしようとした。 すると,なぜか「gdal-3.3.3_2」から「gdal-3.4.1」へのアップデートでエラーがでた。
エラーメッセージは以下のような感じだった。