<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
>

  <channel rdf:about="http://lwn.net/headlines/184092/">
    <title>LWN: Comments on "Debian multiarch support"</title>
    <link>http://lwn.net/Articles/184092/</link>
    <description>
This is a special feed containing comments posted
to the individual LWN article titled &quot;Debian multiarch support&quot;.

    </description>

    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>2</syn:updateFrequency>
    <items>
      <rdf:Seq>
	<rdf:li resource="http://lwn.net/Articles/214654/rss" />
	<rdf:li resource="http://lwn.net/Articles/185523/rss" />
	<rdf:li resource="http://lwn.net/Articles/184442/rss" />
	<rdf:li resource="http://lwn.net/Articles/184425/rss" />
	<rdf:li resource="http://lwn.net/Articles/184419/rss" />
	<rdf:li resource="http://lwn.net/Articles/184409/rss" />
	<rdf:li resource="http://lwn.net/Articles/184406/rss" />
	<rdf:li resource="http://lwn.net/Articles/184376/rss" />
	<rdf:li resource="http://lwn.net/Articles/184354/rss" />
	<rdf:li resource="http://lwn.net/Articles/184348/rss" />
	<rdf:li resource="http://lwn.net/Articles/184331/rss" />
	<rdf:li resource="http://lwn.net/Articles/184277/rss" />
	<rdf:li resource="http://lwn.net/Articles/184272/rss" />
	<rdf:li resource="http://lwn.net/Articles/184222/rss" />
	<rdf:li resource="http://lwn.net/Articles/184220/rss" />
	<rdf:li resource="http://lwn.net/Articles/184203/rss" />
      
      </rdf:Seq>
    </items>

  </channel>
    <item rdf:about="http://lwn.net/Articles/214654/rss">
      <title>Debian multiarch support</title>
      <link>http://lwn.net/Articles/214654/rss</link>
      <dc:date>2006-12-18T10:54:03+00:00</dc:date>
      <dc:creator>k8to</dc:creator>
      <description>
      Wow.  It's now six months after this proposal, and I see no movement.&lt;br&gt;
&lt;p&gt;
Also, it's been over two years since this arch came on the market and the obvious need for multi-arch arose.  Usually I'm pretty content with the slow pace of progress in Debian, in that it brings a lack of pain, but this particular issue is a point of discontent.&lt;br&gt;
&lt;p&gt;
In order to get a bi-arch distribution with extremely broad package support, what, if any, are my options?&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/185523/rss">
      <title>Debian multiarch support</title>
      <link>http://lwn.net/Articles/185523/rss</link>
      <dc:date>2006-05-30T07:31:51+00:00</dc:date>
      <dc:creator>dmaas</dc:creator>
      <description>
      I am glad to see more attention brought to this issue.&lt;br&gt;
&lt;p&gt;
I maintain a network of 32- and 64-bit x86 systems for my company. For various reasons it is highly desirable for all systems to run the same disk image (except the kernel, of course). We want to run a handful of computation-intensive software in 64-bit mode on the systems that support it, but everything else can be 32-bit.&lt;br&gt;
&lt;p&gt;
I started with a plain 32-bit Debian system and manually added in a few pieces from 64-bit Fedora Core (mainly /lib64 and /usr/lib64) - just enough of the basic libraries to run the computation-intensive 64-bit packages.&lt;br&gt;
&lt;p&gt;
It has worked out surprisingly well. I did notice one problem the article points out, which is conflicting binaries in /bin and /usr/bin. I had to install 64-bit versions of certain low-level tools like modprobe, strace, and ps to support the 64-bit systems. I did this by renaming the 32-bit versions to modprobe32, strace32, etc, appending similar suffixes to the 64-bit versions, and writing wrapper scripts which picked the right version to run on a particular machine. Thankfully there were only a handful of these cases.&lt;br&gt;
&lt;p&gt;
The other nasty issue was glibc headers. The contents of /usr/include/asm and /usr/include/bits are platform-specific. I followed RedHat's model of installing both x86 and x86_64 headers with different names and picking the right one using small &quot;stub&quot; headers. I wish glibc would install its headers in a more platform-neutral manner.&lt;br&gt;
&lt;p&gt;
(incidentally, some of you might want to read up on Plan 9, which solved this problem years ago :)&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184442/rss">
      <title>Debian multiarch support</title>
      <link>http://lwn.net/Articles/184442/rss</link>
      <dc:date>2006-05-19T19:19:13+00:00</dc:date>
      <dc:creator>msw</dc:creator>
      <description>
      Red Hat did not invent lib64.  It was in use in Irix well before it appeared in Linux (to my knowledge).&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184425/rss">
      <title>/usr/share</title>
      <link>http://lwn.net/Articles/184425/rss</link>
      <dc:date>2006-05-19T16:44:19+00:00</dc:date>
      <dc:creator>rfunk</dc:creator>
      <description>
      Yes, /var is for files that change a lot during runtime.  /usr only &lt;br&gt;
