Packages list for multilib

This commit is contained in:
Dimitris Zlatanidis 2023-04-04 23:09:35 +03:00
parent aa05b4a9a3
commit bca1d3e0b5
5 changed files with 629 additions and 0 deletions

View file

@ -3,6 +3,8 @@ Fixed:
- Upgrade packages with build numbers greater to >= 10
Updated:
- Indicate colour for upgradable packages
Added:
- Packages list for multilib installation
4.7.5 - 04/04/2023
BugFixed:

View file

@ -0,0 +1,19 @@
Slackware for x86_64 - multilib packages & install instructions
---------------------------------------------------------------
Before proceeding with the installation, it is better to read Eric's instructions.
You will find the file README.ERIC for this purpose, or refer directly to:
http://www.slackware.com/~alien/multilib/
In this folder, there are two lists, as Eric says, you should install first the glibc packages
and then the 32-bit compatibility packages:
$ slpkg -ir glibc_packages.pkgs -B multilib
and then:
$ slpkg -i compat32.pkgs -B multilib
Please read README.ERIC for more or visit the site as I say above.
Enjoy!

View file

@ -0,0 +1,349 @@
Slackware for x86_64 - multilib packages & build instructions
=============================================================
Slackware for the x86_64 architecture (or Slackware64 for short) is a pure
64-bit Operating System, but by design it is "multilib-ready". This means,
that is it is possible to add a layer of software that will allow you to run
32bit software without changes to either Slackware64 or these 32bit packages.
Furthermore, the multilib-enabled Slackware64 can compile 32bit binaries,
if you add the right software to it.
This README contains instructions on how to use the packages in this
directory to create a multilib Slackware64.
A more extensive documentation is available on the Slackware Documentation
Wiki, https://docs.slackware.com/slackware:multilib where you will also find
the main mirror locations for downloading these packages.
The exciting thing about Slackware64, is that you do not have to compile
all these basic 32-bit packages from scratch. You simply take them from the
32-bit Slackware package tree! Further down, I will explain how you can take
a 32-bit Slackware package (say, the "mesa" package) and strip/re-package its
content into a "mesa-compat32" package that you can install onto your 64-bit
Slackware computer straight away.
Enabling multilib
=================
Fast-track (examples assume slackware64-15.0 ... change to your needs).
All of the following commands should be executed as the 'root' user:
* In the location where you found this README, download the subdirectory with
the name that corresponds to the Slackware version you are running. For
Slackware64 15.0 for instance, you would run the following command:
# lftp -c 'open http://slackware.com/~alien/multilib/ ; mirror -c -e 15.0'
and then change into the new "15.0" directory which has been created on
your computer:
# cd 15.0
* First, you will upgrade your 64bit Slackware gcc and glibc packages to their
multilib versions by running the command:
# upgradepkg --reinstall --install-new *.t?z
in the directory you just changed to (the "15.0" directory in our case).
This will upgrade gcc and glibc packages, and also install a new package
called "compat32-tools".
* You are now going to install 32-bit compatibility packages to support all
the 32-bit programs you may want to run (roughly 60 MB of packages, not all
that much really!). These packages are located in the subdirectory called
"slackware64-compat32" which you also downloaded with the "lftp" command
shown above. Run this command:
# upgradepkg --install-new slackware64-compat32/*-compat32/*.t?z
* This procedure will also work if you already had a multilib setup and have
upgraded your Slackware to a newer release (new compat32 packages will be
installed and existing ones will be upgraded).
* Done! You need to reboot because of the glibc upgrade.
In more detail:
The following 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,
and build, 32-bit software on your 64-bit Slackware computer:
==Slackware64 13.0==
* The gcc compiler suite:
- gcc-4.3.3_multilib-x86_64-4alien.txz
- gcc-g++-4.3.3_multilib-x86_64-4alien.txz
- gcc-gfortran-4.3.3_multilib-x86_64-4alien.txz
- gcc-gnat-4.3.3_multilib-x86_64-4alien.txz
- gcc-java-4.3.3_multilib-x86_64-4alien.txz
- gcc-objc-4.3.3_multilib-x86_64-4alien.txz
* The GNU libc libraries:
- glibc-2.9_multilib-x86_64-5alien_slack13.0.txz
- glibc-i18n-2.9_multilib-x86_64-5alien_slack13.0.txz
- glibc-profile-2.9_multilib-x86_64-5alien_slack13.0.txz
- glibc-solibs-2.9_multilib-x86_64-5alien_slack13.0.txz
- glibc-zoneinfo-2.9_multilib-noarch-5alien_slack13.0.txz
==Slackware64 13.1==
* The gcc compiler suite:
- gcc-4.4.4_multilib-x86_64-1alien.txz
- gcc-g++-4.4.4_multilib-x86_64-1alien.txz
- gcc-gfortran-4.4.4_multilib-x86_64-1alien.txz
- gcc-gnat-4.4.4_multilib-x86_64-1alien.txz
- gcc-java-4.4.4_multilib-x86_64-1alien.txz
- gcc-objc-4.4.4_multilib-x86_64-1alien.txz
* The GNU libc libraries:
- glibc-2.11.1_multilib-x86_64-5alien_slack13.1.txz
- glibc-i18n-2.11.1_multilib-x86_64-5alien_slack13.1.txz
- glibc-profile-2.11.1_multilib-x86_64-5alien_slack13.1.txz
- glibc-solibs-2.11.1_multilib-x86_64-5alien_slack13.1.txz
- glibc-zoneinfo-2.11.1_multilib-noarch-5alien_slack13.1.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-7alien.txz
- glibc-i18n-2.13_multilib-x86_64-7alien.txz
- glibc-profile-2.13_multilib-x86_64-7alien.txz
- glibc-solibs-2.13_multilib-x86_64-7alien.txz
- glibc-zoneinfo-2013d_multilib-noarch-7alien.txz
==Slackware64 14.0==
* The gcc compiler suite:
- gcc-g++-4.7.1_multilib-x86_64-1alien.txz
- gcc-gfortran-4.7.1_multilib-x86_64-1alien.txz
- gcc-gnat-4.7.1_multilib-x86_64-1alien.txz
- gcc-go-4.7.1_multilib-x86_64-1alien.txz
- gcc-java-4.7.1_multilib-x86_64-1alien.txz
- gcc-objc-4.7.1_multilib-x86_64-1alien.txz
* The GNU libc libraries:
- glibc-2.15_multilib-x86_64-8alien.txz
- glibc-i18n-2.15_multilib-x86_64-8alien.txz
- glibc-profile-2.15_multilib-x86_64-8alien.txz
- glibc-solibs-2.15_multilib-x86_64-8alien.txz
- glibc-zoneinfo-2013d_2013d_multilib-noarch-8alien.txz
==Slackware64 14.1==
* The gcc compiler suite:
- gcc-4.8.2_multilib-x86_64-1alien.txz
- gcc-g++-4.8.2_multilib-x86_64-1alien.txz
- gcc-gfortran-4.8.2_multilib-x86_64-1alien.txz
- gcc-gnat-4.8.2_multilib-x86_64-1alien.txz
- gcc-go-4.8.2_multilib-x86_64-1alien.txz
- gcc-java-4.8.2_multilib-x86_64-1alien.txz
- gcc-objc-4.8.2_multilib-x86_64-1alien.txz
* The GNU libc libraries:
- glibc-2.17_multilib-x86_64-7alien.txz
- glibc-i18n-2.17_multilib-x86_64-7alien.txz
- glibc-profile-2.17_multilib-x86_64-7alien.txz
- glibc-solibs-2.17_multilib-x86_64-7alien.txz
- glibc-zoneinfo-2013d_multilib-noarch-7alien.txz
==Slackware64 14.2==
* The gcc compiler suite:
- gcc-5.5.0_multilib-x86_64-1alien.txz
- gcc-g++-5.5.0_multilib-x86_64-1alien.txz
- gcc-gfortran-5.5.0_multilib-x86_64-1alien.txz
- gcc-gnat-5.5.0_multilib-x86_64-1alien.txz
- gcc-go-5.5.0_multilib-x86_64-1alien.txz
- gcc-java-5.5.0_multilib-x86_64-1alien.txz
- gcc-objc-5.5.0_multilib-x86_64-1alien.txz
* The GNU libc libraries:
- glibc-2.23_multilib-x86_64-4alien.txz
- glibc-i18n-2.23_multilib-x86_64-4alien.txz
- glibc-profile-2.23_multilib-x86_64-4alien.txz
- glibc-solibs-2.23_multilib-x86_64-4alien.txz
==Slackware64 15.0 ==
* The gcc compiler suite:
- gcc-11.2.0_multilib-x86_64-2alien.txz
- gcc-brig-11.2.0_multilib-x86_64-2alien.txz
- gcc-g++-11.2.0_multilib-x86_64-2alien.txz
- gcc-gdc-11.2.0_multilib-x86_64-2alien.txz
- gcc-gfortran-11.2.0_multilib-x86_64-2alien.txz
- gcc-gnat-11.2.0_multilib-x86_64-2alien.txz
- gcc-go-11.2.0_multilib-x86_64-2alien.txz
- gcc-objc-11.2.0_multilib-x86_64-2alien.txz
* The GNU libc libraries:
- aaa_glibc-solibs-2.33_multilib-x86_64-5alien.txz
- glibc-2.33_multilib-x86_64-5alien.txz
- glibc-i18n-2.33_multilib-x86_64-5alien.txz
- glibc-profile-2.33_multilib-x86_64-5alien.txz
==Slackware64 current==
* The gcc compiler suite:
- gcc-11.2.0_multilib-x86_64-2alien.txz
- gcc-brig-11.2.0_multilib-x86_64-2alien.txz
- gcc-g++-11.2.0_multilib-x86_64-2alien.txz
- gcc-gdc-11.2.0_multilib-x86_64-2alien.txz
- gcc-gfortran-11.2.0_multilib-x86_64-2alien.txz
- gcc-gnat-11.2.0_multilib-x86_64-2alien.txz
- gcc-go-11.2.0_multilib-x86_64-2alien.txz
- gcc-objc-11.2.0_multilib-x86_64-2alien.txz
* The GNU libc libraries:
- aaa_glibc-solibs-2.33_multilib-x86_64-5alien.txz
- glibc-2.33_multilib-x86_64-5alien.txz
- glibc-i18n-2.33_multilib-x86_64-5alien.txz
- glibc-profile-2.33_multilib-x86_64-5alien.txz
=======================================================================
There is one more package (compat32-tools); you install it using the
"installpkg" program:
* The compat32-tools package is a "32-bit toolkit" (containing scripts that
facilitate the creation of 32bit packages):
- compat32-tools-3.9-noarch-28alien.tgz
* The above packages cover the essentials for getting ready to run and compile
32-bit software on Slackware64. But in order to be able to actually run
software, you need a "layer" of additional 32-bit support libraries as well.
These libraries are taken from standard Slackware 32-bit packages using the
scripts that are part of my "compat32-tools" package.
* You use the "massconvert32.sh" script for this conversion;
Suppose you have downloaded a local copy of 32-bit Slackware, and it is
available in the directory: /home/ftp/pub/slackware/slackware-15.0
then you would run the command:
# massconvert32.sh -i /home/ftp/pub/slackware/slackware-15.0/slackware
and the result is a number of subdirectories in your current directory,
containing "compat32" packages which you can install directly (they will not
conflict with your 64-bit packages).
* You can also instruct the "massconvert32.sh" script to download everything
you need from an external Slackware mirror, if you do not have (or do not
want to download) a complete local copy of Slackware:
# massconvert32.sh -u http://slackware.mirrors.tds.net/pub/slackware/slackware-15.0/slackware"
* Or if you are lazy you can just download the "slackware64-compat32" directory
in which I provide all these converted packages for you. It is a subdirectory
of the directory that contains the multilib gcc and glibc packages.
Adding 32-bit programs
======================
The scripts in the "compat32-tools" package need some explanation.
The package installs a detailed 'README' in the /usr/doc/compat32-tools-*/
directory that will help you on your way. Basically, you get three scripts
to run:
- /etc/profile.d/32dev.sh
This is the same script that also comes with Slamd64 and which configures
an environment that you need for compiling 32-bit software (by preferring
the 32-bit compilers and libraries over their 64-bit versions)
- /usr/sbin/convertpkg-compat32
This script takes a 32-bit Slackware package and converts it to a
'-compat32' package that you can install (using "installpkg") on
Slackware64, alongside a 64-bit version of the same software.
- /usr/sbin/massconvert32.sh
This script contains an internal list of essential 32-bit Slackware
packages. It uses the previously mentioned "convertpkg-compat32" script
to grab every package on its internal package list, and converts them
into '-compat32' packages. You will end up with about 60 MB of packages
that you must install next, using the command "upgradepkg --install-new".
These 'compat32' packages create a 32-bit compatibility layer on top of
Slackware64.
The "massconvert32.sh" script can either download these 32-bit packages
from an external Slackware mirror, or else it can use a local Slackware
mirror if you have one in your LAN.
Optionally you can specify an output directory for the newly created
packages; by default they will be created in your current directory.
Running 32-bit programs
=======================
Running a 32-bit program is easy after the above system preparation - just
download, install and start it. You may find that you still miss a 32-bit
Slackware library; in that case, use the "convertpkg-compat32" script to
convert the original 32-bit Slackware package and install the resulting
32bit compatibility package on Slackware64.
Compiling 32-bit programs
=========================
In case you need to compile a 32-bit program (wine and grub are two examples
of open source programs that are 32-bit only) you first configure your
shell environment by running the command:
. /etc/profile.d/32dev.sh
Note the 'dot' in front of the filename - that is actually part of the
commandline! It will change or create several environment variables so
that 32-bit versions of binaries are preferred. Once you are done compiling
32-bit software, you should logout of your root shell in order to get rid of
the modified build environment.
In this changed environment, you will be able to use standard SlackBuilds to
build 32-bit packages for Slackware64.
There's a couple of things to keep in mind:
(1) You have to define the ARCH variable as 'i586' because even on your
'x86_64' computer you are compiling a 32-bit program!
This is related to the triplet of '$ARCH-slackware-linux' which
is normally used in the 'configure' command.
(a) As an exception, you will have to compile the 'wine' package with
'ARCH=x86_64' because you will install this package directly on
your multilib computer without converting to a 'compat32' package.
(2) If you want to install this 32-bit package on Slackware64-multilib,
you will have to convert it to a 'compat32' package:
# convertpkg-compat32 -i /path/to/your/fresh/foo-VERSION-i586-BUILD.tgz
# upgradepkg --install-new /tmp/foo-compat32-VERSION-x86_64-BUILDcompat32.txz
Keeping your multilib up-to-date
================================
If you use slackpkg to keep your Slackware uptodate, then you may benefit from
adding slackpkg+ (http://slakfinder.org/slackpkg+.html), an extension to
slackpkg which allows you to manage package updates, not just for Slackware,
but also for 3rd party repositories which adhere to the Slackware repository
format.
The Multilib repository is compatible with slackpkg+, and its configuration
file has instructions on how to enable multilib repository support.
If you do not use slackpkg, then your best option is to keep a local mirror
of the multilib repository for your Slackware version, and regularly run:
# cd /path/to/multilib/slackware_version_dir/
# upgradepkg --install-new *.t?z
# upgradepkg --install-new slackware64-compat32/*-compat32/*.t?z
If you do use slackpkg but do not want to add slackpkg+ then you need to do
the above but also take precautions so that slackpkg does not remove or
replace the multilib packages. Add these lines to /etc/slackpkg/blacklist to
prevent this behaviour:
[0-9]+alien
[0-9]+compat32
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.
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).
Have fun!
Eric

View file

@ -0,0 +1,246 @@
aaa_libraries-compat32
attr-compat32
bzip2-compat32
cracklib-compat32
dbus-compat32
e2fsprogs-compat32
elogind-compat32
eudev-compat32
libgudev-compat32
libpwquality-compat32
lzlib-compat32
openssl-solibs-compat32
openssl10-solibs-compat32
pam-compat32
plzip-compat32
util-linux-compat32
xz-compat32
cdparanoia-compat32
cups-compat32
cups-filters-compat32
flac-compat32
lm_sensors-compat32
mariadb-compat32
mpg123-compat32
sqlite-compat32
libtool-compat32
llvm-compat32
opencl-headers-compat32
Mako-compat32
SDL2-compat32
SDL2_gfx-compat32
SDL2_image-compat32
SDL2_mixer-compat32
SDL2_net-compat32
SDL2_ttf-compat32
aalib-compat32
alsa-lib-compat32
alsa-oss-compat32
alsa-plugins-compat32
at-spi2-atk-compat32
at-spi2-core-compat32
atk-compat32
audiofile-compat32
brotli-compat32
cairo-compat32
dbus-glib-compat32
elfutils-compat32
esound-compat32
expat-compat32
ffmpeg-compat32
fftw-compat32
fluidsynth-compat32
freetype-compat32
fribidi-compat32
gamin-compat32
gc-compat32
gdk-pixbuf2-compat32
gdk-pixbuf2-xlib-compat32
giflib-compat32
glib2-compat32
gmp-compat32
gnome-keyring-compat32
gobject-introspection-compat32
graphene-compat32
graphite2-compat32
gst-plugins-bad-free-compat32
gst-plugins-base-compat32
gst-plugins-good-compat32
gst-plugins-libav-compat32
gstreamer-compat32
gtk+2-compat32
gtk+3-compat32
harfbuzz-compat32
icu4c-compat32
isl-compat32
jansson-compat32
jasper-compat32
json-c-compat32
json-glib-compat32
keyutils-compat32
lame-compat32
lcms-compat32
lcms2-compat32
libaio-compat32
libarchive-compat32
libasyncns-compat32
libbluray-compat32
libcaca-compat32
libcap-compat32
libcdio-compat32
libcdio-paranoia-compat32
libclc-compat32
libdbusmenu-compat32
libdvdnav-compat32
libedit-compat32
libexif-compat32
libffi-compat32
libglade-compat32
libgnt-compat32
libgphoto2-compat32
libidn-compat32
libidn2-compat32
libieee1284-compat32
libjpeg-turbo-compat32
libmad-compat32
libmng-compat32
libmpc-compat32
libnice-compat32
libnl3-compat32
libnotify-compat32
libnsl-compat32
libnss_nis-compat32
libogg-compat32
libpcap-compat32
libpng-compat32
librsvg-compat32
libsamplerate-compat32
libsigc++3-compat32
libsndfile-compat32
libssh-compat32
libtasn1-compat32
libtheora-compat32
libtiff-compat32
libunistring-compat32
libunwind-compat32
liburing-compat32
libusb-compat32
libvorbis-compat32
libvpx-compat32
libwebp-compat32
libxkbcommon-compat32
libxml2-compat32
libxslt-compat32
lmdb-compat32
lz4-compat32
lzo-compat32
mozilla-nss-compat32
ncurses-compat32
ocl-icd-compat32
openal-soft-compat32
openexr-compat32
openjpeg-compat32
opus-compat32
orc-compat32
pango-compat32
pcre-compat32
pcre2-compat32
pipewire-compat32
polkit-compat32
popt-compat32
pulseaudio-compat32
python-six-compat32
qt-compat32
qt5-compat32
readline-compat32
rpcsvc-proto-compat32
sbc-compat32
sdl-compat32
slang-compat32
speex-compat32
speexdsp-compat32
startup-notification-compat32
svgalib-compat32
taglib-compat32
talloc-compat32
tdb-compat32
tevent-compat32
v4l-utils-compat32
vid.stab-compat32
wavpack-compat32
woff2-compat32
xxHash-compat32
zlib-compat32
zstd-compat32
c-ares-compat32
curl-compat32
cyrus-sasl-compat32
gnutls-compat32
krb5-compat32
libgcrypt-compat32
libgpg-error-compat32
libtirpc-compat32
nettle-compat32
openldap-compat32
openssl-compat32
p11-kit-compat32
samba-compat32
egl-wayland-compat32
eglexternalplatform-compat32
fontconfig-compat32
freeglut-compat32
glew-compat32
glu-compat32
intel-vaapi-driver-compat32
libFS-compat32
libICE-compat32
libSM-compat32
libX11-compat32
libXScrnSaver-compat32
libXau-compat32
libXaw-compat32
libXcomposite-compat32
libXcursor-compat32
libXdamage-compat32
libXdmcp-compat32
libXevie-compat32
libXext-compat32
libXfixes-compat32
libXfont2-compat32
libXfontcache-compat32
libXft-compat32
libXi-compat32
libXinerama-compat32
libXmu-compat32
libXp-compat32
libXpm-compat32
libXrandr-compat32
libXrender-compat32
libXres-compat32
libXt-compat32
libXtst-compat32
libXv-compat32
libXvMC-compat32
libXxf86dga-compat32
libXxf86misc-compat32
libXxf86vm-compat32
libdmx-compat32
libdrm-compat32
libepoxy-compat32
libfontenc-compat32
libglvnd-compat32
libinput-compat32
libpciaccess-compat32
libpthread-stubs-compat32
libva-compat32
libvdpau-compat32
libwacom-compat32
libxcb-compat32
libxshmfence-compat32
mesa-compat32
pixman-compat32
vulkan-sdk-compat32
wayland-compat32
xcb-util-compat32
xorgproto-compat32
sane-compat32

View file

@ -0,0 +1,13 @@
aaa_glibc-solibs
compat32-tools
gcc
gcc-brig
gcc-g++
gcc-gdc
gcc-gfortran
gcc-gnat
gcc-go
gcc-objc
glibc
glibc-i18n
glibc-profile