最近の変更サイトマップ

FreeBSD 12のApache 2.4.39がunion semun ickふんだららでビルドエラー

FreeBSD 12.0-RELEASEへの更新中、www/apache24のports更新で以下のようなビルドエラーが起きた。

unixd.c:245:25: error: variable has incomplete type 'union semun'
            union semun ick;
                        ^
unixd.c:245:19: note: forward declaration of 'union semun'
            union semun ick;
                  ^
1 error generated.
*** [unixd.lo] Error code 1

union semunが定義されとらんとな…。

ググってみたら既にバグチケが上がっていた。メンテナ曰く、当該箇所を削除するか全部のトップレベルのportsをリビルドせよとの事だが、後者は面倒でござる。というか、“全てのトップレベル”の範囲がわからんかったので、ソース修正でどうにかする。

/usr/ports/www/apache24/work/httpd-2.4.39/os/unix/unixd.cの240行目付近、#if !APR_HAVE_UNION_SEMUNによってunion semunの定義がなくなっているようなので、#if#endifをコメントしてやる。

            apr_os_proc_mutex_t ospmutex;
//#if !APR_HAVE_UNION_SEMUN  ///★コメントアウト!
            union semun {
                long val;
                struct semid_ds *buf;
                unsigned short *array;
            };
//#endif  ///★コメントアウト!
            union semun ick;
            struct semid_ds buf = { { 0 } };

あとは/usr/ports/www/apache24の下でmake installすればビルドは通る。……が、起動しようとするとSegmentation faultで落ちるぅorz。

見た感じdevel/apr1関係のコードのような気がするので、portmaster apr –force-configでaprをリビルド。その後、改めてportmaster apache24 –force-configしたら無事ビルドも通って問題なく起動した。

FreeBSDにConnectXのユーティリティを入れるとファイル所有者が書き換えられる?

FreeBSD 12.0-RELEASEへの更新作業時に発覚した、システム系ディレクトリの所有者が謎の6151に書き換わってる問題の続き。

こんな感じでユーザーデータ置き場以外でroot以外が所有者のディレクトリを列挙してみた。

# find / -type d ! -uid 0 ! -path "*/home/*" ! -path "*/zdata/*" ! -path "*/zbackup/*" -print0 | xargs -0 stat -f "%u %g %N" | tee ~/non_root_owner_dirs.txt

すると、以下のディレクトリの所有者が6151になっていた。

6151 0 /etc
6151 0 /etc/mft
6151 0 /etc/mft/fwtrace_cfg
6151 0 /usr
6151 0 /usr/bin
6151 0 /usr/include
6151 0 /usr/lib
6151 0 /usr/lib/bash_libs
6151 0 /usr/lib/mft
6151 0 /usr/lib/mft/mtcr_plugins
6151 0 /usr/lib/mft/python_tools
6151 0 /usr/lib/mft/python_tools/mlxmcg
6151 0 /usr/lib/mft/python_tools/mst
6151 0 /usr/lib/mft/python_tools/mstdump
6151 0 /usr/lib/mft/tcl
6151 0 /usr/lib/mft/tcl/bin
6151 0 /usr/lib/mft/tcl/lib
6151 0 /usr/lib/mft/tcl/lib/tcl8.4
6151 0 /usr/share
6151 0 /usr/share/man
6151 0 /usr/share/man/man1
6151 0 /usr/share/mft
6151 0 /usr/share/mft/mlxconfig_dbs
6151 0 /usr/share/mft/mstdump_dbs

これらディレクトリの中を覗いてみると、いくつかのファイルも6151になっている。そして6151のやつらの大半の最終更新日が2018年11月23日だった。

書き換わってるファイル達と更新日から察するに、どうもConnectX-3のユーティリティのインストールが原因のような気がする。頼むよMellanoxさん…。

幸い、6151以外に怪しい所有者は見当たらなかったので、以下のコマンドで所有者をrootに戻して一件落着(元の所有者が本当にrootだったかどうかの確証はないけど…)

# find / -uid 6151 ! -path "*/home/*" ! -path "*/zdata/*" ! -path "*/zbackup/*" -print0 | xargs -0 chown root

FreeBSD 12.0-RELEASEのデフォルトのPerlをPerl 5.28に直す

FreeBSD 12.0-RELEASEに更新後、Samba 4.8を更新しようとしたら怒られた。