changes when you upgrade the OS (or pieces of it). &lt;br&gt;
 &lt;br&gt;
This is all explained in the Filesystem Hierarchy Standard. &lt;br&gt;
  &lt;a href=&quot;http://www.pathname.com/fhs/&quot;&gt;http://www.pathname.com/fhs/&lt;/a&gt; &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184419/rss">
      <title>/usr/share</title>
      <link>http://lwn.net/Articles/184419/rss</link>
      <dc:date>2006-05-19T16:24:20+00:00</dc:date>
      <dc:creator>jzbiciak</dc:creator>
      <description>
      Well, it appears a bunch of otherwise arch-neutral stuff ends up in places like /var/lib currently.  On my Ubuntu box, for instance, there's a bunch of Firefox files in /var/lib/mozilla-firefox, and they appear at first blush to be arch-neutral--they're all .rdf and .txt files pretty much.  All the doc files, though, are in /usr/share/doc/mozilla-firefox/.&lt;br&gt;
&lt;p&gt;
&lt;p&gt;
&lt;p&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184409/rss">
      <title>/usr/share</title>
      <link>http://lwn.net/Articles/184409/rss</link>
      <dc:date>2006-05-19T16:07:18+00:00</dc:date>
      <dc:creator>rfunk</dc:creator>
      <description>
      Yes, that's pretty much what /usr/share is intended for, but the fact &lt;br&gt;
that it was mentioned seems to imply a change of some sort. &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184406/rss">
      <title>/usr/share</title>
      <link>http://lwn.net/Articles/184406/rss</link>
      <dc:date>2006-05-19T15:58:40+00:00</dc:date>
      <dc:creator>jzbiciak</dc:creator>
      <description>
      It's probably better to say &quot;architecture independent files.&quot;  When I hear the word &quot;binary&quot; referring to a file I usually think &quot;executable.&quot;  I think what they mean here are all the supporting files for an application, which may include image files, documentation files, and other fairly static things.&lt;br&gt;
&lt;p&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184376/rss">
      <title>Re: i386 running amd64 binaries?</title>
      <link>http://lwn.net/Articles/184376/rss</link>
      <dc:date>2006-05-19T11:48:33+00:00</dc:date>
      <dc:creator>interalia</dc:creator>
      <description>
      multiarch is mostly just a structural thing.  Obviously, rearranging files and dynamic linkers on its own won't allow someone to run binaries for amd64 on i386, as you implied.  But it lets you parallel-install them cleanly, which is great.  multiarch not meant for simply having amd64/i386 co-exist, the idea is to have a consistent structure even if you want three or more architectures, something that the &quot;/lib and /lib64&quot; solution doesn't provide.  The proponents contrast multiarch with the existing approach, which they call bi-arch.&lt;br&gt;
