Plone

学内の某サイトのCMSにPloneを使ってますが,Plone 4.2からPlone 5.0にコンテンツを更新するのに随分苦労しました。

Plone 4.2 から 5.0へのアップグレード手順

問題点:

  1. Collageが廃止になった。
  2. FacultyStaff が謎のエラーをだす。(もともと少しバギーだった)
  3. Plone 4.x で多言語対応に使っていた LinguaPlone はPlone 5 では plone.app.multilingual に変更になっている。しかし,そのコンテンツ変換でエラーが出る。LinguaPloneを uninstall をしてもゴミが残るらしく,それで後々困る。
  4. Quitagroup関連のアドオン(subskins等)の残骸がコンテンツに残っていて,アップグレードの邪魔をする。

対策

  1. Collageを含むページは全部消す。(Collageのページが残っていると,Plone 5用にコンテンツ移行をする際にエラーで苦しむ)
  2. FacultyStaffのページをそのままPlone5に移行するのは諦めて完全に消す。アップグレード後に手作業でつくり直す。
  3. 英語ページもばっさり消して,アップグレード後に手作業でつくり直す(もともとコンテンツ少なかったし)。対応する英文ページへのリンクがある日本語ページも,そのリンク情報がPlone 5にしたときに悪さするので,リンク情報も消す。
  4. subskinsにはお世話になったが,関連の設定は片っ端消す。
  5. いろいろなアドオンの残骸を少しでも消せるよう,各コンテンツはZMI上でzexpにしてexport/importする

アップグレード手順

多分,かなり回り道をしましたが,まとめるとこんなかんじでOKなはず。 無駄な手順も混じっているかもしれませんがあしからず。

Plone 4.2 から 4.3へ

Plone 4.3上でデータのClean up

4.3 => 5.0.7

Plone5.0に移行したコンテンツのDexterity対応

Plone5用にコンテンツ更新がすんだら,Dexterityの形式に変換するか聞かれる。 幾つかのフォルダでエラーが出てとまった。

Ploneのdebug機能で悪さをするコンテンツの洗い出しも可能。 記憶があいまいだが,多分以下の方法だったと思う。

$ sudo bin/instance debug

このあと,以下のコマンドを実行。

from Products.CMFCore.utils import getToolByName
site = app[‘Plone’]
zcatalog = getToolByName(site, 'portal_catalog')
cnt=0
brains = zcatalog.unrestrictedSearchResults()
for brain in brains:
  obj = brain._unrestrictedGetObject()
  cnt +=1

問題の有るオブジェクトがあったら,エラーメッセージを確認して以下を実行すると,そのオブジェクトのパスがわかる。

brains[cnt].getPath()

関連情報URL

トラブル集

若干のトラブル対応集

[トラブル] Step languagetool has an invalid import handler

  1. 空のploneをインストールして,ZMIで export portal_languages.zexp
  2. 元のploneで,portal_languagesを消去して,上記zexpを読み込む

情報源

Thank you, that was the tip I needed. No 3rd party products are installed now, but perhaps I had tried out something years ago and some crud was left behind? In the ZMI, I created a new dummy Plone site, exported portal_languages to local disk, went back to my main Plone site, deleted portal_languages there, imported the file from disk, and THEN was able to continue with my Plone 4 -> Plone 5 migration and run the import tool successfully. – Jeff Shafer Oct 10 '15 at 16:14 

[トラブル] buildout-cache以下の何かにpermission deniedと表示される

以下を実行する。

$ chmod -R g+r <Plone directory>/buildout-cache
$ chmod 777 <Plone directory>/zinstance

[トラブル] AttributeError: 'NoneType' object has no attribute 'items' 

コンテンツのアップグレード時に出るエラー。

対策: http://plone.293351.n2.nabble.com/migration-from-plone-4-0-10-to-plone-4-1-3-fails-td7055584.html

[トラブル] zexpのimportがうまくできない

Zope Error
Zope has encountered an error while publishing this resource.

Error Type: AttributeError
Error Value: reference_catalog

ZMI上で,portal_catalog, referene_catalog, uid_catalogの更新をする(上記アップグレード手順参照)と,なんとかなることが多い。

参考: reference_catalog erro

[トラブル] POSKeyError: ‘No blob file’ content in Plone

Plone 4用のコンテンツを新しいサイトに動かしたときにこのエラーがでることがある。blobstorageの移動で抜け落ちたファイルがあるのが原因。cp -rは使わないこと。tarで固めて持っていくのが一般的だが,下記サイトによるとSolarisのtarだと問題があるらしい。

参考:Fixing POSKeyError: ‘No blob file’ content in Plone