librepim / librepim-dev
LibrePIM - Community-Maintained Fork of Akeneo PIM Community Edition
Requires
- php: ^8.3
- ext-apcu: *
- ext-bcmath: *
- ext-curl: >=7.0
- ext-exif: *
- ext-fileinfo: *
- ext-gd: >=2.0
- ext-imagick: *
- ext-intl: *
- ext-mbstring: *
- ext-openssl: *
- ext-pcntl: *
- ext-pdo: *
- ext-xml: *
- ext-zip: *
- ass/xmlsecurity: 1.1.1
- aws/aws-sdk-php: 3.369.8
- doctrine/annotations: ^1.13.2
- doctrine/cache: ^1.12
- doctrine/collections: ^2.1.0
- doctrine/common: ^3.4.0
- doctrine/data-fixtures: ^1.6.0
- doctrine/dbal: ^3.5.0
- doctrine/doctrine-bundle: ^2.16
- doctrine/doctrine-fixtures-bundle: ^3.4.1
- doctrine/doctrine-migrations-bundle: ^3.2.2
- doctrine/event-manager: ^1.2.0
- doctrine/instantiator: ^1.5.0
- doctrine/migrations: ^3.5.0
- doctrine/orm: ^2.20
- doctrine/persistence: ^3.4
- dompdf/dompdf: 2.0.3
- elasticsearch/elasticsearch: ^8.19.0
- friendsofsymfony/jsrouting-bundle: ^3.2.1
- friendsofsymfony/rest-bundle: ^3.4.0
- gedmo/doctrine-extensions: ^3.11.0
- google/cloud-pubsub: ^1.51
- guzzlehttp/guzzle: ^7.5.0
- imagine/imagine: 1.3.3
- khaled.alshamaa/ar-php: ^6.2
- klapaudius/oauth2-php: ^1.8
- lcobucci/jwt: ^4.2
- league/flysystem: ^3.11.0
- liip/imagine-bundle: ^2.10.0
- maennchen/zipstream-php: ^2.4.0
- monolog/monolog: ^2.8.0
- ocramius/proxy-manager: ^2.13.0
- oneup/flysystem-bundle: ^4.5.0
- openspout/openspout: ^4.9.0
- opis/json-schema: ^2.3
- phpseclib/phpseclib: ^3.0
- psr/event-dispatcher: ^1.0.0
- ramsey/uuid: 4.7.1
- ramsey/uuid-doctrine: ^1.8
- symfony/acl-bundle: ^2.1.0
- symfony/asset: ^6.4.0
- symfony/cache: ^6.4.0
- symfony/config: ^6.4.0
- symfony/dependency-injection: ^5.4 || ^6.0
- symfony/doctrine-messenger: ^6.4.0
- symfony/dotenv: ^6.4.0
- symfony/event-dispatcher: ^6.4.0
- symfony/filesystem: ^6.4.0
- symfony/finder: ^6.4.0
- symfony/flex: ^2.3.0
- symfony/form: ^6.4.0
- symfony/http-foundation: 6.4.*
- symfony/http-kernel: ^6.4.0
- symfony/intl: ^6.4.0
- symfony/lock: ^6.4.0
- symfony/mailer: ^6.4.0
- symfony/messenger: ^6.4.0
- symfony/monolog-bundle: ^3.8.0
- symfony/options-resolver: ^6.4.0
- symfony/password-hasher: 6.4.*
- symfony/polyfill-apcu: ^1.23.0
- symfony/process: ^6.4.0
- symfony/property-access: ^6.4.0
- symfony/proxy-manager-bridge: ^6.4.0
- symfony/requirements-checker: ^2.0.0
- symfony/routing: ^6.4.0
- symfony/security-acl: ^3.1.1
- symfony/security-bundle: ^5.4 || ^6.0
- symfony/security-core: ^6.4.0
- symfony/security-csrf: ^6.4.0
- symfony/security-http: ^6.4.0
- symfony/templating: ^6.4.0
- symfony/translation: ^6.4.0
- symfony/twig-bundle: ^5.1 || ^6.4
- symfony/validator: ^6.4.0
- symfony/yaml: ^6.4.0
- twig/twig: ^3.3.3
- webmozart/assert: ^1.11.0
Requires (Dev)
- akeneo/php-coupling-detector: ^0.8.1
- behat/mink-selenium2-driver: ^1.5.0
- blackfire/php-sdk: ^1.25
- friends-of-behat/mink: ^1.9.0
- friends-of-behat/mink-browserkit-driver: ^1.5.0
- friends-of-behat/mink-extension: ^2.5.0
- friends-of-behat/symfony-extension: ^2.4.0
- friends-of-phpspec/phpspec-code-coverage: ^6.1.0
- friendsofphp/php-cs-fixer: ^3.13.0
- league/flysystem-aws-s3-v3: ^3.10.3
- league/flysystem-memory: ^3.10.3
- liuggio/fastest: ^1.10.0
- mcustiel/phiremock: 2.1.1
- phpspec/phpspec: ^7.1.0
- phpspec/prophecy: ^1.16.0
- phpstan/phpstan: ^1.9.3
- phpstan/phpstan-deprecation-rules: ^1.1.1
- phpstan/phpstan-symfony: ^1.2.5
- phpstan/phpstan-webmozart-assert: ^1.2.0
- phpunit/phpunit: ^9.5
- rector/rector: ^0.15.0
- sensiolabs/behat-page-object-extension: ^2.3.6
- squizlabs/php_codesniffer: 3.*
- symfony/debug-bundle: ^6.4.0
- symfony/web-profiler-bundle: ^6.4.0
- vimeo/psalm: ^5.1.0
Suggests
- akeneo/catalogs: In order to install one of the Akeneo catalogs
Conflicts
Replaces
- akeneo/batch: 0.6.0-dev
- akeneo/batch-bundle: 0.6.0-dev
- akeneo/measure-bundle: 0.6.0-dev
- akeneo/storage-utils: 0.6.0-dev
- akeneo/storage-utils-bundle: 0.6.0-dev
- oro/config-bundle: 1.0-dev
- oro/filter-bundle: 1.0-dev
- oro/form-bundle: 1.0-dev
- oro/navigation-bundle: 1.0-dev
- oro/security-bundle: 1.0-dev
- oro/translation-bundle: 1.0-dev
- oro/ui-bundle: 1.0.0-alpha
- oro/user-bundle: 1.0-dev
This package is auto-updated.
Last update: 2026-05-29 13:45:47 UTC
README
β οΈ This is a community fork, not an official Akeneo project. Librepim is maintained independently to provide long-term support for Akeneo PIM Community Edition users. For details, see CONTRIBUTORS.md.
Librepim is an open-source, community-maintained fork of the Akeneo PIM Community Edition. Its goal is to provide Long-Term Support (LTS), continued improvements, security fixes, and compatibility updates for teams that rely on the community version of Akeneo for product information management.
Librepim is built on the foundation of Akeneo CE, extending its life through community contributions and modern package updates.
π Key Highlights
π Long-Term Support (LTS)
Continuous improvements, bug fixes, dependency upgrades, and security patches.
π§ Compatible Migration
Users of Akeneo PIM CE can migrate to Librepim with minimal changes.
π€ Community-Driven
Contributions are welcomeβfrom fixes and feature enhancements to documentation improvements.
β‘ Stability & Performance
Focused on maintaining a stable and secure PIM experience for real-world workloads.
π¦ Installation
Librepim follows the same installation workflow as the Akeneo PIM Community Edition, with only a few configuration-level differences.
Refer to the official installation steps here:
π Installation Guide (Akeneo CE compatible) https://docs.akeneo.com/master/install_pim/index.html
To build the development Docker image:
docker build --target dev -t webkul/librepim-php-dev:master .
π Search Engine (Elasticsearch or OpenSearch)
LibrePIM runs on Elasticsearch 8 by default and also supports
OpenSearch 2.x as an alternative. The choice is made by the
SEARCH_ENGINE environment variable; the rest of the codebase is
engine-agnostic.
Selecting the engine
In your environment configuration:
# Default. Native Elasticsearch 8 client.
SEARCH_ENGINE=elasticsearch
APP_INDEX_HOSTS=<your-elasticsearch-url>
# Or opt into OpenSearch.
# SEARCH_ENGINE=opensearch
# APP_INDEX_HOSTS=<your-opensearch-url>
SEARCH_ENGINE and APP_INDEX_HOSTS must point at the same engine. If
SEARCH_ENGINE is unset or empty, Elasticsearch is used.
After switching engines, clear the Symfony cache and re-index:
rm -rf var/cache/*
php bin/console akeneo:elasticsearch:reset-indexes --env=prod
php bin/console pim:product:index --all --env=prod
php bin/console pim:product-model:index --all --env=prod
How it works
When SEARCH_ENGINE=opensearch, the akeneo_elasticsearch.client_builder
service returns an OpenSearchClientBuilderAdapter instead of the native
Elastic\Elasticsearch\ClientBuilder. The adapter wraps the real
OpenSearch\Client so calls like ->index(), ->search(), and
->indices()->putMapping() route to OpenSearch, and translates
OpenSearch\Common\Exceptions\OpenSearchException (and its subclasses)
into Elastic\Elasticsearch\Exception\ClientResponseException or
ServerResponseException, preserving the HTTP status on the attached
PSR-7 response. Existing catch (ElasticsearchException $e) blocks
across LibrePIM keep working unchanged.
The adapter layer lives at
src/Akeneo/Tool/Bundle/ElasticsearchBundle/SearchEngine/ and is the
only place that references both vendor SDKs. The Elasticsearch path is
unchanged β when SEARCH_ENGINE is elasticsearch (or unset),
SearchEngineClientBuilderFactory returns the native
Elastic\Elasticsearch\ClientBuilder and the rest of the codebase runs
against Elasticsearch exactly as before.
Spec coverage
The OSβES exception translator is unit-tested at
src/Akeneo/Tool/Bundle/ElasticsearchBundle/spec/SearchEngine/SearchEngineExceptionTranslatorSpec.php.
vendor/bin/phpspec run src/Akeneo/Tool/Bundle/ElasticsearchBundle/spec
Pinning notes
opensearch-project/opensearch-php is pinned at ~2.3.1. Newer 2.x
releases require psr/http-message ^2.0, which conflicts with other
LibrePIM dependencies.
Common pitfalls
| Symptom | Cause | Fix |
|---|---|---|
ProductCheckException: server is not Elasticsearch |
The Elasticsearch client is talking to an OpenSearch server | Set SEARCH_ENGINE=opensearch, then rm -rf var/cache/* |
alias missing (404) on a fresh OpenSearch instance |
First-run reset before any indexes exist | Re-run akeneo:elasticsearch:reset-indexes β it is idempotent and will create the missing aliases |
| UI shows zero products after switching | The search index for the new engine is empty (MySQL data is shared, the search index is per-engine) | Run pim:product:index --all and pim:product-model:index --all |
cache:clear fails |
The compiled cache references stale class names | rm -rf var/cache/* instead of cache:clear |
composer install drops opensearch-php |
The lock file may not track it | composer require opensearch-project/opensearch-php:~2.3.1 |
π Upgrading
Librepim follows Akeneo CEβs upgrade flow, making transitions simple and predictable.
π Upgrade Guide (Akeneo process compatible) https://docs.akeneo.com/master/migrate_pim/index.html
π§ͺ Testing
Testing workflows are the same as Akeneo CE. You can follow their testing documentation to run unit, integration, and end-to-end tests.
π Testing Guide https://github.com/akeneo/pim-community-dev/blob/master/internal_doc/tests/running_the_tests.md
π€ Contributing to Librepim
We encourage the community to participate and help improve the project.
Please read our Contributing Guidelines before submitting a pull request:
π CONTRIBUTING.md
Contributions may include:
- Bug fixes
- Documentation improvements
- Dependency updates
- Feature enhancements
- Security improvements
A respectful and collaborative environment is expected from everyone involved.
π License
Librepim is distributed under the Open Software License (OSL 3.0), the same license used by Akeneo PIM CE.
π LICENSE.txt
π― Why Librepim?
- Continued Support: Ongoing maintenance for users of Akeneo CE
- Security First: Regular patches and dependency updates
- Predictable Migration: Drop-in replacement for Akeneo CE
- Community Ownership: Built and improved by open-source contributors
- Open & Transparent: 100% free and community-governed
βΉοΈ About the Project
Librepim aims to ensure a long-term, stable future for the Akeneo Community Edition ecosystem by:
- Providing LTS
- Ensuring modern PHP, Symfony, and package compatibility
- Maintaining open-source availability for businesses and developers
- Encouraging community collaboration and contributions
Whether you're using Akeneo CE for small catalogs or managing large-scale product data, Librepim helps you continue with confidence.
π Useful Links
-
Akeneo PIM Documentation https://docs.akeneo.com/
-
Librepim Repository https://github.com/libre-pim/librepim-dev
-
Contributing Guide ./CONTRIBUTING.md
-
Issue Tracker https://github.com/libre-pim/librepim-dev/issues
π¬ Final Note
Librepim is built for the community and maintained by the community. If you're looking for a stable, secure, and continuously maintained version of Akeneo CE, Librepim is the ideal choice.
Join us, contribute, and help keep the open-source PIM ecosystem strong.