-
-
Notifications
You must be signed in to change notification settings - Fork 377
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
-filter-with-deps across mirrors #357
Comments
I understand this issue, but I'm not sure how we could implement it... |
I haven't looked at aptly's code, so I don't know if this is feasbile, but allow me to expand on the "meta-mirror" idea. I suppose it might be better to call it a "mirror group". A mirror group would function the same way as a regular mirror does now, except that when you create it, you can specify multiple URL + distribution + component(s) tuples. When the mirror group is updated, it pulls package lists from all of the configured locations and merges them together. The merge process is very dumb; it just appends the package lists together so that the resulting list contains all versions of all packages from all the locations. Then any filters are applied, with dependencies being followed (if desired). This could result in multiple versions of the same package being present after the filter, which is still fine as I believe that is legal for an Apt repo anyway. Finally, the filtered packages are downloaded from the appropriate mirrors. At that point, the mirror group can be snapshotted and merged with other snapshots just like a normal mirror. Duplicate versions could be eliminated at this point using the existing options. To make the above easier to follow, suppose we have the following:
In that case, when the mirror group is updated it would:
After this point, everything is the same as it is now. We snapshot the mirror group, then merge it with some other snapshots, perhaps using the default behavior or -latest to resolve duplicate package versions. On the downside, this results in a snapshot that may contain unneeded packages, but on the upside, it will definitely pass verification. The unneeded packages problem could be solved using a smarter package list merge process, using the same options as snapshot merge already has (i.e. first repo wins, latest version wins, or include all versions). |
This would be nice to have |
Have you tried -latest=true option to snapshot merging? I was running into an issue with differing versions of libc when merging main and security and using this option fixed it. It would apply to all packages in the snapshot which could be undesirable. |
Currently dealing with this. Another concrete example: bwm-ng is on xenial universe, but its dependency libstatgrab10 is on xenial (main). If I build mirrors of both universe and main with In my situation, I'm mirroring a filter (list of direct dependencies from ansible plays) of the ubuntu xenial repos and putting their snapshots into a single published repo. My current work around is as previous suggested (manually modify the filter as I find unsat deps). You can take the union of the |
68 primary deps become 689 over 3 iterations. ugly example:
|
Just hit this issue. I am creating 2 mirrors (trusty-main and trusty-updates). While creating trusty-updates, I am filtering 'openjdk-7-jre' along with its dependencies. I can see 'Unresolved dependencies' errors while doing 'aptly mirror update trusty-updates' I believe it is actually happening since few of the dependencies are in trusty-main and there is no way trusty-updates mirror could resolve it. anyone able to find a workaround to this issue yet? |
Me too. I added my comment to #562 first #562 (comment) Quoting a possible idea:
|
I was trying to make a snapshot of selected Debian Jessie packages, getting the latest version of each by mirroring the main Jessie repo plus updates, backports, and security. (Similar to the "mirroring with snapshots" tutorial.)
This exposes a problem when mirroring using -filter-with-deps, snapshotting, and then merging. Wireshark 1.x is in the main Jessie repo, but backports contains Wireshark 2.x. Both repos contain the wireshark-qt package, but the 2.x version has dependencies that the 1.x version does not. Said dependencies are in the main repo, but not the backports repo. So when I merged the snapshots together, 'aptly snapshot verify' failed because the new dependencies aren't in any of the source snapshots that were merged together. Attempting to install Wireshark from the resulting snapshot fails for the same reason.
I don't see any way to -filter-with-deps across multiple mirrors, so I can only see two workarounds:
It would be nice if aptly handled this situation better. Maybe users could define a "meta-mirror" that takes multiple URLs and presents a combined package list, which could then be filtered as a whole. This behavior would be more apt-like, since apt will search all the sources it has available when trying to locate a package.
The text was updated successfully, but these errors were encountered: