Changes between Initial Version and Version 1 of Ticket #22510, comment 5


Ignore:
Timestamp:
06/06/17 11:51:08 (3 years ago)
Author:
embray
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #22510, comment 5

    initial v1  
    33The duplicate files fall into a few different categories:
    44
    5 1. Most are due to packages that conflict with/replace another package.  Either because two packages provide the same functionality (e.g. openblas/atlas, mpir/gmp) or because one package is a stripped down version of another (e.g. boost_cropped/boost, pari_seadata_small/database_pari).
     51. Most are due to packages that conflict with/replace another package.  Either because two packages provide the same functionality (e.g. openblas/atlas, mpir/gmp) or because one package is a stripped down version of another (e.g. boost_cropped/boost, pari_seadata_small/database_pari). [[BR]][[BR]] I think it might be good if we had explicit conflicts/replaces markers for some packages.  If a package conflicts with an installed package, it will not be installed unless forced.  If a package ''replaces'' another package, the package it replaces is explicitly uninstalled first.  In effect this already happens implicitly.  If I install pari_seadata_small, and then install database_pari, the latter will override the former.  But I think it would be better to do this explicitly.
    66
    7 I think it might be good if we had explicit conflicts/replaces markers for some packages.  If a package conflicts with an installed package, it will not be installed unless forced.  If a package ''replaces'' another package, the package it replaces is explicitly uninstalled first.  In effect this already happens implicitly.  If I install pari_seadata_small, and then install database_pari, the latter will override the former.  But I think it would be better to do this explicitly.
    8 
    9 2. `share/info/dir`--this is a file shared by many packages.  It is written/updated by the `install-info` program.  Of course, when installing into a temp root, there will be no existing `share/info/dir` file, and `install-info` will create it.  But then each package that installs it overrides each other.
    10 
    11 Debian handles this file by stripping it from the installation, then calling `install-info` from a post-install (and pre-uninstall) script.  This is the sort of thing for which I anticipated possibly needing post-install/uninstall hooks.  That said, this is the only example like this I've encountered so far in Sage-the-dist.  So I might just make a special case for it for now, directly in `sage-spkg`, rather than placing the onus on each package that updates this file to do it correctly.
     72. `share/info/dir`--this is a file shared by many packages.  It is written/updated by the `install-info` program.  Of course, when installing into a temp root, there will be no existing `share/info/dir` file, and `install-info` will create it.  But then each package that installs it overrides each other. [[BR]][[BR]] Debian handles this file by stripping it from the installation, then calling `install-info` from a post-install (and pre-uninstall) script.  This is the sort of thing for which I anticipated possibly needing post-install/uninstall hooks.  That said, this is the only example like this I've encountered so far in Sage-the-dist.  So I might just make a special case for it for now, directly in `sage-spkg`, rather than placing the onus on each package that updates this file to do it correctly.
    128
    1393. `__init__.py` in Python namespace packages (e.g. backports_ssl_match_hostname/backports_shutil_get_terminal_size).  If both are installed and one clobbers the other that's fine, but if one is then uninstalled it should ''not'' remove the shared `__init__.py`.  I'll have to look at how Debian handles this.  It might be handled contextually--these files usually contain some boilerplate like `__path__ = extend_path(__path__, __name__)`.  But the boilerplate is not always spelled exactly the same, so it might be tricky to check for.  Maybe this just needs to be handled explicitly on a case-by-case basis.