&lt;p&gt;
As posited in previous comments, you might have a third /usr/lib/xx-yy-zz area for cross-compiling to ppc.  Then you might run the compiled ppc programs using a native amd64 binary which is a ppc emulator.  Perhaps even WINE could somehow become an arch for this purpose. If you read the threads on multiarch, people have come up with all sorts of ideas that can be done when you aren't limited to whether something is 32-bit or 64-bit.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184354/rss">
      <title>Debian multiarch support</title>
      <link>http://lwn.net/Articles/184354/rss</link>
      <dc:date>2006-05-19T03:58:33+00:00</dc:date>
      <dc:creator>jwb</dc:creator>
      <description>
      This is the sort of parochial redhatism that led to the creation of the Debian amd64 (formerly &lt;br&gt;
pure64) architecture.  /lib64 is deeply broken for many reasons, not the least of which is the fact &lt;br&gt;
that 64 is the native word length on some platforms and many people don't want to have 32-bit &lt;br&gt;
binaries or libraries on their systems at all.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184348/rss">
      <title>i386 running amd64 binaries?</title>
      <link>http://lwn.net/Articles/184348/rss</link>
      <dc:date>2006-05-19T00:46:58+00:00</dc:date>
      <dc:creator>ncm</dc:creator>
      <description>
      I'm finding it hard to believe that multiarch is all it takes to let you run amd64 binaries on an i386 host, as the first paragraph suggests.  Has an amd64 instruction-level emulator been added since last I checked, or should it say, instead, that it lets you run i386-compiled binaries on your amd64 system?&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184331/rss">
      <title>/usr/share</title>
      <link>http://lwn.net/Articles/184331/rss</link>
      <dc:date>2006-05-18T21:58:19+00:00</dc:date>
      <dc:creator>rfunk</dc:creator>
      <description>
      &quot;The proposed location for all architecture-independent binaries is &lt;br&gt;
under /usr/share.&quot; &lt;br&gt;
 &lt;br&gt;
I hope that refers to executables that truly run on *any* supported &lt;br&gt;
architecture, generally only scripts.  /usr/share would be a very bad &lt;br&gt;
place for x86/x86-64 binaries that won't run on PPC. &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184277/rss">
      <title>Debian multiarch support</title>
      <link>http://lwn.net/Articles/184277/rss</link>
      <dc:date>2006-05-18T15:10:33+00:00</dc:date>
      <dc:creator>elanthis</dc:creator>
      <description>
      The future LSB specs are likely going to change on that front.  The /lib64 stuff is likely to become a symlink.&lt;br&gt;
&lt;p&gt;
Simply put, there are many cases where you want more than just x86 and x86-64 on a system.  Maybe you want PPC and PPC64.  Or maybe you even want x86 and PPC.  Another common one is x86 and IA64.  In that scenario, the 32-bit libs don't go in /lib, they go in /emu/x86 (or something similar to that).  Even though that's &quot;standard&quot; according to various ABI specs, it then makes it impossible to have a single x86 package that installs to both a native x86 machine, and x86-64 machine, and an IA32 machine.  And a system that runs PPC natively but has x86 emulation features (for running those pesky x86 proprietary apps) is going to need yet another path.&lt;br&gt;
&lt;p&gt;
Then, we don't just have issues of hardware architecture, but also the kernel and OS interface.  Many OS's can run Linux binaries, for example, but you need to put them in chroots and such in most cases so that you can separate the native version of libraries with the Linux version of the libraries.  Multiarch can solve this problem, too.&lt;br&gt;
&lt;p&gt;
By putting all libraries in a standardized path like /lib/linux-gnu-x86, /lib/solaris-sun-sparc, /lib/linux-gnu-ia32, and so on, it becomes possible to have a single installed system that can run binaries from multiple OS's and multiple architectures, even in cases where the host CPU doesn't have some built-in compatibility system.  (Think PPC binaries running on x86/x86-64 CPUs with Rosetta under OS X.)&lt;br&gt;
&lt;p&gt;
So, while I'm very sure that x86-64 users are the big pushers for multiarch (I know that's what _I_ want it), there _are_ many other use cases for it that can't be solved cleanly without either it or massive chroots (and the headaches those bring, like trying to sync configuration).&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184272/rss">
      <title>Debian multiarch support</title>
      <link>http://lwn.net/Articles/184272/rss</link>
      <dc:date>2006-05-18T14:14:34+00:00</dc:date>
      <dc:creator>msw</dc:creator>
      <description>
      I helped implement the multiarch support in RPM, and it's not just that simple.  Often you need to install both 32-bit and 64-bit packages at the same time.  Sometimes bits of those packges overlap.  This (sort of) works in RPM because two packages are allowed to own the same file if the contents are identical.  This lead to a ton of work to make the packages in Red Hat produce exactly the same contents (for the non-architecture-specific files) on both 32-bit and 64-bit systems.  Sounds like fun?  I assure you it wasn't.&lt;br&gt;
