問題点

パッケージマネージャーを使用して AEM インスタンス間でユーザーとグループを移行すると、次のエラーが発生します。

26.01.2017 16:03:20.024 *ERROR* [qtp2078058939-7783] org.apache.jackrabbit.vault.fs.io.Importer Error while committing : javax.jcr.nodetype.ConstraintViolationException: OakConstraint0027: The admin user cannot be removed.
javax.jcr.nodetype.ConstraintViolationException: OakConstraint0027: The admin user cannot be removed.
Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: OakConstraint0027: The admin user cannot be removed

環境

CQ5.x、AEM6.x

解決策

ユーザーとグループをパッケージ化するときは、管理者ユーザーと匿名ユーザーを含む事前定義済みユーザーをパッケージ化しないようにしてください。  また、パッケージ結合フィルターモードを使用する必要があります。

  1. (古いシステム上で)CRXDE Lite アプリ /crx/de/index.jsp にアクセスし、管理者ユーザーとしてログインします。

  2. ツール/クエリに移動します。

  3. 下部の「クエリ」ボックスに次のクエリを入力して、管理者ユーザーを検索します。

    /jcr:root/home/users//element(*,rep:User)[@rep:principalName="admin"]

  4. 実行」をクリックし、結果の管理者ユーザーノードのパスをテキストファイルにコピーします。

  5. 手順 3 のクエリを繰り返し実行して、匿名ユーザーを検索します。

    /jcr:root/home/users//element(*,rep:User)[@rep:principalName="anonymous"]

  6. 実行」をクリックし、結果の匿名ユーザーノードのパスをテキストファイルにコピーします(この段階で、「admin」と「anonymous」用の 2 つのパスが取得されています)。
    例:
    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv – パッケージを作成するシステムの管理者ユーザー
    /home/users/K/Kj1406Qo9IDODc_nk5Ib – パッケージを作成するシステムの匿名ユーザー

  7. AEM パッケージマネージャー http://host:port/crx/packmgr/index.jsp に移動し、管理者としてログインします。

  8.  パッケージ「users」を作成します。

  9. (/home/users フィルターに対する)次の除外ルールを持つフィルターを /home/users のパッケージ設定に追加します。

    exclude /home/users/.*/.tokens
    exclude /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
    exclude /home/users/K/Kj1406Qo9IDODc_nk5Ib
    exclude /home/users/a/admin
    exclude /home/users/a/anonymous
    exclude /home/users/system
    exclude /home/users/geometrixx
    exclude /home/users/media
    exclude /home/users/projects
    exclude /home/users/mac

  10. パッケージをビルドします。

  11. パッケージをダウンロードします.

  12. コンピューター上にパッケージの zip ファイルを解凍します。

  13. テキストエディターで META-INF/vault/filter.xml ファイルを開きます。

  14. タグに mode="merge" を追加します。次に例を示します。

       
       
       
       
       
       
       
       
       
     

    <?xml version="1.0" encoding="UTF-8"?>
    <workspaceFilter version="1.0">
      <filter root="/home/users" mode="merge">
        <exclude pattern="/home/users/.*/.tokens"/>
        <exclude pattern="/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv"/>
        <exclude pattern="/home/users/K/Kj1406Qo9IDODc_nk5Ib"/>
        <exclude pattern="/home/users/a/admin"/>
        <exclude pattern="/home/users/a/anonymous"/>
        <exclude pattern="/home/users/system"/>
        <exclude pattern="/home/users/geometrixx"/>
        <exclude pattern="/home/users/media"/>
        <exclude pattern="/home/users/projects"/>
        <exclude pattern="/home/users/mac"/>
      </filter>
    </workspaceFilter>
  15.  変更内容が含まれるように、変更済みのパッケージ内容を再圧縮します。

  16. /home/groups フィルタールールを含む「groups」パッケージを作成します。

  17. groups パッケージに対して手順 10 ~ 15 を繰り返します。

  18. (アップグレードのみ):新しいバージョンの AEM に移行する場合は、(nosamplecontent を使用して)新しいローカル AEM インスタンスをインストールし、そこに users パッケージと groups パッケージをインストールします。  その後、そのインスタンスでインプレースアップグレードを実行します。アップグレード後、もう一度 users と groups を再パッケージ化し、パッケージの新しいバージョンをダウンロードします。

  19. 新しいシステムに users パッケージをインストールします。

  20. 新しいシステムに groups パッケージをインストールします。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー