[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

A Radical Multi-Arch Counter-Proposal



Proposal:
     A. dpkg will be extended to support installing two packages with
        the same name, but different ABIs, as previously proposed.
     B. dpkg will be extended to support two packages with the same name
        (as above) both owning the same file. It will only remove a file
        from the filesystem when the last owning package is removed.
     C. dpkg will be extended so that if both a:ABI1 is installed and
        has "Multi-Arch: yes" set, and an install of a:ABI2 is
        attempted:
             1. if a:ABI2 has "Multi-Arch: yes" set, proceed to install
                it as well. In case of file conflicts, use the
                md5sums[0] in the package to create co-ownership of
                identical shared files in a:AB1 and a:ABI2. If this does
                not resolve all conflicts, error out.
             2. if a:ABI2 has "Multi-Arch: no" set, refuse to proceed.
             3. if a:ABI2 does NOT have "Multi-Arch:" set at all,
                attempt to install as normal without co-ownership.
     D. dpkg will assume a means a:DEFAULT_ABI, which is the default ABI
        on the machine. a:* means "a of all ABIs"[1] (used in, e.g.,
        conflicts). a:ABI of course means that particular ABI.
     E. Either dpkg must require a:* to all be the same version, or
        versions of a which change a common file must
                Conflicts: a:* << VERSION

RATIONALE:
      * This will handle /usr/share/doc. We won't need any of the
        previously-proposed special behavior for
        /usr/share/doc/copyright.
      * This will allow most -dev packages to be multi-arched without
        splitting. This proposal creates no new packages.
      * This allows packages to be slowly migrated to Multi-Arch with
        minimal work. All that is needed for the common case is to add
        the header 'Multi-Arch: yes' to the package and make e.g., amd64
        libs install into /usr/lib64. Some will need md5sums added too,
        but that is trivial.
      * Dependencies do not have to be changed for most packages.

POTENTIAL PROBLEMS:
      * --purge and shared conffiles. I don't think conffiles should be
        shared, ever. Most lib* packages don't have them anyway, and the
        few that do are either special (libc) or can be split. This is
        only a small number of new packages.

FOOTNOTES:
     1. packages with Multi-Arch: yes must have an md5sums file.
     2. No idea if this should include ABIs that are not possible to
        install on this machine, like m68k on amd64. That must be
        thought about.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: