[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
slackware:multilib [2016/02/06 22:47 (UTC)] – Updated to current. alienbobslackware:multilib [2017/07/01 21:04 (UTC)] – Updated glibc packages in Slackware 14.2 and -current. alienbob
Line 7: Line 7:
     * //glibc// (i.e. a glibc that supports //running// both 32bit and 64bit binaries), and     * //glibc// (i.e. a glibc that supports //running// both 32bit and 64bit binaries), and
     * //gcc// (i.e. able to //compile// 32bit binaries as well as 64bit binaries).     * //gcc// (i.e. able to //compile// 32bit binaries as well as 64bit binaries).
-  - Then, system libraries are taken from 32bit Slackware and installed in the 64bit Slackware system which completes the process of creating a 32bit software layer. +  - Then, system libraries are taken from 32bit Slackware and installed in the 64bit Slackware system alongside their 64bit versions which completes the process of creating a 32bit compatibility software layer.
- +
-<note>Slackware for the x86_64 architecture (or "//Slackware64//" for short) is a pure 64-bit Operating System, but easily upgradable to multilib. //Out of the box, Slackware64 is only capable of compiling and running 64bit binaries.//</note>+
  
 When Slackware64 was released, it had an advantage over the 64bit "forks" that existed out there. These forks added the 32bit compatibility layer by recompiling a lot of their packages as 32bit binaries. Slackware on the other hand, is a distribution that consists of a 32bit and 64bit release, both of which are being developed in parallel. This means, that you do not have to compile 32-bit packages from scratch in order to add multilib capability to the 64bit system.  You simply take them from the 32-bit Slackware package tree! \\  This was one of the reasons for not adding full multilib to Slackware64 - we create the right preconditions but require the user to act if she needs multilib. \\ In a [[#detailed_instructions | section further down]], I will explain how you can take a 32-bit Slackware package (say, the "mesa" package) and re-package its content into a "mesa-compat32" package that you can install straight away on Slackware64. When Slackware64 was released, it had an advantage over the 64bit "forks" that existed out there. These forks added the 32bit compatibility layer by recompiling a lot of their packages as 32bit binaries. Slackware on the other hand, is a distribution that consists of a 32bit and 64bit release, both of which are being developed in parallel. This means, that you do not have to compile 32-bit packages from scratch in order to add multilib capability to the 64bit system.  You simply take them from the 32-bit Slackware package tree! \\  This was one of the reasons for not adding full multilib to Slackware64 - we create the right preconditions but require the user to act if she needs multilib. \\ In a [[#detailed_instructions | section further down]], I will explain how you can take a 32-bit Slackware package (say, the "mesa" package) and re-package its content into a "mesa-compat32" package that you can install straight away on Slackware64.
 +
 +<note>Slackware for the x86_64 architecture (or "//Slackware64//" for short) is a pure 64-bit Operating System, but easily upgradable to multilib. //Out of the box, Slackware64 is only capable of compiling and running 64bit binaries.//</note>
  
  
Line 49: Line 49:
 WGETOPTS="--timeout=5 --tries=1" WGETOPTS="--timeout=5 --tries=1"
 GREYLIST=on GREYLIST=on
-PKGS_PRIORITY=( multilib:.* restricted:.* alienbob:.* ktown_testing:.* +PKGS_PRIORITY=( multilib restricted alienbob ktown 
-REPOPLUS=( slackpkgplus multilib restricted alienbob ktown_testing +REPOPLUS=( slackpkgplus multilib restricted alienbob ktown 
-MIRRORPLUS['multilib']=http://taper.alienbase.nl/mirrors/people/alien/multilib/current/ +MIRRORPLUS['multilib']=http://bear.alienbase.nl/mirrors/people/alien/multilib/current/ 
-MIRRORPLUS['alienbob']=http://taper.alienbase.nl/mirrors/people/alien/sbrepos/current/x86_64/ +MIRRORPLUS['alienbob']=http://bear.alienbase.nl/mirrors/people/alien/sbrepos/current/x86_64/ 
-MIRRORPLUS['restricted']=http://taper.alienbase.nl/mirrors/people/alien/restricted_sbrepos/current/x86_64/ +MIRRORPLUS['restricted']=http://bear.alienbase.nl/mirrors/people/alien/restricted_sbrepos/current/x86_64/ 
-MIRRORPLUS['ktown_testing']=http://taper.alienbase.nl/mirrors/alien-kde/current/testing/x86_64/+MIRRORPLUS['ktown']=http://bear.alienbase.nl/mirrors/alien-kde/current/latest/x86_64/
 MIRRORPLUS['slackpkgplus']=http://slakfinder.org/slackpkg+/ MIRRORPLUS['slackpkgplus']=http://slakfinder.org/slackpkg+/
 </file>  </file> 
Line 63: Line 63:
 This section contains the essential instructions to add full multilib capability to your Slackware64 system. If you want to understand the process in more detail, or need information on how to compile 32bit software in Slackware64, you should also read the sections that follow.\\ Note that the "''#''" in front of the commands depicts a //root prompt// This section contains the essential instructions to add full multilib capability to your Slackware64 system. If you want to understand the process in more detail, or need information on how to compile 32bit software in Slackware64, you should also read the sections that follow.\\ Note that the "''#''" in front of the commands depicts a //root prompt//
  
-  * Download the packages from my web site (I gave you the URL in [[#obtaining_multilib_packages | the previous section]], but this example is using a mirror URL). Suppose you are running Slackware 14.1. You execute: <code> +  * Download the packages from my web site (I gave you the URL in [[#obtaining_multilib_packages | the previous section]], but this example is using a mirror URL). Suppose you are running Slackware 14.2. You execute: <code> 
-# SLACKVER=14.1+# SLACKVER=14.2
 # mkdir multilib # mkdir multilib
 # cd multilib # cd multilib
-# lftp -c "open http://taper.alienbase.nl/mirrors/people/alien/multilib/ ; mirror -c -e ${SLACKVER}"+# lftp -c "open http://bear.alienbase.nl/mirrors/people/alien/multilib/ ; mirror -c -e ${SLACKVER}"
 # cd ${SLACKVER} # cd ${SLACKVER}
 </code> </code>
Line 77: Line 77:
 </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! </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 not find a subdirectory called //slackware64-compat32// then either you did not download it, or the download mirror did not provide it. In this case, you have to do the 32-bit package conversion yourself. Not difficult at all, it takes a few minutes:   * If you can not find a subdirectory called //slackware64-compat32// then either you did not download it, or the download mirror did not provide it. In this case, you have to do the 32-bit package 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-14.1/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).+    * 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-14.2/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>     * Create a new empty directory (let us call it 'slackware64-compat32') and change into it: <code>
 # mkdir slackware64-compat32 ; cd slackware64-compat32 # 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-14.1/slackware/+# massconvert32.sh -i /home/ftp/pub/slackware/slackware-14.2/slackware/
 </code> </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>     * 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>
Line 95: Line 95:
  
 <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> <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-14.1/slackware+# massconvert32.sh -u http://someserver.org/path/to/slackware-14.2/slackware
 </code> </note> </code> </note>
  
Line 181: Line 181:
     * glibc-profile-2.17_multilib-x86_64-10alien.txz     * glibc-profile-2.17_multilib-x86_64-10alien.txz
     * glibc-solibs-2.17_multilib-x86_64-10alien.txz     * glibc-solibs-2.17_multilib-x86_64-10alien.txz
 +
 +====Slackware64 14.2====
 +
 +  * The gcc compiler suite:
 +    * gcc-5.3.0_multilib-x86_64-3alien.txz
 +    * gcc-g++-5.3.0_multilib-x86_64-3alien.txz
 +    * gcc-gfortran-5.3.0_multilib-x86_64-3alien.txz
 +    * gcc-gnat-5.3.0_multilib-x86_64-3alien.txz
 +    * gcc-go-5.3.0_multilib-x86_64-3alien.txz
 +    * gcc-java-5.3.0_multilib-x86_64-3alien.txz
 +    * gcc-objc-5.3.0_multilib-x86_64-3alien.txz
 +  * The GNU libc libraries:
 +    * glibc-2.23_multilib-x86_64-2alien.txz
 +    * glibc-i18n-2.23_multilib-x86_64-2alien.txz
 +    * glibc-profile-2.23_multilib-x86_64-2alien.txz
 +    * glibc-solibs-2.23_multilib-x86_64-2alien.txz
  
 ====Slackware64 current==== ====Slackware64 current====
Line 187: Line 203:
  
   * The gcc compiler suite:   * The gcc compiler suite:
-    * gcc-5.3.0_multilib-x86_64-2alien.txz +    * gcc-7.1.0_multilib-x86_64-2alien.txz 
-    * gcc-g++-5.3.0_multilib-x86_64-2alien.txz +    * gcc-brig-7.1.0_multilib-x86_64-2alien.txz 
-    * gcc-gfortran-5.3.0_multilib-x86_64-2alien.txz +    * gcc-g++-7.1.0_multilib-x86_64-2alien.txz 
-    * gcc-gnat-5.3.0_multilib-x86_64-2alien.txz +    * gcc-gfortran-7.1.0_multilib-x86_64-2alien.txz 
-    * gcc-go-5.3.0_multilib-x86_64-2alien.txz +    * gcc-gnat-7.1.0_multilib-x86_64-2alien.txz 
-    * gcc-java-5.3.0_multilib-x86_64-2alien.txz +    * gcc-go-7.1.0_multilib-x86_64-2alien.txz 
-    * gcc-objc-5.3.0_multilib-x86_64-2alien.txz+    * gcc-objc-7.1.0_multilib-x86_64-2alien.txz
   * The GNU libc libraries:   * The GNU libc libraries:
-    * glibc-2.22_multilib-x86_64-4alien.txz +    * glibc-2.25_multilib-x86_64-3alien.txz 
-    * glibc-i18n-2.22_multilib-x86_64-4alien.txz +    * glibc-i18n-2.25_multilib-x86_64-3alien.txz 
-    * glibc-profile-2.22_multilib-x86_64-4alien.txz +    * glibc-profile-2.25_multilib-x86_64-3alien.txz 
-    * glibc-solibs-2.22_multilib-x86_64-4alien.txz +    * glibc-solibs-2.25_multilib-x86_64-3alien.txz 
-    glibc-zoneinfo-2015g_multilib-noarch-4alien.txz+ 
 +<note>Since the update to gcc 7, there is no more ''gcc-java'' package because its development has ceased.</note> 
 +<note>The ''glibc-zoneinfo'' package is not a part of multilib, since it does not contain code.  You need to install Slackware's stock ''glibc-zoneinfo'' package.</note> 
 + 
 +====All releases of Slackware====
  
-There is one additional package that you install using the "installpkg" program:+There is one additional package that you need to install using the "installpkg" program. The actual version may vary for each release of Slackware, but the package can be found in the same directory where you also find the multilib versions of ''gcc'' and ''glibc'':
  
   * The "32bit toolkit" (scripts that facilitate the creation of 32bit packages)   * The "32bit toolkit" (scripts that facilitate the creation of 32bit packages)
     * compat32-tools-3.7-noarch-1alien.tgz     * compat32-tools-3.7-noarch-1alien.tgz
- 
-<note>Slamd64 had separate 64bit and 32bit gcc/glibc multilib packages.\\ However, I believe that it is cleaner to keep these essential multilib packages undivided.  I followed the concept already used in Slackware64's own //binutils// package, which has 64-bit and 32-bit multilib capability bundled into one package.</note> 
  
  
Line 219: Line 237:
 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 14.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 14.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 317: Line 335:
 libtool libtool
 llvm llvm
 +opencl-headers
  
 # The L/ series: # The L/ series:
  
 +SDL2
 alsa-lib alsa-lib
 alsa-oss alsa-oss
Line 330: Line 350:
 esound esound
 expat expat
 +ffmpeg
 fftw fftw
 freetype freetype
 fribidi fribidi
 gamin gamin
 +gc
 gdk-pixbuf2 gdk-pixbuf2
 giflib giflib
Line 344: Line 366:
 gst-plugins-good gst-plugins-good
 gst-plugins-good0 gst-plugins-good0
 +gst-plugins-libav
 gstreamer gstreamer
 gstreamer0 gstreamer0
Line 351: Line 374:
 jasper jasper
 json-c json-c
 +lame
 lcms lcms
 lcms2 lcms2
Line 356: Line 380:
 libart_lgpl libart_lgpl
 libasyncns libasyncns
 +libclc
 +libedit
 libelf libelf
 libexif libexif
Line 368: Line 394:
 libmpc libmpc
 libnl3 libnl3
 +libnotify
 libogg libogg
 libpcap libpcap
Line 376: Line 403:
 libtermcap libtermcap
 libtiff libtiff
 +libunistring
 libusb libusb
 libvorbis libvorbis
Line 382: Line 410:
 lzo lzo
 ncurses ncurses
 +ocl-icd
 openjpeg openjpeg
 orc orc
Line 387: Line 416:
 popt popt
 pulseaudio pulseaudio
 +python-six
 qt qt
 readline readline
Line 410: Line 440:
 openssl openssl
 p11-kit p11-kit
 +samba
  
 # The X/ series: # The X/ series:
Line 433: Line 464:
 libXfixes libXfixes
 libXfont libXfont
 +libXfont2
 libXfontcache libXfontcache
 libXft libXft
Line 455: Line 487:
 libepoxy libepoxy
 libfontenc libfontenc
 +libinput
 libpciaccess libpciaccess
 libva libva
Line 463: Line 496:
 mesa mesa
 pixman pixman
 +vulkan-sdk
 xcb-util xcb-util
  
Line 477: Line 511:
  
   * [[http://slackware.com/~alien/multilib/ | http://slackware.com/~alien/multilib/]]   * [[http://slackware.com/~alien/multilib/ | http://slackware.com/~alien/multilib/]]
-  * [[http://taper.alienbase.nl/mirrors/people/alien/multilib/ | http://taper.alienbase.nl/mirrors/people/alien/multilib/]] +  * [[http://bear.alienbase.nl/mirrors/people/alien/multilib/ | http://bear.alienbase.nl/mirrors/people/alien/multilib/]] 
-  * [[http://slackware.org.uk/people/alien/multilib/| http://slackware.org.uk/people/alien/multilib/]]+  * [[http://slackware.uk/people/alien/multilib/| http://slackware.uk/people/alien/multilib/]]
   * [[http://alien.slackbook.org/slackware/multilib/| http://alien.slackbook.org/slackware/multilib/]]   * [[http://alien.slackbook.org/slackware/multilib/| http://alien.slackbook.org/slackware/multilib/]]
   * [[http://slackbuilds.org/mirror/alien/multilib/| http://slackbuilds.org/mirror/alien/multilib/]]   * [[http://slackbuilds.org/mirror/alien/multilib/| http://slackbuilds.org/mirror/alien/multilib/]]
 +
 +
 ===== 3rd party support tools ===== ===== 3rd party support tools =====
  
Line 495: Line 531:
 ===== Acknowledgements ===== ===== Acknowledgements =====
  
-  * A lot of thanks should go to Fred Emmott, who created Slamd64, the original unofficial 64-bit fork of Slackware.  Although Slackware64 was not based on Fred's work, I still learnt most of what I know about setting up the 32-bit part of a multilib Linux from his writings that are found in Slamd64.+  * A lot of thanks should go to Fred Emmott, who created Slamd64, the original unofficial 64-bit fork of Slackware.  Although Slackware64 was not based on Fred's work, I still learnt most of what I know about setting up the 32-bit part of a multilib Linux from his writings that are found in Slamd64.\\ Note that Slamd64 had separate 64bit and 32bit gcc/glibc multilib packages. However, I believe that it is cleaner to keep these essential multilib packages undivided.  I followed the concept already used in Slackware64's own //binutils// package, which has 64-bit and 32-bit multilib capability bundled into one package. 
  
   * Cross Linux From Scratch.\\ The CLFS Wiki (http://trac.cross-lfs.org/wiki/read#ReadtheCrossLinuxFromScratchBookOnline) is a 'must-read' if you want to understand how to port Linux to a new architecture. I took several ideas, concepts and patches from them when creating Slackware64 from scratch, and again when I created my multilib gcc/glibc packages from scratch (my README on this multilib-from-scratch is available in the ./source directory).   * Cross Linux From Scratch.\\ The CLFS Wiki (http://trac.cross-lfs.org/wiki/read#ReadtheCrossLinuxFromScratchBookOnline) is a 'must-read' if you want to understand how to port Linux to a new architecture. I took several ideas, concepts and patches from them when creating Slackware64 from scratch, and again when I created my multilib gcc/glibc packages from scratch (my README on this multilib-from-scratch is available in the ./source directory).
 slackware:multilib ()