{"record":{"id":"189ac3e245de9ac2","repo":"theonedev/onedev","slug":"package-management-not-enabled-for-project-proj-189ac3","errorCode":null,"errorMessage":"Package management not enabled for project '${project.path}'","messagePattern":"Package management not enabled for project '(.+?)'","errorType":"http","errorClass":"ClientException","httpStatus":406,"severity":"error","filePath":"server-plugin/server-plugin-pack-gem/src/main/java/io/onedev/server/plugin/pack/gem/GemPackHandler.java","lineNumber":493,"sourceCode":"\t\t\t\treturn pack;\n\t\t\tdashIndex = nameAndVersion.indexOf('-', dashIndex + 1);\n\t\t}\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic String getApiKey(HttpServletRequest request) {\n\t\tvar authzHeader = request.getHeader(HttpHeaders.AUTHORIZATION);\n\t\tif (authzHeader != null&& authzHeader.toLowerCase().startsWith(\"bearer \"))\n\t\t\treturn StringUtils.substringAfter(authzHeader, \" \");\n\t\telse\n\t\t\treturn null;\n\t}\n\t\n\tprivate Project checkProject(Long projectId, boolean needsToWrite) {\n\t\tvar project = projectService.load(projectId);\n\t\tif (!project.isPackManagement()) {\n\t\t\tthrow new ClientException(SC_NOT_ACCEPTABLE, \"Package management not enabled for project '\" + project.getPath() + \"'\");\n\t\t} else if (needsToWrite && !SecurityUtils.canWritePack(project)) {\n\t\t\tthrow new UnauthorizedException(\"No package write permission for project: \" + project.getPath());\n\t\t} else if (!needsToWrite && !SecurityUtils.canReadPack(project)) {\n\t\t\tthrow new UnauthorizedException(\"No package read permission for project: \" + project.getPath());\n\t\t}\n\t\treturn project;\n\t}\n\n\tprivate UserMarshal getGemVersion(String version) {\n\t\treturn new UserMarshal(\"Gem::Version\", newArrayList(version));\n\t}\n\t\n\tprivate UserMarshal getGemRequirement(Map<String, UserMarshal> requiredVersions) {\n\t\tvar requirements = new ArrayList<>();\n\t\tfor (var entry: requiredVersions.entrySet()) \n\t\t\trequirements.add(newArrayList(entry.getKey(), entry.getValue()));\n\t\tvar value = new ArrayList<>();\n\t\tvalue.add(requirements);","sourceCodeStart":475,"sourceCodeEnd":511,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-plugin/server-plugin-pack-gem/src/main/java/io/onedev/server/plugin/pack/gem/GemPackHandler.java#L475-L511","documentation":"checkProject throws ClientException with HTTP 406 (Not Acceptable) when the target project has the Package Management feature disabled. Every gem pack API request first resolves the project and checks project.isPackManagement(); if false, the request is rejected before any permission checks.","triggerScenarios":"Any GemPackHandler.handle request (publish, download, list) whose projectId references a project where Project -> Package Management toggle is off.","commonSituations":"Client (gem/publish or dependency fetch) pointed at a project URL in a repo where the admin never enabled package management; project created before the feature existed; admin disabled the feature after packages were published elsewhere.","solutions":["Enable package management: Project -> Package Management -> enable, then retry the request.","Confirm the projectId/URL used by the gem client points to the intended OneDev project.","If using the API directly, pass the correct project id of a project with pack management enabled."],"exampleFix":"// OneDev project settings (server side admin action)\n// Project -> General -> enable 'Package Management'\n# then\ngem push --host https://onedev.example.com/~project/gem mygem-1.0.0.gem","handlingStrategy":"validation","validationCode":"// before pushing/fetching, confirm the project has pack management enabled\n// in OneDev UI: Project -> Package Management must be enabled\n// API check: GET /~api/projects/<id> and inspect packManagement === true","typeGuard":null,"tryCatchPattern":"try {\n    pushGem(host, projectId, file);\n} catch (ClientException e) {\n    if (e.getStatusCode() == 406) throw new IllegalStateException(\"Enable Package Management on project \" + projectId, e);\n    throw e;\n}","preventionTips":["Enable Package Management when creating any project that will host gems.","Encode the enable-step into project provisioning/infrastructure-as-code templates.","Keep publish scripts pointed at documented project ids."],"tags":["package-management","project-config","http-406"],"backgroundTag":"feature-not-enabled","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}