在包含用户和组的 CQ 中安装包时出错

Error while installing package in CQ which contains users and groups

我正在尝试在包含用户和组的 CQ 实例上安装一个包。为 /home 创建包的路径不包括 admin 用户。

请注意,一些用户已经可以在目标 CQ 实例上使用,这些实例可能也可以在包中使用。

遇到以下异常,任意 help/views:

com.day.jcr.vault.packaging.PackageException: javax.jcr.nodetype.ConstraintViolationException: /home/users/c/chris/.tokens/2014-10-16T12.45.01.614+02.00: mandatory property {internal}token.key does not exist
        at com.day.jcr.vault.packaging.impl.ZipVaultPackage.extract(ZipVaultPackage.java:365)
        at com.day.jcr.vault.packaging.impl.JcrPackageImpl.extract(JcrPackageImpl.java:368)
        at com.day.jcr.vault.packaging.impl.JcrPackageImpl.install(JcrPackageImpl.java:336)
        at com.day.crx.packaging.impl.J2EEPackageManager.consoleInstall(J2EEPackageManager.java:327)
        at com.day.crx.packaging.impl.J2EEPackageManager.doPost(J2EEPackageManager.java:173)
        at com.day.crx.packaging.impl.PackageManagerServlet.doPost(PackageManagerServlet.java:144)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96)
        at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79)
        at org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42)
        at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49)
        at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
        at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:127)
        at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
        at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
        at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
        at org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:55)
        at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
        at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
        at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
        at org.apache.sling.security.impl.ReferrerFilter.doFilter(ReferrerFilter.java:263)
        at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
        at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
        at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
        at com.adobe.granite.license.impl.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:179)
        at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
        at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
        at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
        at org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:75)
        at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
        at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
        at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
        at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
        at org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48)
        at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39)
        at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at com.day.j2ee.servletengine.ServletRuntimeEnvironment.service(ServletRuntimeEnvironment.java:250)
        at com.day.j2ee.servletengine.RequestDispatcherImpl.doFilter(RequestDispatcherImpl.java:321)
        at com.day.j2ee.servletengine.RequestDispatcherImpl.service(RequestDispatcherImpl.java:340)
        at com.day.j2ee.servletengine.RequestDispatcherImpl.service(RequestDispatcherImpl.java:383)
        at com.day.j2ee.servletengine.ServletHandlerImpl.process(ServletHandlerImpl.java:335)
        at com.day.j2ee.servletengine.HttpListener$Worker.run(HttpListener.java:644)
        at java.lang.Thread.run(Thread.java:662)

我认为在通过内容包复制用户和组时应该排除 .tokens 节点。在创建包时添加像 <exclude pattern="/home/users/.*/.tokens"/> 这样的排除模式应该会有所帮助。

我解决这个问题的方法是在本地下载包。在 .content.xml 中找到包含现有令牌的包中的所有这些用户并删除它们。

在使用 crx/packmgr 创建包时使用 /home/users/username/\.tokens 作为模式。