先にphpのインストールを行いましたが、phpは、セキュリティホールの見つかりやすいので、アップデートが必要な場合がよくあります。
今回は、phpのバージョンアップを行ってみましょう。
では、早速、バージョンアップをしてみましょう。
- 目次
- 履歴
2010年7月17日 初版
FreeBSDでportsを更新する で解説しているように、portupgrade を使えば、簡単にアップグレードできます。
以下の例で php52 をアップグレードしたいなら、以下のようにやればOKです。
また、packages を使ってアップグレードしたいなら、以下のようにします。
以下の例で php52 をアップグレードしたいなら、以下のようにやればOKです。
|
|
phpのバージョンを確認する
まずは、現在のバージョンが何で、どのバージョンへアップデートしたいかを選択しなければなりません。
|
現在(2012.2)では、5.2.17まで公開されていますから、5.2系の最新バージョンへ更新してみましょう。
- 最新のportsに更新する
$ portsnap fetch update
更新方法の詳細は、FreeBSDでportsを更新する を参照してください。
- 最新portsとのバージョンの比較する
php52の依存関係を確認しておきます。
依存関係は、pkg_info でも依存関係を出力できますが、pkg_tree が一番わかりやすいです。
$ pkg_tree -v php52 php52-5.2.11 |\__ pkg-config-0.25_1 |\__ libiconv-1.13.1_1 \__ libxml2-2.7.8_1 |\__ pkg-config-0.25_1 \__ libiconv-1.13.1_1
もしpkg_tree インストールされていないようなら、pkg_add -r pkg_tree でインストールすると良いでしょう。
最新portsとの既にインストール済のphpのバージョンの比較を行います。
これは、pkg_versionで簡単に出力してくれます。$ pkg_version -v ... php52-5.2.11 < needs updating (port has 5.2.17_7) ...
ここで確認できたことは、portsには、最新バージョン 5.2.17_7 の環境がある・・ということです。
また、先に出力した依存関係の全パッケージについても最新バージョンが存在するか確認します。
上記のようにup-to-date with port と出力されている場合は、更新パッケージがないので、アップデートの必要はありません。$ pkg_version -v ... libiconv-1.13.1_1 = up-to-date with port libxml2-2.7.8_1 = up-to-date with port pkg-config-0.25_1 = up-to-date with port ...
更新するパッケージをメモしておきましょう。
- 更新するパッケージを削除する。
先に確認したphp52の依存関係の上位から順番に削除していきます。
例えば、ここで更新すべきパッケージが依存する全てのパッケージだったとします。
つまり、以下のパッケージになります。
- php52
- libiconv
- libxml2
- pkg-config
この依存関係は、上記の出力から以下のようになります。
php52 +- pkg-config -----+ +- libiconv ---+ | = 同じ +- libxml2 | | +- pkg-config -----+ +- libiconv ---+ = 同じ
全てのパッケージを削除するには、以下のように依存関係の上位から順に削除していきます。
- php52
- libxml2
- libiconv
- pkg-config
複数のパッケージからの依存関係がある場合、うまく削除できないことがあります。 その場合でも、一つ一つ先の依存関係を確認しながら削除してきます。
下位依存パッケージから上位依存パッケージを一気に削除する -r という便利なフラグがあります。$ pkg_delete libiconv-1.13.1_1 pkg_delete: package 'libiconv-1.13.1_1' is required by these other packages and may not be deinstalled: libxml2-2.7.8_1 php52-5.2.17
とすると、一気に上位依存パッケージであるphp52までを削除してくれます。$ pkg_delete -r libiconv-1.13.1_1
- libiconv-1.13.1_1
- libxml2-2.7.8_1
- php52-5.2.17
削除する前に、以下のように確認しておくと間違いないでしょう。上記と同じことを pkg_remove を使うと、きれいに依存関係のあるパッケージを全て削除し、削除したパッケージを表示してくれます。$ pkg_delete -nr libiconv-1.13.1_1 | grep pkg_delete pkg_delete: package 'libxml2-2.7.8_1' is required by these other packages and may not be deinstalled: php52-5.2.17 pkg_delete: package 'libiconv-1.13.1_1' is required by these other packages and may not be deinstalled: libxml2-2.7.8_1 php52-5.2.17 pkg_delete: 2 package deletion(s) failed
$ pkg_remove libiconv remove: php52-5.2.17 remove: libxml2-2.7.8_1 remove: libiconv-1.13.1_1
- php52を再インストールする。
先の手順で、パッケージを削除したら、次は、インストールするだけです。
$ cd /usr/ports/lang/php52 $ make install clean ...
FreeBSD 8.xでは、最新のports構成では、
- php4 には、4系
- php5 には、5.3系
- php52 には、5.2系
ここでは、5.2系の最新をインストールしたいのでは、/usr/ports/lang/php52 を利用します。
php52-extensions もインストールするなら、以下のようにします。
$ cd /usr/ports/lang/php52-extensions $ make install clean ...
すべての作業を終えたら、phpのバージョンを確認してみましょう。
$ php -v PHP 5.2.17 with Suhosin-Patch 0.9.7 (cli) (built: Jan 14 2011 18:08:58) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
PHP Warning: Module ‘xmlwriter’ already loaded in Unknown on line 0 のようなメッセージが表示されるようなら、 /usr/local/etc/php/extensions.iniが、二重に設定されているかもしれません。
でダブっている情報を削除しましょう。$ vi /usr/local/etc/php/extensions.ini
依存関係にあるパッケージを全て削除した方が良いかここから以降は、phpのインストールとかわりません。
ただ、make deinstallで以前のバージョンをアンインストールしてから、作業を行いましょう。
ただ、make deinstallで以前のバージョンをアンインストールしてから、作業を行いましょう。
ここでは、portupgrade を使わない方法でのアップグレードについて解説してみました。
また、できるだけデフォルトでインストールされているツールのみで更新するようにしました。
結構、面倒ですね。
portupgradeだけでなく、便利なツールはいっぱいあります。
portupgradeの代わりに、pkg_replace を使うのも良いでしょう。さらに、ここでも紹介しているpkg_remove , pkg_tree や pkg_install , pkg_search なども便利です。
portupgradeにだけ頼っていると、何かうまくいかない場合の対応で躓くことも多いです。ここでの手順は、基本的な考え方なので、これを押さえておくと、別のツールを利用する上でも理解が深まると思います。
参考 : このサイト ( http://www.freebsd.org/cgi/cvsweb.cgi/ports/ )に最新のポート情報が表示されます。
ここで、パッケージ名なども確認できます。
また、できるだけデフォルトでインストールされているツールのみで更新するようにしました。
結構、面倒ですね。
portupgradeだけでなく、便利なツールはいっぱいあります。
portupgradeの代わりに、pkg_replace を使うのも良いでしょう。さらに、ここでも紹介しているpkg_remove , pkg_tree や pkg_install , pkg_search なども便利です。
portupgradeにだけ頼っていると、何かうまくいかない場合の対応で躓くことも多いです。ここでの手順は、基本的な考え方なので、これを押さえておくと、別のツールを利用する上でも理解が深まると思います。
参考 : このサイト ( http://www.freebsd.org/cgi/cvsweb.cgi/ports/ )に最新のポート情報が表示されます。
ここで、パッケージ名なども確認できます。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
関連記事 :
コメントを投稿 :