# portmaster samba48

===>>> Currently installed version: samba48-4.8.5_1
===>>> Port directory: /usr/ports/net/samba48

        ===>>> This port is marked IGNORE
        ===>>> Invalid perl5 version 5.24


        ===>>> If you are sure you can build it, remove the
               IGNORE line in the Makefile and try again.

Perl 5.24は不適切とな。例によって

/usr/ports/UPDATING

を見てみると、システムデフォルトのPerlバージョンは5.26 (20180330)を経て今は5.28(20181213)となっている模様。

20161103の記述に従い、Perlのバージョンを更新する。

まずは/etc/make.confDEFAULT_VERSIONS+= perl5=5.28を追加。

# echo 'DEFAULT_VERSIONS+=  perl5=5.28' >> /etc/make.conf

Perl 5.24を5.28で置き換える。

# portmaster -o lang/perl5.28 lang/perl5.24

正常に終了したら、上記DEFAULT_VERSIONSは消しておk。

そののち、Perl 5.24の共有ライブラリに依存するパッケージを更新。

# portmaster -f `pkg shlib -qR libperl.so.5.24`

p5-なパッケージも更新しといた方が安全かも?

# portmaster p5-

これで無事Samba 4.8のビルドが通った。

FreeBSD 11.2-RELEASEをFreeBSD 12.0-RELEASEに更新

遅ればせながら家鯖をFreeBSD 11.2-RELEASEから12.0-RELEASEへと更新した。

まずは現在の環境を最新にしておく(あまりに古いとメジャーバージョンアップに失敗することがあるため)

$ freebsd-version -ku
11.2-RELEASE-p7
11.2-RELEASE-p7

# freebsd-update fetch
# freebsd-update install
# reboot

