1. 前準備
現在 5.14 が稼働中なのですが、既に 5.20 まで ports に存在するではないか。
やれやれ、以前に perl のバージョンアップ時は苦労した思い出があるからなぁ。
とこの記事を書いたのが 2015年5月10日で、2015年5月31日にやっと作業にかかろうと思ったら、やや、perl 5.22 があるではないですか、ということで、perl 5.22 へのバージョンアップとなります。焦ってバージョンアップしてなくてよかった。
と思ったら、一度にあげるんじゃなかった。下にぐだぐだ書いていますが、次にチャンスがあればもっとうまくやりたいと思います。
結論めいたことを言えば、perl は 4 とびこしは共存できないので
perl5.14 から perl5.22 にあげるには
perl5.16 を install
perl5.18 を install
perl5.14 を deinstall
perl5.20 を install
perl5.16 を deinstall
perl5.22 を install
perl5.18 を deinstall
という手順でインストールして、その途中で依存関係をうまく解消していくしかなさそうです。
perl5.22 が出るまで 5.14 のままほったらかしていた、わたしが悪い…と。なので、perl はときどきリリース状況を見て、こまめにバージョンアップしましょう。
(クリーンインストールした方が早かったような気がする 汗)
2. 前準備
例のごとく、データベースとシステムのバックアップをとります。
「1. 計画」のときと同じ要領で。
3. perl 5.22 インストール
perl 5.14 を先に消すのか perl 5.22 を先にインストールするのかという問題がありますが、現在稼働しているアプリケーションで perl 5.14 を使用している者がある以上、perl 5.22 を先にインストールするのが筋でしょう。
ということで、
> /usr/ports/lang/perl5.22
> make
> make install
make の時点で
===> perl5.22-5.22.0.r2 conflicts with installed package(s):
perl5.14-5.14.4_14
They install files into the same place.
You may want to stop build with Ctrl + C.
と出ちゃってますが・・・。ままよ。
make install の時点で
> make install
===> Installing for perl5.22-5.22.0.r2
===> Checking if perl5.22 already installed
===> Registering installation for perl5.22-5.22.0.r2
Installing perl5.22-5.22.0.r2...
pkg-static: perl5.22-5.22.0.r2 conflicts with perl5.14-5.14.4_14 (installs files into the same place). Problematic file: /usr/local/bin/c2ph
*** [fake-pkg] Error code 70
Stop in /usr/ports/lang/perl5.22.
*** [install] Error code 1
Stop in /usr/ports/lang/perl5.22.
やはり、無理があったか・・・。
いったんサーバアプリケーションを停止して、
4. perl 5.14 削除
> pkg delete perl5.14
Updating database digests format: 100%
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 80 packages (of 0 packages in the universe):
Installed packages to be REMOVED:
perl5.14-5.14.4_14
autoconf-2.69
help2man-1.43.3_1
~ 中 略 ~
suphp-0.7.2_1
mod_dav_svn-1.8.13
mod_php5-5.4.41,1
The operation will free 281 MiB.
Proceed with deinstalling packages? [y/N]:
これはおそろしくインストールしなおさなければならなくなるのだな・・・。削除して
> /usr/ports/lang/perl5.22
> make install
サーバアプリケーションを起動しようとして。おお、サーバアプリケーションそのものが消えているのがあるではないかこれらは、clean して install だな
> /usr/ports/www/apache22
> make clean
> make
> make install
すると
===> Registering installation for p5-Locale-gettext-1.05_4 as automatic
pkg-static: Unable to access file /usr/ports/devel/p5-Locale-gettext/work/stage/usr/local/./usr/local/lib/perl5/site_perl/mach/5.14/auto/Locale/gettext/.packlist: No such file or directory
*** [fake-pkg] Error code 74
はいはい
> /usr/ports/devel/p5-Locale-gettext
> make clean
> make
> make install
あれ、make install で同じことになる。しょうがないので pkg から install することにする。
> pkg install p5-Locale-gettext
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100% 968 B 1.0kB/s 00:01
Fetching packagesite.txz: 100% 5 MiB 1.3MB/s 00:04
Processing entries: 100%
FreeBSD repository update completed. 24079 packages processed.
Updating database digests format: 100%
The following 60 package(s) will be affected (of 0 checked):
Installed packages to be REMOVED:
python27-2.7.9_1
scons-2.3.0_1
python2-2_3
python-2.7_2,2
xcb-proto-1.11
py27-setuptools27-5.5.1_1
py27-MarkupSafe-0.23
py27-Jinja2-2.7.3
py27-Babel-1.3_2
py27-pytz-2014.10,1
py27-sphinx-1.2.3
py27-pygments-2.0.2
py27-docutils-0.12
cmake-3.1.3
libgd-2.1.0_5,1
tiff-4.0.4.b_1
analog-6.0_10,1
ja-webalizer-2.23.8_3
ruby21-bdb-0.6.6_4
ruby-2.1.6,1
portupgrade-2.4.14,2
libxslt-1.1.28_6
libarchive-3.1.2_2,1
New packages to be INSTALLED:
p5-Locale-gettext: 1.05_4
perl5: 5.20.2_4
libXaw: 1.0.12_3,2
printproto: 1.0.5
libXp: 1.0.3,1
libXmu: 1.1.2_3,1
Installed packages to be REINSTALLED:
gettext-runtime-0.19.4 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libiconv-1.14_8 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
gettext-tools-0.19.4 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
expat-2.1.0_2 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
gnupg1-1.4.19 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libxml2-2.9.2_2 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
freetype2-2.5.5 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
jpeg-8_6 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
t1lib-5.1.2_4,1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libXau-1.0.8_3 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libxcb-1.11_1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libXdmcp-1.1.2 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
xcb-util-0.4.0_1,1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
xcb-util-renderutil-0.3.9_1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libpthread-stubs-0.3_6 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libX11-1.6.2_3,1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libXt-1.1.4_3,1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libSM-1.2.2_3,1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libICE-1.0.9_1,1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libXpm-3.5.11_3 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libXext-1.3.3_1,1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
subversion-1.8.13 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
serf-1.3.8 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
gdbm-1.11_2 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
db5-5.3.28_2 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
postgresql84-client-8.4.22_1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
postgresql84-server-8.4.22_2 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
oniguruma4-4.7.1_1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
unbound-1.5.3_1 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
bash-4.3.33 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
libidn-1.29 (ABI changed: 'freebsd:8:x86:32' -> 'freebsd:9:x86:32')
The operation will free 83 MiB.
45 MiB to be downloaded.
Proceed with this action? [y/N]:
なるほど、FreeBSD 8.4 RELEASE のままのものが相当あるわけね。非常事態なのでしょうがない。思い切って [y]
なんとかインストールできたみたいなので再度
> /usr/ports/www/apache22
> make clean
> make
> make install
うむ、これは相当時間がかかるなぁ。100% で CPU が動いてますな。並行して他のアプリケーションもインストールしたいが、こういうときあせるとろくなことがないので我慢、我慢。
なんか…その…、SSL エンジン用のファイルを作成しているらしい…。
> /usr/local/etc/rc.d/apache22 configtest
Performing sanity check on apache22 configuration:
httpd: Syntax error on line 109 of /usr/local/etc/apache22/httpd.conf: Cannot load /usr/local/libexec/apache22/mod_dav_svn.so into server: Cannot open "/usr/local/libexec/apache22/mod_dav_svn.so"
んで
/usr/ports/www/mod_dav_svn
make clean
make
make install
apache が動くようになったかと思えば、php が動かない。
/usr/ports/lang/php5
/usr/ports/lang/php5-extensions
/usr/ports/www/mod_php5
をいれたり
/usr/ports/editors/vim
/usr/ports/mail/spamassassin
をいれたり、もう整理できなくらいいろいろなことがあって…。
どうしてもはいらないようなものは pkg でインストールしたりして…。上の結論に達するのです。