&lt;p&gt;
We took that experience and designed a new package management system from the ground up.  One of the primary design goals was elegant multi-arch and multi-lib support.  The result is Conary, which does a pretty amazing job.  We've easily installed 32-bit OpenOffice.org or Firefox on a 64-bit system - out of the box.&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184222/rss">
      <title>Debian multiarch support</title>
      <link>http://lwn.net/Articles/184222/rss</link>
      <dc:date>2006-05-18T08:07:47+00:00</dc:date>
      <dc:creator>wookey</dc:creator>
      <description>
      Multiarch actually has wider use case than the obvious one of letting amd64 systems run both 64 and 32 bit binaries/libs. It also helps with cross-compilation issues, by having a standard place to install non-native libs (of multiple types) and a packagemanager that can cope with this. dpkg-cross currently provides this functiponality by re-writing paths in standard packages to make them cross-installable. Multiarch should make that aspect of dpkg-cross redundant.&lt;br&gt;
&lt;p&gt;
I think it can also help with cross-building schemes which use emulation to run target binaries at build-time, but I need to think about it a bit more first.&lt;br&gt;
&lt;p&gt;
So embedded/cross-building people should be keen to see multiarch happen, even if they don't care at all about amd64 64/32 mixed installations. &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184220/rss">
      <title>Debian multiarch support</title>
      <link>http://lwn.net/Articles/184220/rss</link>
      <dc:date>2006-05-18T07:42:39+00:00</dc:date>
      <dc:creator>kleptog</dc:creator>
      <description>
      But where do the PPC64 libraries go?&lt;br&gt;
&lt;p&gt;
It's all nice and good to have a solution for x86, but there are other architechtures that can support multiple ABI formats simultaneously, it would be nice to do it in a way that works for everyone.&lt;br&gt;
&lt;p&gt;
Fortunatly, the dynamic linker is smart and solves 99% of the problem for us. We just need to make sure that packages don't try to install over the top of eachother.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/184203/rss">
      <title>Debian multiarch support</title>
      <link>http://lwn.net/Articles/184203/rss</link>
      <dc:date>2006-05-18T06:36:48+00:00</dc:date>
      <dc:creator>dmantione</dc:creator>
      <description>
      This should be no issue for discussion: According to the x86-64 ABI &lt;br&gt;
32-bit binaries go in /lib, 64-bit binaries go in /lib64: &lt;br&gt;
&lt;a href=&quot;http://www.x86-64.org/documentation/abi-0.96.pdf&quot;&gt;http://www.x86-64.org/documentation/abi-0.96.pdf&lt;/a&gt; &lt;br&gt;
 &lt;br&gt;
The reason is simple: This is the only way you can install (RPM) packages &lt;br&gt;
designed for i386 systems on your x86-64 systems. You can simply forget &lt;br&gt;
what architecture the package has, it just works. &lt;br&gt;
      
      </description>
    </item>
</rdf:RDF>

