Story #9170
Updated by ggainey over 2 years ago
### History pulp_rpm assumes that RPM Repositories follow certain rules, including: * One NEVRA can appear only once in a repository * A given artifact-checksum can appear at most once in a repository * It is always desireable to have repositories published using the Packages/n/nevra.rpm format In actual real-worlkd practice, these rules are...more like a set of guidelines, really. As a result, there are real-world repositories that pulp_rpm cannot sync. ### Current Status Issues have been reported [1](https://pulp.plan.io/issues/8133) [2](https://pulp.plan.io/issues/7208) against a number of repositories [3](https://packages.grafana.com/oss/rpm) [4](http://repo.mysql.com/yum/mysql-tools-community/el/7/x86_64/ ) [5](http://ftp.cs.stanford.edu/centos/7/opstools/x86_64/ ) [6](https://updates.suse.com/SUSE/Backports/SLE-12-SP2_x86_64/standard/ ) [7](https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-8-x86_64/ ), a lot of investigation has gone into identifying potential architectural changes to address the problem [8](https://hackmd.io/02KBjCD3Q0WP7p4ALwzhJw?view#relative_path-problem ), and several workarounds [9](https://github.com/pulp/pulp_rpm/pull/2050 ) [10](https://github.com/pulp/pulpcore/pull/1513) have been implemented to allow users to have usable repositories even in the face of the problem (along with the low-level findings while researching possible workarounds [11](https://hackmd.io/@ggainey/rel_path_braindump) ### Project The workarounds are just that - special-case code that works around the architectural issue(s) in order to get users going again, while minimizing destabilizing impact (esp to pulpcore). We need to step back and reconsider the assumptions above, and provide architectural support for handling the exception-cases listed, making them first-class approaches rather than exception-code. ### References 1. https://pulp.plan.io/issues/8133 1. https://pulp.plan.io/issues/7208 1. https://packages.grafana.com/oss/rpm 1. http://repo.mysql.com/yum/mysql-tools-community/el/7/x86_64/ 1. http://ftp.cs.stanford.edu/centos/7/opstools/x86_64/ 1. https://updates.suse.com/SUSE/Backports/SLE-12-SP2_x86_64/standard/ 1. https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-8-x86_64/ 1. https://hackmd.io/02KBjCD3Q0WP7p4ALwzhJw?view#relative_path-problem 1. https://github.com/pulp/pulp_rpm/pull/2050 1. https://github.com/pulp/pulpcore/pull/1513 1. https://hackmd.io/@ggainey/rel_path_braindump