-
Notifications
You must be signed in to change notification settings - Fork 160
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
.real_... directory in repo packagesite paths #293
Comments
Did you manually run For mirroring the repo you should mirror the PACKAGES/.latest/ directory rather than PACKAGES/ since it contains all of the .real stuff. Ignoring dotdirs would do the trick too as long as you are following symlinks. This had been fixed in freebsd/pkg@97a4693 but perhaps it is broken now. |
I'm wrong about my referenced commit but I'll look into it more. |
I was running an older version of pkg on the system running poudriere, so perhaps that has something to do with it? I don't believe I ever ran "pkg repo" at all, especially not in the poudriere PACKAGES directory. Should the .real_... directory ever get included in the packagesite YAML? I have an nginx server hosting the repo. The conf is similar to the example provided with poudriere.
As far as I can tell everything is symlinked to .real_1428609296. My mirroring happens over HTTP. Thanks. |
Did you accidentally run an older poudriere on the same repo that 3.1 created? No the .real dirs should not be in the packagesite.yaml but there is nothing preventing it currently. I'm working on a patch for pkg to prevent it. |
No I've been running 3.1.1 for quite some time. I was running poudriere 3.1.1 and pkg-1.4.6 when the problem occurred. I have since upgraded to poudriere-3.1.3 and pkg-1.4.12. Thanks for clearing up the confusion with .real dirs. |
I can't explain how you ended up with .real dirs in your packagesite. |
This fixes running 'pkg repo' in a Poudriere-made directory that would result in several different versions of packages being added to the packagesite. Each of them would refer to some .real_* directory. Poudriere uses these directories to manage multiple previous builds and to have a "build in progress" directory that does not conflict with currently served packages. See also freebsd/poudriere#293 See also Issue freebsd#1200
… named 'Latest'. This fixes running 'pkg repo' in a Poudriere-made directory that would result in several different versions of packages being added to the packagesite. Each of them would refer to some .real_* directory. Poudriere uses these directories to manage multiple previous builds and to have a "build in progress" directory that does not conflict with currently served packages. See also freebsd/poudriere#293 See also Issue #1200
… named 'Latest'. This fixes running 'pkg repo' in a Poudriere-made directory that would result in several different versions of packages being added to the packagesite. Each of them would refer to some .real_* directory. Poudriere uses these directories to manage multiple previous builds and to have a "build in progress" directory that does not conflict with currently served packages. See also freebsd/poudriere#293 See also Issue #1200
Thanks for the quick fixes. I will work around the problem for now on my end until the new stable pkg 1.4 is released. At the moment the packagesite in my repository is correct. |
I have a pretty standard poudriere repository setup. Everything has been working fine until yesterday, when I used the bulk command to update a single port. I was running poudriere 3.1.1, from the official FreeBSD packages repo. The new port built correctly and the resulting repo seemed fine. I later realized that the "repopath" and "path" keys in the resulting packagesite.txz were now prepended with ".real_1428515828/".
For example:
This caused pkg upgrades on my FreeBSD machines to fail, with errors such as:
I realize the ".real_1428515828" directory exists for atomic bulk build purposes, but the way I am mirroring the resulting repository drops directories beginning with dots.
In the past, the .real_ path has been absent from the packagesite.txz. This is the first time I've noticed this problem, and I've been running poudriere since before 3.0.
After upgrading to poudriere 3.1.3 and re-running bulk a few times, the new packagesite.txz is seemingly correct, and does not contain any references to ".real_...". For example:
Note the path now lacks the .real_... directory (path":"All/wget-1.16.txz").
So I guess I have a few questions:
Should the .real_... directory be mentioned in the packagesite.txz? Or is this a bug?
Is this a known bug that has been fixed between 3.1.1 and 3.1.3? What is strange is that I was using 3.1.1 for some time, and it wasn't until recently that it started to add the .real directory to the packagesite. All I did was rebuild a port, which I had done before running 3.1.1 without resulting in a broken packagesite.txz.
Is there something I can do to ensure the .real_... paths do not end up in the packagesite.txz? Or should I fix my replication mechanism to handle the new "dotfile" directories?
Thanks.
The text was updated successfully, but these errors were encountered: