On Jan 22, 2016 10:11 AM, "Donald Stufft" <don...@stufft.io> wrote: > > PEP 376 added a file to the .dist-info directory called "INSTALLER" which was > supposed to be: > > This option is the name of the tool used to invoke the installation. > > However, nothing has really ever implemented it and it's gone largely ignored > until just recently pip 8.0 started writing the INSTALLER file into the > metadata directories with a value of "pip". > > I'd like to propose adding a special cased value to add to the installer file > that will tell projects like pip that this particular installed thing is being > managed by someone else, and we should keep our hands off of it. According to > PEP 376 the supported values for this file are r"[a-z0-9_-.]", however I think > since nobody has ever implemented it, we could expand that so that it so you > can also have a special value, of "dpkg (system)" or maybe that's not worth it > and we could just have "system" as a special value.
I think we want more than just "system", because the same user could have some packages managed by dpkg and some by conda, both of which have their own dependency resolution mechanisms that are outside pip's and could get broken if pip removes stuff willy-nilly. And when pip errors out, you want to be able to explain to the user "this package is managed by conda, and using pip on it may break your conda setup..." versus "this package is managed by Debian, and using pip on it may break your Debian setup...". (Actually I'm not sure what the status these days is of mixing pip and conda -- they've gotten somewhat better at handling it. Is the proposed behavior in pip when it sees this flag something that distribution maintainers have asked for? Are they present in this thread?) > The benefit of doing this, is that with a special value in that file that says > "this file belongs to the OS", then pip could start looking for that file and > require a --force flag before it modifies any files belonging to that project. > Then distributors like Debian, Fedora, etc could simply write out the INSTALLER > file with the correct value, and pip would start to respect their files by > default. I'd like a little more clarity on exactly what circumstances justify setting this flag. If I write a new python package manager, then should I set this flag on all my packages because I don't trust anyone else to get things right? :-) Maybe the relevant thing is what I said above, that there is some system tracking these files that is not using the dist-info directory as its source-of-truth about what's installed, dependencies, etc. -n
_______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig