Invenio版本升级指南:v3.1到v3.4的无痛升级路线图 Invenio版本升级指南v3.1到v3.4的无痛升级路线图【免费下载链接】invenioInvenio digital library framework项目地址: https://gitcode.com/gh_mirrors/in/invenioInvenio 是一个开源的数字图书馆框架digital library framework被 CERN 的 Inspire 等知名科学文献平台用于构建大规模数字仓储。如果你的 Invenio 实例还停留在 v3.1 甚至更早版本本文提供一条从v3.1 平滑升级到 v3.4的无痛升级路线图每个小版本只需要修改Pipfile、运行几条标准命令、再执行数据库迁移全程无需从零搭建项目也不会丢失任何已有数据 Inspire 就是基于 Invenio 构建的经典应用下图展示了它的检索界面升级前的准备3 分钟确认你的版本升级前花几分钟确认现状可以避免 90% 的踩坑确认当前版本在项目目录运行pipenv run pip freeze | grep ^invenio记录版本号。备份数据库和索引升级 v3.1→v3.2 会执行 Alembic 数据库迁移涉及 Elasticsearch 的变更会重建索引先备份最稳妥。确认基础设施版本PostgreSQL / Elasticsearch / Celery 的版本必须与目标版本匹配详见下方每步说明。Invenio 采用模块化bundle架构升级本质上是更新Pipfile中的依赖并重建静态资源各模块职责如下第一步升级v3.1 → v3.2引入 Files 文件包v3.2 是路线图中的关键一步新增Files 文件包文件 REST API、预览器、IIIF 图像支持和Elasticsearch v7 支持。升级文档docs/releases/upgrading/upgrade-3_1-3_2.rst1. 修改Pipfile把 Invenio 版本锁定到 3.2.0并在extras中加入files包invenio { version 3.2.0, extras [base, auth, metadata, files, postgresql, elasticsearch7 ]}2. 安装依赖并重建资源每一步升级通用的标准命令pipenv lock --dev pipenv sync --dev pipenv run pip install -e . pipenv run invenio collect -v pipenv run invenio webpack buildall3. 升级数据库运行invenio alembic upgrade执行最新的 Alembic 迁移配方。4. 处理 Elasticsearch推荐升级到 v7最简单的路径是安装 ES v7 后对全部记录执行invenio index reindex -t pid_type重建索引⚠️ 该命令会销毁并重写指定 pid 类型的索引请预留停机窗口。5. 为旧记录启用文件支持升级后新建的记录开箱即支持文件但旧记录没有绑定存储桶bucket需要为每条旧记录创建 bucket 并写入元数据。官方文档附带了一段迁移脚本片段可参考 若你从更早的 cookiecutter 实例升级并改过records/config.py记得同步更新records/ext.py中的配置键。第二步升级v3.2 → v3.3清理依赖 Marshmallow 3v3.3 支持Python 3.7、新增 SPA 所需的账户 REST API 和CSRF 防护同时引入协调器包统一管理第三方依赖。升级文档docs/releases/upgrading/upgrade-3_2-3_3.rst1. 修改Pipfileinvenio { version 3.3.0,3.4.0, extras [base, auth, metadata, files, postgresql, elasticsearch7 ]}2. 删除两条旧版依赖锁定v3.3 的协调器包会接管版本约束- lxml 3.5.0,4.2.6 marshmallow 3.0.0,4.0.0 - SQLAlchemy-Utils 0.33.1,0.363. 运行与第一步相同的 5 条安装/构建命令再执行invenio alembic upgrade完成数据库迁移。关于 Marshmallow 2 → 3这是 v3.2 起最需要规划的一项改动。Invenio 提供了兼容层允许你先升 Invenio、后改 Schema被弃用的方法会以警告提示给你留出过渡期。核心变化Schema().dump()/load()不再返回(data, errors)元组而是抛出ValidationError异常。完整对照说明见docs/releases/upgrading/upgrade-marshmallow.rst。第三步升级v3.3 → v3.4拥抱 Semantic UI 新界面v3.4 是三个版本中变化最大的一版Semantic UI 成为默认 UI 框架可多主题并存Bootstrap 3 模板进入弃用期、Records 模块获得 Dump/Load、类型字段、扩展机制等大幅改进。升级文档docs/releases/upgrading/upgrade-3_3-3_4.rst1. 修改Pipfileinvenio { version 3.4.0,3.5.0, extras [base, auth, metadata, files, postgresql, elasticsearch7 ]}2. 依赖调整加入lxml移除Babel、Flask-BabelEx等已并入pytest-invenio的测试依赖升级pytest-invenio 1.4.1,1.5.0和Sphinx 3,4。3. 配置主题在config.py中添加APP_THEME [bootstrap3]暂不迁移 UI 时保持原界面建议预留时间把模板迁移到 Semantic UIv3.5 可能不再提供新的 Bootstrap 3 模板。管理界面升级后的效果类似下图4. 使用 Celery 5.0.x 时注意命令行参数从celery worker -A invenio_app.celery变为celery -A invenio_app.celery worker需同步修改scripts/server和docker-compose.full.yml中的启动命令。5. 删除Pipfile.lock后运行./scripts/bootstrap重新生成再执行常规的资产构建和invenio alembic upgrade。升级后的验证与常见坑升级完成后建议按此清单逐项验证 ✅检查项方法服务正常启动访问/ping健康检查端点v3.4 起支持 HEAD/OPTIONS数据库迁移日志中无 Alembic 报错表结构符合预期检索正常搜索接口可返回结果索引前缀配置正确文件上传新建记录并上传文件旧记录已补建 bucket静态资源页面无 404Webpack 构建无报错3 个高频坑位忘记重建静态资源——只跑了pipenv sync就重启页面样式全乱务必执行invenio collect -v和invenio webpack buildallElasticsearch 版本不匹配——v3.2 起弃用 v2/v5v3.3 起彻底移除支持升级前确认elasticsearch7extras 与实际集群一致Marshmallow 3 的异常处理——原来读取.errors属性的代码会静默失败需改为捕获ValidationError。Invenio 的整套基础设施由 Docker Compose 编排数据库、Elasticsearch、Celery、Nginx 等升级过程中如遇容器问题可参考下图理解各服务间的连接关系升级路线图速查表版本跳转核心动作注意事项v3.1 → v3.2加files包、ES v7、Alembic 迁移旧记录需补建文件 bucket重建索引v3.2 → v3.3删除 lxml / SQLAlchemy-Utils 锁定规划 Marshmallow 2→3 过渡v3.3 → v3.4换 lxml、pytest-invenio 1.4配置APP_THEMECelery 5 命令变更规划 Semantic UI 迁移Invenio 官方维护策略保证每个小版本至少支持一年docs/releases/maintenance-policy.rst且刻意保持小版本间升级相当直接。跟着本文三步走你的数字图书馆即可安全抵达 v3.4享受 Semantic UI 新界面和全新 Records 能力 【免费下载链接】invenioInvenio digital library framework项目地址: https://gitcode.com/gh_mirrors/in/invenio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考