Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версияСледующая версияСледующая версия справа и слева |
ru:slackware:multilib [2016/05/29 09:06 (UTC)] – Sync with En bormant | ru:slackware:multilib [2017/07/07 19:34 (UTC)] – Sync with En bormant |
---|
* //glibc// (такой glibc, который поддерживает //исполнение// как 32-ных, так и 64-битных бинарных файлов), и | * //glibc// (такой glibc, который поддерживает //исполнение// как 32-ных, так и 64-битных бинарных файлов), и |
* //gcc// (способный //компилировать// в 32-битные бинарные файлы наравне с 64-битными). | * //gcc// (способный //компилировать// в 32-битные бинарные файлы наравне с 64-битными). |
- Затем взять из 32-битной Slackware библиотеки и установить их в 64-битной Slackware, что завершит процесс создания 32-битного программного слоя. | - Затем взять из 32-битной Slackware библиотеки и вместе с их 64-битными версиями установить их в 64-битной Slackware, что завершит процесс создания 32-битного программного слоя совместимости. |
| |
<note>Slackware для архитектуры x86_64 (или для краткости «//Slackware64//») является чистой 64-битной операционной системой, но легко обновляется до мультибииблиотечной. //Изначально в Slackware64 возможно компилировать и исполнять только 64-битные бинарные файлы//.</note> | |
| |
Когда вышла Slackware64, она имела преимущество перед прочими существовавшими 64-битными «форками». Последние добавляли 32-битный слой совместимости путём перекомпиляции множества своих пакетов как 32-битных бинарников. С другой стороны, Slackware — это дистрибутив, состоящий из 32-битного и 64-битного выпуска, разрабатываемых параллельно. Это означает, что вам не нужно компилировать 32-битные пакеты с нуля для добавления мультибиблиотечности в 64-битную систему. Можно просто взять их из дерева пакетов 32-битной Slackware!\\ Это было одной из причин не добавлять в Slackware64 полную мультибиблиотечность — мы создали необходимые условия, но если пользователю нужна мультибиблиотечность, то ему нужно действовать самостоятельно. \\ В разделе [[#подробные_инструкции | ниже]] я объясню, как взять 32-битный пакет Slackware (скажем, пакет «mesa») и перепаковать его содержимое в пакет «mesa-compat32», который можно установить непосредственно в Slackware64. | Когда вышла Slackware64, она имела преимущество перед прочими существовавшими 64-битными «форками». Последние добавляли 32-битный слой совместимости путём перекомпиляции множества своих пакетов как 32-битных бинарников. С другой стороны, Slackware — это дистрибутив, состоящий из 32-битного и 64-битного выпуска, разрабатываемых параллельно. Это означает, что вам не нужно компилировать 32-битные пакеты с нуля для добавления мультибиблиотечности в 64-битную систему. Можно просто взять их из дерева пакетов 32-битной Slackware!\\ Это было одной из причин не добавлять в Slackware64 полную мультибиблиотечность — мы создали необходимые условия, но если пользователю нужна мультибиблиотечность, то ему нужно действовать самостоятельно. \\ В разделе [[#подробные_инструкции | ниже]] я объясню, как взять 32-битный пакет Slackware (скажем, пакет «mesa») и перепаковать его содержимое в пакет «mesa-compat32», который можно установить непосредственно в Slackware64. |
| |
| <note>Slackware для архитектуры x86_64 (или для краткости «//Slackware64//») является чистой 64-битной операционной системой, но легко обновляется до мультибииблиотечной. //Изначально в Slackware64 возможно компилировать и исполнять только 64-битные бинарные файлы//.</note> |
| |
| |
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> |
Этот раздел содержит основные инструкции по добавлению полной поддержки мультибиблиотечности в вашу систему Slackware64. Если хотите разобраться в процессе более подробно или нужна информация о том, как компилировать 32-битные программы в Slackware64, прочтите и последующие разделы.\\ Обратите внимание, знак «#» в начале команд означает //приглашение суперпользователя root//. | Этот раздел содержит основные инструкции по добавлению полной поддержки мультибиблиотечности в вашу систему Slackware64. Если хотите разобраться в процессе более подробно или нужна информация о том, как компилировать 32-битные программы в Slackware64, прочтите и последующие разделы.\\ Обратите внимание, знак «#» в начале команд означает //приглашение суперпользователя root//. |
| |
* Загрузите пакеты с моего сайта (я давал ссылку в [[#получение_мультибиблиотечных_пакетов | предыдущем разделе]]), в примере ниже использована ссылка на зеркало. Допустим, используется Slackware 14.1. Выполните: <code> | * Загрузите пакеты с моего сайта (я давал ссылку в [[#получение_мультибиблиотечных_пакетов | предыдущем разделе]]), в примере ниже использована ссылка на зеркало. Допустим, используется Slackware 14.2. Выполните: <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> |
</code>которая установит все 32-битные пакеты Slackware (или обновит их, если установлены более старые их версии, например, при обновлении до новой версии Slackware). Это всё! | </code>которая установит все 32-битные пакеты Slackware (или обновит их, если установлены более старые их версии, например, при обновлении до новой версии Slackware). Это всё! |
* Если каталог //slackware64-compat32// отсутствует, то либо его не загрузили, либо зеркало его не содержало. В этом случае придётся выполнить конвертацию 32-битных пакетов самостоятельно. Несложно, но займёт какое-то время: | * Если каталог //slackware64-compat32// отсутствует, то либо его не загрузили, либо зеркало его не содержало. В этом случае придётся выполнить конвертацию 32-битных пакетов самостоятельно. Несложно, но займёт какое-то время: |
* Быстрее всего, если у вас есть локальный каталог с оригинальными 32-битными пакетами Slackware (//локальное зеркало//). Купившие официальный DVD Slackware могут использовать его: он двусторонний и 32-битная Slackware на одной из сторон. __В этом примере__ будем считать, что локальное зеркало дерева 32-битной Slackware доступно в каталоге «''/home/ftp/pub/slackware/slackware-14.1/slackware/''».\\ Непосредственно в нём должны быть подкаталоги «a», «ap», «d», «l», «n», «x». (Если смонтировали DVD Slackware, возможный каталог «''/media/SlackDVD/slackware/''», но в примерах команд ниже я его не буду использовать). | * Быстрее всего, если у вас есть локальный каталог с оригинальными 32-битными пакетами Slackware (//локальное зеркало//). Купившие официальный DVD Slackware могут использовать его: он двусторонний, и 32-битная Slackware на одной из сторон. __В этом примере__ будем считать, что локальное зеркало дерева 32-битной Slackware доступно в каталоге «''/home/ftp/pub/slackware/slackware-14.2/slackware/''».\\ Непосредственно в нём должны быть подкаталоги «a», «ap», «d», «l», «n», «x». (Если смонтировали DVD Slackware, возможный каталог «''/media/SlackDVD/slackware/''», но в примерах команд ниже я его не буду использовать). |
* Создайте новый пустой каталог (назовём его «slackware64-compat32») и перейдите в него: <code> | * Создайте новый пустой каталог (назовём его «slackware64-compat32») и перейдите в него: <code> |
# mkdir slackware64-compat32 ; cd slackware64-compat32 | # mkdir slackware64-compat32 ; cd slackware64-compat32 |
</code> | </code> |
* Выполните следующую команду для создания набора 32-битных пакетов совместимости, используя в качестве параметра каталог с официальными 32-битными пакетами Slackware: <code> | * Выполните следующую команду для создания набора 32-битных пакетов совместимости, используя в качестве параметра каталог с официальными 32-битными пакетами Slackware: <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> |
* Предыдущий шаг займёт какое-то время. По завершении установите 90Мб свежеконвертированных 32-битных пакетов Slackware, созданных в подкаталогах //текущего каталога//: <code> | * Предыдущий шаг займёт какое-то время. По завершении установите 90Мб свежеконвертированных 32-битных пакетов Slackware, созданных в подкаталогах //текущего каталога//: <code> |
[0-9]+compat32</code> С другой стороны, если используете расширение slackpkg [[http://slakfinder.org/slackpkg+.html|slackpkg+]], то **не** включайте эти пакеты в чёрный список, иначе slackpkg+ не сможет ими управлять!</note> | [0-9]+compat32</code> С другой стороны, если используете расширение slackpkg [[http://slakfinder.org/slackpkg+.html|slackpkg+]], то **не** включайте эти пакеты в чёрный список, иначе slackpkg+ не сможет ими управлять!</note> |
| |
<note tip>Если используете Slackware 13.1 или новее и загрузили пакет compat32-tools для этого выпуска, сценарий //massconvert32.sh// может использовать удалённый сервер веб для загрузки с него 32-битных пакетов Slackware, вместо локального зеркала Slackare или DVD. Используйте параметр «-u» для указания URL, как в примере ниже: <code> | <note tip>Если используете Slackware 13.1 или новее и загрузили пакет compat32-tools для этого выпуска, сценарий //massconvert32.sh// может загрузить 32-битные пакеты Slackware с удалённого веб-сервера, вместо локального зеркала Slackare или DVD. Используйте параметр «-u» для указания URL, как в примере ниже: <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> |
| |
* glibc-solibs-2.17_multilib-x86_64-10alien.txz | * glibc-solibs-2.17_multilib-x86_64-10alien.txz |
| |
| ====Slackware64 14.2==== |
| |
| * Комплект компиляторов gcc: |
| * 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 |
| * Библиотеки GNU libc: |
| * 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==== |
| |
* Комплект компиляторов gcc: | * Комплект компиляторов gcc: |
* 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 |
* Библиотеки GNU libc: | * Библиотеки GNU libc: |
* 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 | |
| |
Есть один дополнительный пакет для установки программой «installpkg»: | <note>После обновления до gcc 7 пакета ''gcc-java'' больше не существует, так как его разработка прекращена.</note> |
| <note>Пакет ''glibc-zoneinfo'' не содержит кода и поэтому не входит в мультилиб. Этот пакет устанавливается из 64-битной Slackware.</note> |
| |
| ====Все версии Slackware==== |
| |
| Есть один дополнительный пакет для установки программой «installpkg». Актуальная версия для каждого из выпусков Slackware может отличаться, но пакет находится в том же каталоге, что и мультибиблиотечные версии ''gcc'' и ''glibc'': |
| |
* «32-битный инструментарий» (сценарий, облегчающий создание 32-битных пакетов) | * «32-битный инструментарий» (сценарий, облегчающий создание 32-битных пакетов) |
* compat32-tools-3.7-noarch-1alien.tgz | * compat32-tools-3.7-noarch-1alien.tgz |
| |
<note>В Slamd64 имеются отдельные мультибиблиотечные 64-битные и 32-битные пакеты gcc/glibc.\\ Тем не менее, я считаю, что правильнее сохранять эти основные мультибиблиотечные пакеты неразделёнными. Я последовал концепции, используемой в пакете //binutils// из самой Slackware64, который сочетает 64-битные и 32-битные мультибиблиотечные возможности в едином пакете.</note> | |
| |
| |
Потребуются дополнительные меры предосторожности для удаления ненужных/нежелательных файлов из 32-битных пакетов перед их установкой. Нужны 32-битные пакеты, которые не конфликтуют с тем, что уже есть в 64-битной Slackware. Отсюда и название «32-битный пакет совместимости». | Потребуются дополнительные меры предосторожности для удаления ненужных/нежелательных файлов из 32-битных пакетов перед их установкой. Нужны 32-битные пакеты, которые не конфликтуют с тем, что уже есть в 64-битной Slackware. Отсюда и название «32-битный пакет совместимости». |
| |
Я решил, что если 32-битные пакеты совместимости для Slackware буду делать я сам, это будет пустой тратой загрузочного канала. В конце концов, вероятно, у вас уже есть купленный DVD Slackware 14.1, то есть уже имеется в наличии и 64-битная, и 32-битная версии Slackware... в противном случае дерево пакетов 32-битной Slackware, безусловно, доступно для свободной загрузки ;-) | Я решил, что если 32-битные пакеты совместимости для Slackware буду делать я сам, это будет пустой тратой загрузочного канала. В конце концов, вероятно, у вас уже есть купленный DVD Slackware 14.2, то есть уже имеется в наличии и 64-битная, и 32-битная версии Slackware... в противном случае дерево пакетов 32-битной Slackware, безусловно, доступно для свободной загрузки ;-) |
| |
Вместо этого я написал несколько сценариев (часть кода написана Fred Emmott для небезызвестной [[http://slamd64.com/ | Slamd64]]) и обернул их в пакет «//compat32-tools//». Их назначение — позволить вам самостоятельно извлечь необходимое из произвольного 32-битного пакета Slackware и и использовать его для создания нового пакета, который можно безопасно устанавливать на 64-битной Slackware. | Вместо этого я написал несколько сценариев (часть кода написана Fred Emmott для небезызвестной [[http://slamd64.com/ | Slamd64]]) и обернул их в пакет «//compat32-tools//». Их назначение — позволить вам самостоятельно извлечь необходимое из произвольного 32-битного пакета Slackware и и использовать его для создания нового пакета, который можно безопасно устанавливать на 64-битной Slackware. |
libtool | libtool |
llvm | llvm |
| opencl-headers |
| |
# Набор L/: | # Набор L/: |
| |
| SDL2 |
alsa-lib | alsa-lib |
alsa-oss | alsa-oss |
esound | esound |
expat | expat |
| ffmpeg |
fftw | fftw |
freetype | freetype |
fribidi | fribidi |
gamin | gamin |
| gc |
gdk-pixbuf2 | gdk-pixbuf2 |
giflib | giflib |
gst-plugins-good | gst-plugins-good |
gst-plugins-good0 | gst-plugins-good0 |
| gst-plugins-libav |
gstreamer | gstreamer |
gstreamer0 | gstreamer0 |
jasper | jasper |
json-c | json-c |
| lame |
lcms | lcms |
lcms2 | lcms2 |
libart_lgpl | libart_lgpl |
libasyncns | libasyncns |
| libclc |
| libedit |
libelf | libelf |
libexif | libexif |
libmpc | libmpc |
libnl3 | libnl3 |
| libnotify |
libogg | libogg |
libpcap | libpcap |
libtermcap | libtermcap |
libtiff | libtiff |
| libunistring |
libusb | libusb |
libvorbis | libvorbis |
lzo | lzo |
ncurses | ncurses |
| ocl-icd |
openjpeg | openjpeg |
orc | orc |
popt | popt |
pulseaudio | pulseaudio |
| python-six |
qt | qt |
readline | readline |
openssl | openssl |
p11-kit | p11-kit |
| samba |
| |
# Набор X/: | # Набор X/: |
libXfixes | libXfixes |
libXfont | libXfont |
| libXfont2 |
libXfontcache | libXfontcache |
libXft | libXft |
libepoxy | libepoxy |
libfontenc | libfontenc |
| libinput |
libpciaccess | libpciaccess |
libva | libva |
mesa | mesa |
pixman | pixman |
| vulkan-sdk |
xcb-util | xcb-util |
| |
| |
* [[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/]] |
===== Благодарности ===== | ===== Благодарности ===== |
| |
* Большое спасибо Fred Emmott, создателю Slamd64 — оригинального неофициального 64-битного форка Slackware. Хотя Slackware64 и не основана на его работе, большая часть моих знаний про настройку 32-битной части мультибиблиотечного Linux из его записок в Slamd64. | * Большое спасибо Fred Emmott, создателю Slamd64 — оригинального неофициального 64-битного форка Slackware. Хотя Slackware64 и не основана на его работе, большая часть моих знаний про настройку 32-битной части мультибиблиотечного Linux из его записок в Slamd64.\\ Заметьте, что в Slamd64 имеются отдельные мультибиблиотечные 64-битные и 32-битные пакеты gcc/glibc. Тем не менее, я считаю, что правильнее сохранять эти основные мультибиблиотечные пакеты неразделёнными. Я последовал концепции, используемой в пакете //binutils// из самой Slackware64, который сочетает 64-битные и 32-битные мультибиблиотечные возможности в едином пакете. |
| |
* Cross Linux From Scratch.\\ Вики CLFS (http://trac.cross-lfs.org/wiki/read#ReadtheCrossLinuxFromScratchBookOnline) из разряда «обязательно к прочтению», если хотите разобраться с портированием Linux на новую архитектуру. Там я позаимствовал несколько идей, концепций и патчей при создании Slackware64 с нуля, и опять, когда я создавал с нуля свои мультибиблиотечные пакеты gcc/glibc (мой README по мультибиблиотечности-с-нуля доступен в каталоге ''./source''). | * Cross Linux From Scratch.\\ Вики CLFS (http://trac.cross-lfs.org/wiki/read#ReadtheCrossLinuxFromScratchBookOnline) из разряда «обязательно к прочтению», если хотите разобраться с портированием Linux на новую архитектуру. Там я позаимствовал несколько идей, концепций и патчей при создании Slackware64 с нуля, и опять, когда я создавал с нуля свои мультибиблиотечные пакеты gcc/glibc (мой README по мультибиблиотечности-с-нуля доступен в каталоге ''./source''). |