ここで、ブートローダまでは起動するがカーネル読み込みでブラックスクリーンになる謎現象に2日ほど悩まされた。結局BIOS設定をデフォルト状態に戻したら直ったが、原因は恐らくデュアルCPUからシングルCPUに変えた事と思われる。うちの鯖は無駄にデュアルCPUだったので(ドヤァ

最新になったか確認。

$ freebsd-version -uk
11.2-RELEASE-p10
11.2-RELEASE-p10

12.0-RELEASEへ更新する。 </code> # freebsd-update -r 12.0-RELEASE upgrade Looking up update.FreeBSD.org mirrors… 3 mirrors found. Fetching metadata signature for 11.2-RELEASE from update2.freebsd.org… done. (略) To install the downloaded upgrades, run “/usr/sbin/freebsd-update install”. </code>

システムのインストール

# freebsd-update install
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.

「再起動して再度freebsd-update installせよ」とのことだが、ここで必ずサードパーティのkext(vboxdrvとか)を一旦無効化する。さもないと、再起動後のカーネル読み込みでクラッシュする場合がある。

# emacs /boot/loader.conf
hogehoge_load="YES"の行をコメントアウトするで~

再起動

# reboot

システムのバージョンを確認してみる。システムは更新され、ユーザーランドは古いままという事が分かる。

$ freebsd-version -ku
12.0-RELEASE-p4
11.2-RELEASE-p10

ユーザーランドを更新。procの所有権を変えようとしてエラーが出てるけど、まぁ気にしない。

# freebsd-update install
Installing updates...install: chown 0:0 ///proc: Operation not supported
install: chmod 555 ///proc: Operation not supported

Completing this upgrade requires removing old shared object files.
Please rebuild all installed 3rd party software (e.g., programs
installed from the ports tree) and then run "/usr/sbin/freebsd-update install"
again to finish installing updates.

再度システムのバージョンを確認。ユーザーランドが更新されていることが分かる。

$ freebsd-version -uk
12.0-RELEASE-p4
12.0-RELEASE-p5

ここまで来たら、pkg-static upgrade -fでインストール済みpackagesをすべて更新するのが正しいお作法。

なんだけれども、自分はportsでビルドしていく派なのでpkgだけ更新して、残りはちまちまportmasterする。

# pkg-static install -f pkg
pkg-static: Warning: Major OS version upgrade detected.  Running "pkg-static install -f pkg" recommended
Updating FreeBSD repository catalogue...
pkg-static: Repository FreeBSD has a wrong packagesite, need to re-create database
Fetching meta.txz: 100%    944 B   0.9kB/s    00:01
Fetching packagesite.txz: 100%    6 MiB   1.7MB/s    00:04
Processing entries: 100%
FreeBSD repository update completed. 31778 packages processed.
All repositories are up to date.
The following 1 package(s) will be affected (of 0 checked):

Installed packages to be REINSTALLED:
        pkg-1.10.5_5 (ABI changed: 'freebsd:11:x86:64' -> 'freebsd:12:x86:64')

Number of packages to be reinstalled: 1

3 MiB to be downloaded.

Proceed with this action? [y/N]: y
[1/1] Fetching pkg-1.10.5_5.txz: 100%    3 MiB   1.7MB/s    00:02
Checking integrity... done (0 conflicting)
[1/1] Reinstalling pkg-1.10.5_5...
[1/1] Extracting pkg-1.10.5_5: 100%
ldconfig: /usr/lib: ignoring directory not owned by root

んん~?/usr/libのオーナーがrootじゃないだとー?

$ ls -al /usr
total 177
drwxr-xr-x  18 6151  wheel   17 11月 23  2018 .
drwxr-xr-x  25 root  wheel   34  5月 29 01:20 ..
dr-xr-xr-x+  3 root  wheel    3 10月 19  2011 .zfs
drwxr-xr-x   2 6151  wheel  515  5月 29 00:39 bin
drwxr-xr-x   2 root  wheel    5  1月 29  2017 freebsd-dist
drwxr-xr-x  16 root  wheel   15 10月 22  2018 home
drwxr-xr-x  58 6151  wheel  344  5月 29 00:33 include
drwxr-xr-x  12 6151  wheel  710  5月 29 00:49 lib
drwxr-xr-x   5 root  wheel  720  5月 29 00:39 lib32
drwxr-xr-x   5 root  wheel    5  5月 29 00:49 libdata
drwxr-xr-x   9 root  wheel   68  5月 29 00:39 libexec
drwxr-xr-x  19 root  wheel   19 11月 15  2018 local
drwxr-xr-x   3 root  wheel    3  7月 13  2017 obj
drwxr-xr-x  72 root  wheel   92  5月 29 07:49 ports
drwxr-xr-x   2 root  wheel  305  5月 29 00:39 sbin
drwxr-xr-x  30 6151  wheel   30  5月 29 00:49 share
drwxr-xr-x  26 root  wheel   40  5月 29 00:34 src
drwxr-xr-x  15 root  wheel   18  7月 13  2017 tests

6151って誰だよ…。最早FreeBSD更新とは無関係になってきたので、続きは別記事で。

プログラム一覧に載ってない Lavasoft Web Companion を消す

いつごろからか、PC起動時に「Another instance is running : 'WebCompanion.UI.AppCore.Services.InstallerService'のタイプ初期化子が例外をスローしました。」というダイアログが出るようになった。

特段気にもしてなかったが、いい加減うざい&何か気持ち悪いので調べてみたところ、Web Companionとかいうアンチアドウェアを騙るアドウェアらしい。ググって出てきた情報を鵜呑みにしてるので間違ってるかもしれないが、自分が能動的に入れた記憶は一切ないのでお行儀の悪いソフトである事は間違いない。

Geek Uninstallerで強制削除すればアンインストールできるそうだが、自分の環境では「プログラムと機能」(アプリと機能)の一覧に出てこなかった。そういえば、結構前にアンインストールボタンを押したような気がしないでもない…。

とりあえず、C:\Program Files (x86)\Lavasoft\Web Companion\Applicationにアンインストーラがないかと覗いてみるも、それっぽいexeはなし。WebCompanionInstaller.exeがアンインストーラも兼ねてるかも?と思い実行してみたけど、やはりアンインストールは出来ず。だがしかし、プログラムと機能にWeb Companionが復活した笑。どうやら再インストール扱いになった模様。

あとはGeek Uninstallerで強制削除を実行。

全部にチェックを入れて「完了」!

それでも一部のファイルは残ったままで、消そうとしても「使用中で消せないよーん」と言われる。

コンピュータの管理を開き、サービスメニューから関連サービスと思われる「WC Assistant」を停止して、上記フォルダを手動で削除する。

多分これで完全に消えたはず?

参考サイト

start.txt · 最終更新: 2016-05-07 17:46 by Decomo
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0