Welcome to Eric Hameleers (Alien BOB)'s Wiki pages.
Trace:
Differences
This shows you the differences between two versions of the page.
|
slackware:multilib [2010/05/15 11:17] alien Several small edits to reflect the updates for Slackware 13.1. |
slackware:multilib [2012/05/03 08:18] (current) alien Use full hostname connie.slackware.com |
||
|---|---|---|---|
| Line 27: | Line 27: | ||
| ===== Obtaining multilib packages ===== | ===== Obtaining multilib packages ===== | ||
| - | You can download a set of multilib-enabled packages and scripts from my web site: http://slackware.com/~alien/multilib/ . | + | You can download a set of multilib-enabled packages and scripts from my web site: http://connie.slackware.com/~alien/multilib/ . |
| - | The packages are accompanied by sources and SlackBuild scripts, plus several README files (this Wiki article is based on one of these READMEs). The //only// required downloads are the binary packages in //<slackware_release_number>// directory below the toplevel directory. The rest is available for educational purposes. | + | Apart from several README files (this Wiki article is based on one of these READMEs), you will find one subdirectory for every 64-bit Slackware release below the toplevel directory "//multilib//". There is another directory called "source". The "//source//" directory contains package sources and SlackBuild scripts.\\ The stuff that you are really interested in - the binary packages - is available in the //<slackware_release_number>// directory below the toplevel directory. Every such directory also contains a "//slackware64-compat32//" subdirectory where you will find an essential set of converted 32-bit Slackware packages, ready for installing on your 64-bit Slackware. |
| + | |||
| + | <note tip>In order to keep up to date, I advise you to keep an eye on the [[http://connie.slackware.com/~alien/multilib/ChangeLog.txt | ChangeLog]] I keep for my multilib packages. Usually, I will have //updated glibc and gcc// packages available within a day after Slackware has updates to gcc and glibc. Also check out [[#rd_party_support_tools | compat32pkg]] by Sėbastien Ballet which automates this process, similar to slackpkg.</note> | ||
| Line 41: | Line 43: | ||
| upgradepkg --reinstall --install-new *.t?z | upgradepkg --reinstall --install-new *.t?z | ||
| </code> in the directory where you downloaded them.\\ This command will also install an additional package called "//compat32-tools//". | </code> in the directory where you downloaded them.\\ This command will also install an additional package called "//compat32-tools//". | ||
| - | * You must have a 32-bit Slackware package tree available. Those who bought an official Slackware 13.0 DVD can simply use that DVD: it is dual-sided and 32bit Slackware is on one of the sides. For the sake of this example I will assume that you have a local 32bit Slackware directory tree available at "''/home/ftp/pub/slackware/slackware-13.0/slackware/''".\\ There should be sub-directories called 'a', 'ap', 'd', 'l', 'n', 'x' immediately below this directory. (If you have mounted a Slackware DVD, your directory will probably be "''/media/SlackDVD/slackware/''" but I will not use that in the example commands below). | + | * If you also downloaded a directory called //slackware64-compat32// then you are lucky, because I did the 32bit package conversion for you already! All you do is run the command: <code> |
| - | * Create a new empty directory (let us call it 'compat32') and change into it: <code> | + | upgradepkg --install-new slackware64-compat32/*-compat32/*.t?z |
| - | mkdir compat32 ; cd compat32 | + | </code> which will install all the converted 32-bit Slackware packages (or upgrade them if you already had installed older multilib packages, for instance when you are upgrading to a newer Slackware). That's all! |
| + | * If you can't find that subdirectory called //slackware64-compat32// then you have to do the conversion yourself. Not difficult at all, it takes a few minutes: | ||
| + | * The fastest is if you have a local directory with original 32-bit Slackware packages available (also called a //local mirror//). Those who bought an official Slackware DVD can simply use that DVD: it is dual-sided and 32bit Slackware is on one of the sides. __For the sake of this example__ I will assume that you have a local 32bit Slackware directory tree available at "''/home/ftp/pub/slackware/slackware-13.37/slackware/''".\\ There should be sub-directories called 'a', 'ap', 'd', 'l', 'n', 'x' immediately below this directory. (If you have mounted a Slackware DVD, your directory will probably be "''/media/SlackDVD/slackware/''" but I will not use that in the example commands below). | ||
| + | * Create a new empty directory (let us call it 'slackware64-compat32') and change into it: <code> | ||
| + | mkdir slackware64-compat32 ; cd slackware64-compat32 | ||
| </code> | </code> | ||
| - | * Run the following command to create a set of 32bit compatibility packages, using the directory to the official 32bit Slackware packages as input: <code> | + | * Run the following command to create a set of 32bit compatibility packages, using the directory to the official 32bit Slackware packages as input: <code> |
| - | massconvert32.sh -i /home/ftp/pub/slackware/slackware-13.0/slackware/ | + | massconvert32.sh -i /home/ftp/pub/slackware/slackware-13.37/slackware/ |
| </code> | </code> | ||
| - | * The previous step takes a while. When it ends, proceed to install the 60 MB of freshly converted 32-bit Slackware packages which were created in subdirectories below your //current directory//: <code> | + | * The previous step takes a while. When it ends, proceed to install the 90 MB of freshly converted 32-bit Slackware packages which were created in subdirectories below your //current directory//: <code> |
| - | installpkg *-compat32/*.t?z | + | upgradepkg --install-new *-compat32/*.t?z |
| </code> | </code> | ||
| - | * Done! You can now start downloading, installing and running 32bit programs. This was not so hard, was it? | + | * Done! You can now start downloading, installing and running 32bit programs. This was not so hard, was it? |
| + | |||
| + | <note warning>If you use a package manager like //slackpkg// you will have to add all the ''glibc'' and ''gcc'' package names to its package blacklist. If you do not take this precaution, you run the risk of your package manager accidentally replacing your multilib versions with Slackware's original pure 64-bit versions!\\ If you run Slackware 13.37 or newer, then slackpkg supports regular expressions in the blacklist file. In that case, a single line in ''/etc/slackpkg/blacklist'' will be enough to blacklist all of my packages (including multilib gcc and glibc packages and all ''compat32'' packages): <code>[0-9]+alien</code></note> | ||
| - | <note warning>If you use a package manager like //slackpkg// you will have to add all ''glibc'' and ''gcc'' package names to its package blacklist. If you do not take this precaution, you run the risk of your package manager accidentally replacing your multilib versions with Slackware's original pure 64-bit versions!</note> | + | <note tip>If you are running Slackware 13.1 or newer, and downloaded the compat32-tools package for that release, the //massconvert32.sh// script can use a remote webserver to download the 32-bit Slackware packages from, instead of requiring a local Slackware mirror or a DVD. You use the "-u" parameter to specify the remote URL like this: <code>massconvert32.sh -u http://someserver.org/path/to/slackware-13.37/slackware</code> </note> |
| - | <note tip>If you are running Slackware 13.1 and downloaded the compat32-tools package for that release, the //massconvert32.sh// script understands the "-u" parameter to specify a remote webserver URL as the source of 32-bit Slackware packages instead of requiring a local Slackware mirror or a DVD: <code>massconvert32.sh -u http://someserver.org/path/to/slackware-13.0</code> </note> | ||
| ==== Detailed instructions ==== | ==== Detailed instructions ==== | ||
| Line 61: | Line 68: | ||
| === Upgrading glibc and gcc === | === Upgrading glibc and gcc === | ||
| - | The following glibc/gcc packages are replacements for - not additions to - standard Slackware packages. You use the "upgradepkg" program to upgrade to my multilib versions of gcc and glibc. You will need these in order to run (glibc), and build (gcc), 32-bit software on your 64-bit Slackware computer (the package versions shown below are for Slackware 13.0): | + | The following glibc/gcc packages are replacements for - not additions to - standard Slackware packages. You use the "upgradepkg" program to upgrade to my multilib versions of gcc and glibc. You will need these in order to run (glibc), and build (gcc), 32-bit software on your 64-bit Slackware computer: |
| ====Slackware64 13.0==== | ====Slackware64 13.0==== | ||
| Line 95: | Line 102: | ||
| * glibc-solibs-2.11.1_multilib-x86_64-3alien.txz | * glibc-solibs-2.11.1_multilib-x86_64-3alien.txz | ||
| * glibc-zoneinfo-2.11.1_multilib-noarch-3alien.txz | * glibc-zoneinfo-2.11.1_multilib-noarch-3alien.txz | ||
| + | |||
| + | ====Slackware64 13.37==== | ||
| + | |||
| + | * The gcc compiler suite: | ||
| + | * gcc-4.5.2_multilib-x86_64-2alien.txz | ||
| + | * gcc-g++-4.5.2_multilib-x86_64-2alien.txz | ||
| + | * gcc-gfortran-4.5.2_multilib-x86_64-2alien.txz | ||
| + | * gcc-gnat-4.5.2_multilib-x86_64-2alien.txz | ||
| + | * gcc-java-4.5.2_multilib-x86_64-2alien.txz | ||
| + | * gcc-objc-4.5.2_multilib-x86_64-2alien.txz | ||
| + | |||
| + | * The GNU libc libraries: | ||
| + | * glibc-2.13_multilib-x86_64-3alien.txz | ||
| + | * glibc-i18n-2.13_multilib-x86_64-3alien.txz | ||
| + | * glibc-profile-2.13_multilib-x86_64-3alien.txz | ||
| + | * glibc-solibs-2.13_multilib-x86_64-3alien.txz | ||
| + | * glibc-zoneinfo-2.13_multilib-noarch-3alien.txz | ||
| + | |||
| + | ====Slackware64 current==== | ||
| + | |||
| + | * As long as you don't see a separate directory named "//current//" you can just use the files in the directory for the most recent stable release. | ||
| + | |||
| + | * The gcc compiler suite: | ||
| + | * gcc-4.5.3_multilib-x86_64-2alien.txz | ||
| + | * gcc-g++-4.5.3_multilib-x86_64-2alien.txz | ||
| + | * gcc-gfortran-4.5.3_multilib-x86_64-2alien.txz | ||
| + | * gcc-gnat-4.5.3_multilib-x86_64-2alien.txz | ||
| + | * gcc-java-4.5.3_multilib-x86_64-2alien.txz | ||
| + | * gcc-objc-4.5.3_multilib-x86_64-2alien.txz | ||
| + | |||
| + | * The GNU libc libraries: | ||
| + | * glibc-2.13_multilib-x86_64-5alien.txz | ||
| + | * glibc-i18n-2.13_multilib-x86_64-5alien.txz | ||
| + | * glibc-profile-2.13_multilib-x86_64-5alien.txz | ||
| + | * glibc-solibs-2.13_multilib-x86_64-5alien.txz | ||
| + | * glibc-zoneinfo-2.13_multilib-noarch-5alien.txz | ||
| There is one additional package that you install using the "installpkg" program: | There is one additional package that you install using the "installpkg" program: | ||
| Line 114: | Line 157: | ||
| A little bit of extra care is required so that unnecessary/unwanted files are stripped from the 32bit packages before you install them. What you need, is a 32bit package that does not conflict with whatever is already present in 64bit Slackware. Hence the name "32bit compatibility package". | A little bit of extra care is required so that unnecessary/unwanted files are stripped from the 32bit packages before you install them. What you need, is a 32bit package that does not conflict with whatever is already present in 64bit Slackware. Hence the name "32bit compatibility package". | ||
| - | I decided that it would be a waste of download bandwidth if I created 32bit compatibility versions of Slackware packages myself. After all, you have probably bought the Slackware 13.0 DVD so you already possess both 64bit and 32bit versions of Slackware... or else the 32bit Slackware tree is available for free download of course ;-) | + | I decided that it would be a waste of download bandwidth if I created 32bit compatibility versions of Slackware packages myself. After all, you have probably bought the Slackware 13.37 DVD so you already possess both 64bit and 32bit versions of Slackware... or else the 32bit Slackware tree is available for free download of course ;-) |
| Instead, I wrote a few scripts (parts of the script code were written by Fred Emmott of [[http://slamd64.com/ | Slamd64]] fame) and wrapped these into a "//compat32-tools//" package. Their purpose is to let you extract the content from any 32bit Slackware package and use that to create a new package which you can safely install on your 64bit Slackware. | Instead, I wrote a few scripts (parts of the script code were written by Fred Emmott of [[http://slamd64.com/ | Slamd64]] fame) and wrapped these into a "//compat32-tools//" package. Their purpose is to let you extract the content from any 32bit Slackware package and use that to create a new package which you can safely install on your 64bit Slackware. | ||
| Line 130: | Line 173: | ||
| </code> This action will result in about 60 MB of new packages which you will find inside the newly created directory ''~/compat32'' (the directory's name is arbitrary of course, I chose it for the sake of this example). These packages comprise the 32bit component of your multilib Slackware64 system.\\ They should be installed using "''installpkg''", and they give you a pretty complete 32-bit compatibility layer on top of Slackware64: <code> | </code> This action will result in about 60 MB of new packages which you will find inside the newly created directory ''~/compat32'' (the directory's name is arbitrary of course, I chose it for the sake of this example). These packages comprise the 32bit component of your multilib Slackware64 system.\\ They should be installed using "''installpkg''", and they give you a pretty complete 32-bit compatibility layer on top of Slackware64: <code> | ||
| installpkg ~/compat32/*/*.t?z | installpkg ~/compat32/*/*.t?z | ||
| - | </code> If you are upgrading from an earlier version of these packages (because for instance you upgraded from Slackware 13.0 to 13.1) then you do not use "''installpkg''" of course, but "''upgradepkg --install-new''" instead: <code> | + | </code> If you are upgrading from an earlier version of these packages (because for instance you upgraded your 64-bit Slackware to a newer release) then you do not use "''installpkg''" of course, but "''upgradepkg --install-new''" instead: <code> |
| upgradepkg --install-new ~/compat32/*/*.t?z | upgradepkg --install-new ~/compat32/*/*.t?z | ||
| </code> The "//--install-new//" parameter is needed to install the new //''compat32''// packages which were added between releases. | </code> The "//--install-new//" parameter is needed to install the new //''compat32''// packages which were added between releases. | ||
| Line 174: | Line 217: | ||
| ===== Caveats ===== | ===== Caveats ===== | ||
| - | After installing the "''-compat32''" packages, you may have to re-install your binary //Nvidia// or //Ati// video X.Org drivers. These driver packages contain both 64bit and 32bit libraries to be maximally useful on a 64bit multilib OS. If you installed the driver files for both architectures, the "''mesa-compat32''" package will overwrite some of the 32bit library files. | + | * After installing the "''-compat32''" packages, you may have to re-install your binary //Nvidia// or //Ati// video X.Org drivers. These driver packages contain both 64bit and 32bit libraries to be maximally useful on a 64bit multilib OS. If you installed the driver files for both architectures, the "''mesa-compat32''" package will overwrite some of the 32bit library files.\\ \\ On the other hand, if you originally //only// installed the 64bit driver libraries for your Nvidia/Ati card, it is recommended after installation of the //multilib// packages, to re-install the binary driver package. This time, choose to install the 32bit driver files as well.\\ \\ The graphical 32bit applications that you are going to run on your multilib installation will require these 32bit driver libraries. Crashes are likely to occur if you fail to install the correct files. |
| - | On the other hand, if you originally //only// installed the 64bit driver libraries for your Nvidia/Ati card, it is recommended after installation of the //multilib// packages, to re-install the binary driver package. This time, choose to install the 32bit driver files as well. | + | * If you want to compile your 64bit kernel yourself, be sure to compile 32bit emulation capability into it or else multilib will mysteriously fail. You will need this piece of kernel configuration: **CONFIG_IA32_EMULATION** |
| - | + | ||
| - | The graphical 32bit applications that you are going to run on your multilib installation will require these 32bit driver libraries. Crashes are likely to occur if you fail to install the correct files. | + | |
| ===== Packages converted by massconvert32.sh ===== | ===== Packages converted by massconvert32.sh ===== | ||
| - | This is the list of packages that is converted into "//-compat32//" versions by the ''massconvert32.sh'' script. Note that some of these packages are not part of Slackware 13.0, they were added in Slackware 13.1 so they will produce a "//*** FAIL: package 'package_name' was not found!//" message when you run the script. Don't worry about that. | + | This is the list of packages that is converted into "//-compat32//" versions by the ''massconvert32.sh'' script. Note that some of these packages are not part of Slackware 13.0 or 13.1, they were added in a later Slackware version so they will produce a "//*** FAIL: package 'package_name' was not found!//" message when you run the script on an older release. The other way round is true as well - some packages have been //removed// in later versions of Slackware and they will also trigger the "//*** FAIL: package 'package_name' was not found!//" message. Don't worry about that. |
| <code bash> | <code bash> | ||
| # The A/ series: | # The A/ series: | ||
| + | aaa_elflibs | ||
| bzip2 | bzip2 | ||
| cups | cups | ||
| Line 194: | Line 236: | ||
| e2fsprogs | e2fsprogs | ||
| openssl-solibs | openssl-solibs | ||
| - | util-linux-ng | + | util-linux |
| # The AP/ series: | # The AP/ series: | ||
| Line 217: | Line 259: | ||
| freetype | freetype | ||
| gamin | gamin | ||
| + | gdk-pixbuf2 | ||
| glib2 | glib2 | ||
| gtk+2 | gtk+2 | ||
| + | gst-plugins-base | ||
| + | gst-plugins-good | ||
| + | gstreamer | ||
| hal | hal | ||
| jasper | jasper | ||
| lcms | lcms | ||
| libart_lgpl | libart_lgpl | ||
| + | libelf | ||
| libexif | libexif | ||
| + | libglade | ||
| libgphoto2 | libgphoto2 | ||
| - | libjpeg | ||
| libidn | libidn | ||
| + | libieee1284 | ||
| + | libjpeg | ||
| libmng | libmng | ||
| + | libmpc | ||
| + | libpcap | ||
| libpng | libpng | ||
| + | libsndfile | ||
| libtermcap | libtermcap | ||
| libtiff | libtiff | ||
| - | libv4l | + | libusb |
| libxml2 | libxml2 | ||
| libxslt | libxslt | ||
| Line 242: | Line 294: | ||
| seamonkey-solibs | seamonkey-solibs | ||
| svgalib | svgalib | ||
| + | v4l-utils | ||
| zlib | zlib | ||
| Line 295: | Line 348: | ||
| libdrm | libdrm | ||
| libfontenc | libfontenc | ||
| - | liblbxutil | ||
| libxcb | libxcb | ||
| mesa | mesa | ||
| pixman | pixman | ||
| </code> | </code> | ||
| + | |||
| + | |||
| + | ===== 3rd party support tools ===== | ||
| + | |||
| + | * Sėbastien Ballet has written a tool called //compat32pkg//. On [[http://compat32pkg.sourceforge.net/ | his web site]] he has //compat32pkg// available for download as well as extensive documentation about how to use it on Slackware64.\\ I will quote the site:\\ //"Compat32pkg is an automated tool that provides all the necessary for managing (converting, installing, upgrading, removing) the 32-bit part of AlienBob's multilib for slackware-64, and all 32-bit packages from Slackware-32 for which users could find a needs into a 64-bit environment, like firefox, seamonkey, jre,..."// | ||
| Line 306: | Line 363: | ||
| * Bruno Russo translated this article to portuguese (brazil): http://www.brunorusso.eti.br/slackware/doku.php?id=multilib_para_o_slackware_x86_64 | * Bruno Russo translated this article to portuguese (brazil): http://www.brunorusso.eti.br/slackware/doku.php?id=multilib_para_o_slackware_x86_64 | ||
| * Mehdi Esmaeelpour translated this article to persian: http://www.slack-world.com/index.php/articles/43-general-system/85-multilib-slackware64 | * Mehdi Esmaeelpour translated this article to persian: http://www.slack-world.com/index.php/articles/43-general-system/85-multilib-slackware64 | ||
| - | + | * Patrick FONIO and Sebastien BALLET translated this article to french: http://wiki.slackware-fr.org/avance:articles:slackware64-multilib | |
| ===== Acknowledgements ===== | ===== Acknowledgements ===== | ||