X-Git-Url: http://git.rohieb.name/www-rohieb-name.git/blobdiff_plain/c76fcceb2d921acec81f5fbe4301a88437c7f89c..73e39f64a32cdae99744de147a3d7002a461dbc4:/blag/post/zsnes-on-amd64-ubuntu.mdwn diff --git a/blag/post/zsnes-on-amd64-ubuntu.mdwn b/blag/post/zsnes-on-amd64-ubuntu.mdwn new file mode 100644 index 0000000..5df598c --- /dev/null +++ b/blag/post/zsnes-on-amd64-ubuntu.mdwn @@ -0,0 +1,91 @@ +[[!meta title="ZSNES on AMD64 Ubuntu"]] +[[!meta date="2010-10-06"]] +[[!meta author="rohieb"]] +[[!meta license="CC-BY-SA 3.0"]] +[[!flattrthing id=80701]] + +**[ Update, 2013-10:** This post post is not up to date anymore. On newer +Debians (since 7.0/wheezy) and Ubuntus (at least since 12.04, Precise Pangolin), +you should be able to install zsnes out of the box: `sudo apt-get install +zsnes:i386`. For details see the MultiArch documentation for +[Debian][MultiArchDebian] and [Ubuntu][MultiArchUbuntu]. **]** + +[MultiArchDebian]: https://wiki.debian.org/Multiarch/ +[MultiArchUbuntu]: https://help.ubuntu.com/community/MultiArch + +Before I bought my current hardware, I was working on a 32-bit-based +system, and I really appreciated ZSNES as an SNES emulator. But +unfortunately, my new hardware was an AMD64 system, and there is +currently no ZSNES package for 64-bit Ubuntu or Debian :( So I decided +to google a bit about the issue, but it took me until now (a year later) +to get ZSNES finally working on my machine. The problem is, if you build +ZSNES on a 64-bit machine, all the application does is segfault at +start, and if you [try to compile for 32-bit systems][0], you get errors +about missing 32-bit libs (in particular, configure does not find a +suitable `libsdl`). Instead, if you just take the binary which was +compiled on a 32-bit system, and install the `ia32-libs` package, +everything seems to work—at least I was able to play a few levels of +Super Mario World succesfully :-) + +[0]: http://board.zsnes.com/phpBB3/viewtopic.php?p=118067&sid=dd9a2a54d9178eb5009c33586aea703c#p118067 + +So here was my idea: take the 32-bit package from the Ubuntu repository, +and just change the Architecture control field, and by this fool dpkg :P +And as it turned out, this idea worked great. You can get the Debian +package here if you want, it *should* work for Ubuntu Karmic and Lucid, +as well as for Debian testing (**but** I only tested it on Lucid, so +there is no warranty here—but I’m happy to hear if it works :-)): + +* [zsnes_1.510-2.2ubuntu3~ppa1_amd64.deb][2] +* SHA1: `716bbd37267b477ef02961a7727212619309b83f` +* MD5: `452ea5230ad17df1dee649ab4cc6c8c0` + +[2]: http://rohieb.name/stuff/zsnes_1.510-2.2ubuntu3~ppa1_amd64.deb + +## How to Reproduce It +For the curious people reading here, here is what I actually did: + +1. `wget http://archive.ubuntu.com/ubuntu/pool/universe/z/zsnes/zsnes_1.510-2.2ubuntu3_i386.deb` +2. `ar x zsnes_1.510-2.2ubuntu3_i386.deb` +3. `tar xzf data.tar.gz` +4. Edit `usr/share/applications/zsnes.desktop` and added `-ad sdl` to the + `Exec:` field, otherwise it would just segfault on the first run: + + Exec=zsnes -ad sdl + +5. Edit `usr/share/doc/zsnes/changelog.Debian.gz` and added a new + changelog entry for the version (just copy one of the previous + entries and adapt it) +6. `tar xzf control.tar.gz` +7. Edit the `control` file, changed the `Version:` and `Architecture:` + field to `amd64`, added the `ia32-libs` dependency, and set myself as + maintainer: + + Package: zsnes + Version: 1.510-2.2ubuntu3~ppa1 + Architecture: amd64 + Maintainer: Roland Hieber + Installed-Size: 4160 + Depends: ia32-libs, libao2 (>= 0.8.8), libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), + libgl1-mesa-glx | libgl1, libpng12-0 (>= 1.2.13-4), + libsdl1.2debian (>= 1.2.10-1), libstdc++6 (>= 4.1.1), zlib1g (>= 1:1.2.2.3) + [...] + +8. Change the `md5sums` file for the right values for + `usr/share/applications/zsnes.desktop` and + `usr/share/doc/zsnes/changelog.Debian.gz` (I used the `md5sum` + command and copy-pasted it) +9. `tar czf control.tar.gz control md5sums postrm postinst` +0. `tar czf data.tar.gz usr/` +1. `ar r zsnes_1.510-2.2ubuntu3~ppa1_amd64.deb debian-binary + control.tar.gz data.tar.gz` + +I’m afraid that I can’t put the package into [my PPA][3], Launchpad only +accepts source packages for uploads, and builds the binary packages +itself, both for i386 and AMD64. This approach can not be used here, +since we needed the i386 binary for AMD64. + +[3]: https://launchpad.net/~rohieb/+archive/ppa + +[[!tag Debian hacking howto Ubuntu workaround Linux packaging + Ubuntu_Jaunty Ubuntu_Karmic ZSNES]]