Следующая версия | Предыдущая версия |
ru:slackware:multilib [2013/03/17 19:30 (UTC)] – создано bormant | ru:slackware:multilib [2017/07/07 19:40 (UTC)] (текущий) – старая версия восстановлена (2017/07/07 19:39 (UTC)) bormant |
---|
<note warning>WIP: Work in progress. --[[wiki:user:bormant | bormant]]</note> | |
===== Добавление мультибиблиотечности в Slackware x86_64 ===== | ===== Добавление мультибиблиотечности в Slackware x86_64 ===== |
| |
| |
Это достигается следующим образом: | Это достигается следующим образом: |
— Сперва нужно переключиться на мультибиблиотечные версии | - Сначала нужно переключиться на мультибиблиотечные версии |
* //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-битного программного слоя совместимости. |
| |
| Когда вышла 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> | <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. | |
| |
| |
* [[http://winehq.org/ | Wine]] \\ Большинство программ для Windows по-прежнему 32-разрядные, для их запуска на Linux в Wine требуется 32-битная версия Wine. | * [[http://winehq.org/ | Wine]] \\ Большинство программ для Windows по-прежнему 32-разрядные, для их запуска на Linux в Wine требуется 32-битная версия Wine. |
* [[http://www.virtualbox.org/ | VirtualBox]] \\ Популярное программное обеспечение для виртуальных машин. Несмотря на открытый (частично) исходный код, все ещё нуждается в 32-битных библиотеках на 64-битной Slackware. | * [[http://www.virtualbox.org/ | VirtualBox]] \\ Популярное программное обеспечение для виртуальных машин. Несмотря на открытый (частично) исходный код, все ещё нуждается в 32-битных библиотеках на 64-битной Slackware. |
| * [[http://steampowered.com|Steam]] \\ Очень популярная игровая платформа по-прежнему требует [[http://www.slackware.com/~alien/slackbuilds/steamclient/|32-разрядного клиента]]. Большинство доступных игр также 32-разрядные. |
* [[http://www.skype.com/ | Skype]], [[http://www.citrix.com/lang/English/home.asp | Citrix client]], ... \\ Это проприетарные программы с закрытыми исходными кодами. Мы вынуждены зависеть от их разработчиков в части доступности 64-битных бинарников. Для этих программ пока подобного не случилось. | * [[http://www.skype.com/ | Skype]], [[http://www.citrix.com/lang/English/home.asp | Citrix client]], ... \\ Это проприетарные программы с закрытыми исходными кодами. Мы вынуждены зависеть от их разработчиков в части доступности 64-битных бинарников. Для этих программ пока подобного не случилось. |
| |
Наряду с несколькими файлами README (эта статья вики — расширенная версия одного из тех файлов) ниже каталога верхнего уровня «//multilib//» находятся подкаталоги для каждого 64-битного выпуска Slackware. Там же расположен каталог «//source//». Он содержит исходные тексты и сценарии SlackBuild.\\ Что вам действительно нужно — бинарные пакеты — доступны в каталоге //<номер_выпуска_slackware>// ниже каталога верхнего уровня. Каждый такой каталог содержит подкаталог «//slackware64-compat32//», где находится основной набор конвертированных 32-битных пакетов Slackware, готовых к установке на 64-битной Slackware. | Наряду с несколькими файлами README (эта статья вики — расширенная версия одного из тех файлов) ниже каталога верхнего уровня «//multilib//» находятся подкаталоги для каждого 64-битного выпуска Slackware. Там же расположен каталог «//source//». Он содержит исходные тексты и сценарии SlackBuild.\\ Что вам действительно нужно — бинарные пакеты — доступны в каталоге //<номер_выпуска_slackware>// ниже каталога верхнего уровня. Каждый такой каталог содержит подкаталог «//slackware64-compat32//», где находится основной набор конвертированных 32-битных пакетов Slackware, готовых к установке на 64-битной Slackware. |
| |
<note tip>Для поддержки актуальности советую обратить внимание на [[http://slackware.com/~alien/multilib/ChangeLog.txt | ChangeLog]] ([[http://slackware.com/~alien/multilib/ChangeLog.rss | лента RSS]]), которые я поддерживаю для моих мультибиблиотечных пакетов. Обычно обновляются пакеты //glibc and gcc// в течении дня после обновления их в Slackware. Также обратите внимание на [[#сторонние_ инструменты_поддержки | compat32pkg]] от Sėbastien Ballet, автоматизирующие этот процесс, как это делает slackpkg.</note> | |
| ===== Поддержка мультибиблиотечности в актуальном состоянии ===== |
| |
| Для поддержки актуальности советую обратить внимание на [[http://slackware.com/~alien/multilib/ChangeLog.txt | ChangeLog]] ([[http://slackware.com/~alien/multilib/ChangeLog.rss | лента RSS]]), которые я поддерживаю для моих мультибиблиотечных пакетов. Обычно обновляются пакеты //glibc and gcc// в течении дня после обновления их в Slackware. |
| |
| Автоматизация: |
| - Обратите внимание на [[#сторонние_инструменты_поддержки | compat32pkg]] от Sėbastien Ballet, автоматизирующий процесс наподобие slackpkg. |
| - Если для управления пакетами предпочитаете slackpkg, стоит обратить внимание на [[http://slakfinder.org/slackpkg+.html|slackpkg+]], расширение для slackpkg, управляющее пакетами, установленными из сторонних хранилищ, включая мультибиблиотечные пакеты. При правильной настройке, поддерржка сводится к запуску: <code> |
| # slackpkg update |
| # slackpkg upgrade multilib |
| # slackpkg install multilib |
| </code> Последняя команда покажет новые «compat32» пакеты, например недавно добавленные llvm-compat32 и orc-compat32. |
| * Вот как выглядит типичная настройка для Slackware-current с использованием тестового хранилища KDE от Alien BOB. PKGS_PRIORITY задает приоритет пакетов gcc и glibc из мультибиблиотечного хранилища перед официнальным деревом Salckaware. Ключевое слово «multilib», которое задает имя хранилища, должно соответствовать используемому в приведенных выше командах «slackpkg». Слово «multilib» выбрано произвольно, с тем же успехом можно было везде использовать «compat32». \\ Ниже приведено примерное содержимое файла «/etc/slackpkg/slackpkgplus.conf»: <file> |
| SLACKPKGPLUS=on |
| VERBOSE=1 |
| ALLOW32BIT=off |
| USEBL=1 |
| WGETOPTS="--timeout=5 --tries=1" |
| GREYLIST=on |
| PKGS_PRIORITY=( multilib restricted alienbob ktown ) |
| REPOPLUS=( slackpkgplus multilib restricted alienbob ktown ) |
| MIRRORPLUS['multilib']=http://bear.alienbase.nl/mirrors/people/alien/multilib/current/ |
| MIRRORPLUS['alienbob']=http://bear.alienbase.nl/mirrors/people/alien/sbrepos/current/x86_64/ |
| MIRRORPLUS['restricted']=http://bear.alienbase.nl/mirrors/people/alien/restricted_sbrepos/current/x86_64/ |
| MIRRORPLUS['ktown']=http://bear.alienbase.nl/mirrors/alien-kde/current/latest/x86_64/ |
| MIRRORPLUS['slackpkgplus']=http://slakfinder.org/slackpkg+/ |
| </file> |
| |
| |
Этот раздел содержит основные инструкции по добавлению полной поддержки мультибиблиотечности в вашу систему Slackware64. Если хотите разобраться в процессе более подробно или нужна информация о том, как компилировать 32-битные программы в Slackware64, прочтите и последующие разделы.\\ Обратите внимание, знак «#» в начале команд означает //приглашение суперпользователя root//. | Этот раздел содержит основные инструкции по добавлению полной поддержки мультибиблиотечности в вашу систему Slackware64. Если хотите разобраться в процессе более подробно или нужна информация о том, как компилировать 32-битные программы в Slackware64, прочтите и последующие разделы.\\ Обратите внимание, знак «#» в начале команд означает //приглашение суперпользователя root//. |
| |
* Загрузите пакеты с моего сайта (я давал ссылку в [[#получение_мультибиблиотечных_пакетов | предыдущем разделе]]), в примере ниже использована ссылка на зеркало. Допустим, используется Slackware 14.0. Выполните: <code> | * Загрузите пакеты с моего сайта (я давал ссылку в [[#получение_мультибиблиотечных_пакетов | предыдущем разделе]]), в примере ниже использована ссылка на зеркало. Допустим, используется Slackware 14.2. Выполните: <code> |
# SLACKVER=14.0 | # SLACKVER=14.2 |
# mkdir multilib | # mkdir multilib |
# cd multilib | # cd multilib |
# lftp -c "open http://taper.alienbase.nl/mirrors/people/alien/multilib/ ; mirror ${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-13.37/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-13.37/slackware/ | # massconvert32.sh -i /home/ftp/pub/slackware/slackware-14.2/slackware/ |
</code> | </code> |
* Предыдущий шаг займёт какое-то время. По завершении установите 90Мб свежеконвертированных 32-битных пакетов Slackware, созданных в подкаталогах //текущего каталога//: <code> | * Предыдущий шаг займёт какое-то время. По завершении установите 90Мб свежеконвертированных 32-битных пакетов Slackware, созданных в подкаталогах //текущего каталога//: <code> |
<note warning>Если используете пакетный менеджер, как //slackpkg//, придётся добавить все пакеты ''glibc'' и ''gcc'' в его чёрный список. Если не принять подобных мер предосторожности, есть риск, что пакетный менеджер случайно заменит мультибиблиотечные версии версиями из оригинальной чисто 64-битной Slackware!\\ Если используете Slackware 13.37 или новее, тогда slackpkg поддерживает регулярные выражения в файле чёрного списка. В этом случае будет достаточно одной строки в ''/etc/slackpkg/blacklist'' для внесения в чёрный список всех моих пакетов (включая мультибиблиотечные пакеты gcc и glibc и все пакеты ''compat32''): <code> | <note warning>Если используете пакетный менеджер, как //slackpkg//, придётся добавить все пакеты ''glibc'' и ''gcc'' в его чёрный список. Если не принять подобных мер предосторожности, есть риск, что пакетный менеджер случайно заменит мультибиблиотечные версии версиями из оригинальной чисто 64-битной Slackware!\\ Если используете Slackware 13.37 или новее, тогда slackpkg поддерживает регулярные выражения в файле чёрного списка. В этом случае будет достаточно одной строки в ''/etc/slackpkg/blacklist'' для внесения в чёрный список всех моих пакетов (включая мультибиблиотечные пакеты gcc и glibc и все пакеты ''compat32''): <code> |
[0-9]+alien | [0-9]+alien |
[0-9]+compat32</code></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-13.37/slackware | # massconvert32.sh -u http://someserver.org/path/to/slackware-14.2/slackware |
</code> </note> | </code> </note> |
| |
* gcc-objc-4.5.2_multilib-x86_64-2alien.txz | * gcc-objc-4.5.2_multilib-x86_64-2alien.txz |
* Библиотеки GNU libc: | * Библиотеки GNU libc: |
* glibc-2.13_multilib-x86_64-3alien.txz | * glibc-2.13_multilib-x86_64-7alien.txz |
* glibc-i18n-2.13_multilib-x86_64-3alien.txz | * glibc-i18n-2.13_multilib-x86_64-7alien.txz |
* glibc-profile-2.13_multilib-x86_64-3alien.txz | * glibc-profile-2.13_multilib-x86_64-7alien.txz |
* glibc-solibs-2.13_multilib-x86_64-3alien.txz | * glibc-solibs-2.13_multilib-x86_64-7alien.txz |
* glibc-zoneinfo-2.13_multilib-noarch-3alien.txz | |
| |
====Slackware64 current==== | ====Slackware64 14.0==== |
| |
| * Комплект компиляторов gcc: |
| * 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 |
| * Библиотеки GNU libc: |
| * glibc-2.15_multilib-x86_64-9alien.txz |
| * glibc-i18n-2.15_multilib-x86_64-9alien.txz |
| * glibc-profile-2.15_multilib-x86_64-9alien.txz |
| * glibc-solibs-2.15_multilib-x86_64-9alien.txz |
| |
| ====Slackware64 14.1==== |
| |
* До тех пор, пока отсутствует отдельный каталог «//current//», используйте файлы из каталога для наиболее свежего стабильного выпуска. | * До тех пор, пока отсутствует отдельный каталог «//current//», используйте файлы из каталога для наиболее свежего стабильного выпуска. |
| |
* Комплект компиляторов gcc: | * Комплект компиляторов gcc: |
* gcc-4.7.1_multilib-x86_64-1fix1_alien.txz | * gcc-4.8.2_multilib-x86_64-1alien.txz |
* gcc-g++-4.7.1_multilib-x86_64-1fix1_alien.txz | * gcc-g++-4.8.2_multilib-x86_64-1alien.txz |
* gcc-gfortran-4.7.1_multilib-x86_64-1fix1_alien.txz | * gcc-gfortran-4.8.2_multilib-x86_64-1alien.txz |
* gcc-gnat-4.7.1_multilib-x86_64-1fix1_alien.txz | * gcc-gnat-4.8.2_multilib-x86_64-1alien.txz |
* gcc-go-4.7.1_multilib-x86_64-1fix1_alien.txz | * gcc-go-4.8.2_multilib-x86_64-1alien.txz |
* gcc-java-4.7.1_multilib-x86_64-1fix1_alien.txz | * gcc-java-4.8.2_multilib-x86_64-1alien.txz |
* gcc-objc-4.7.1_multilib-x86_64-1fix1_alien.txz | * gcc-objc-4.8.2_multilib-x86_64-1alien.txz |
* Библиотеки GNU libc: | * Библиотеки GNU libc: |
* glibc-2.15_multilib-x86_64-6alien.txz | * glibc-2.17_multilib-x86_64-10alien.txz |
* glibc-i18n-2.15_multilib-x86_64-6alien.txz | * glibc-i18n-2.17_multilib-x86_64-10alien.txz |
* glibc-profile-2.15_multilib-x86_64-6alien.txz | * glibc-profile-2.17_multilib-x86_64-10alien.txz |
* glibc-solibs-2.15_multilib-x86_64-6alien.txz | * glibc-solibs-2.17_multilib-x86_64-10alien.txz |
* glibc-zoneinfo-2012e_2012e_multilib-noarch-6alien.txz | |
| |
Есть один дополнительный пакет для установки программой «installpkg»: | ====Slackware64 14.2==== |
| |
* «32-битный инструментарий» (сценарий, облегчающий создание 32-битных пакетов) | * Комплект компиляторов gcc: |
* compat32-tools-2.2-noarch-2alien.tgz | * 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 |
| |
<note>В Slamd64 имеются отдельные мультибиблиотечные 64-битные и 32-битные пакеты gcc/glibc.\\ Тем не менее, я считаю, что правильнее сохранять эти основные мультибиблиотечные пакеты неразделёнными. Я последовал концепции, используемой в пакете //binutils// из самой Slackware64, который сочетает 64-битные и 32-битные мультибиблиотечные возможности в едином пакете.</note> | ====Slackware64 current==== |
| |
| * Комплект компиляторов gcc: |
| * gcc-7.1.0_multilib-x86_64-2alien.txz |
| * gcc-brig-7.1.0_multilib-x86_64-2alien.txz |
| * gcc-g++-7.1.0_multilib-x86_64-2alien.txz |
| * gcc-gfortran-7.1.0_multilib-x86_64-2alien.txz |
| * gcc-gnat-7.1.0_multilib-x86_64-2alien.txz |
| * gcc-go-7.1.0_multilib-x86_64-2alien.txz |
| * gcc-objc-7.1.0_multilib-x86_64-2alien.txz |
| |
| * Библиотеки GNU libc: |
| * glibc-2.25_multilib-x86_64-3alien.txz |
| * glibc-i18n-2.25_multilib-x86_64-3alien.txz |
| * glibc-profile-2.25_multilib-x86_64-3alien.txz |
| * glibc-solibs-2.25_multilib-x86_64-3alien.txz |
| |
| <note>После обновления до gcc 7 пакета ''gcc-java'' больше не существует, так как его разработка прекращена.</note> |
| <note>Пакет ''glibc-zoneinfo'' не содержит кода и поэтому не входит в мультилиб. Этот пакет устанавливается из 64-битной Slackware.</note> |
| |
| ====Все версии Slackware==== |
| |
| Есть один дополнительный пакет для установки программой «installpkg». Актуальная версия для каждого из выпусков Slackware может отличаться, но пакет находится в том же каталоге, что и мультибиблиотечные версии ''gcc'' и ''glibc'': |
| |
| * «32-битный инструментарий» (сценарий, облегчающий создание 32-битных пакетов) |
| * compat32-tools-3.7-noarch-1alien.tgz |
| |
| |
=== Adding 32-bit Slackware libraries === | === Добавление 32-битных библиотек Slackware === |
| |
The upgrade of glibc and gcc which I described in the previous section changes your system from "//multilib-ready//" to "//multilib-enabled//".\\ Now, all you need to do is to install 32bit versions of Slackware's system software so that future 32bit programs that you are going to install and/or compile will find all the 32bit libraries they need in order to work. | Обновление glibc и gcc, описанное в предыдущем разделе, делает из «//готовой к мультибиблиотечности//» действительно «мультибиблиотечную» систему.\\ Теперь всё, что осталось — это установить 32-битные версии системных компонент Slackware, чтобы установленные и/или компилируемые в последующем программы смогли найти все необходимые им 32-битные библиотеки. |
| |
This is not as simple as grabbing 32bit Slackware packages and installing them in Slackware64: | Это несколько сложнее, чем взять пакеты из 32-битной Slackware и установить их в Slackware64: |
* In the first place, you will end up with multiple packages carrying the same name (two 'mesa' packages, two 'zlib' packages, etc...) which will be confusing to you as well as to the //slackpkg// package manager. | * Сперва нужно разобраться с одинаковыми именами пакетов (два пакета «mesa», два пакета «zlib» и т. д.), которые создадут путаницу для вас и для пакетного менеджера //slackpkg//. |
* And furthermore, if the 32bit package contains binaries (something like ''/usr/bin/foo''), they will overwrite their 64bit counterparts when you install the 32bit package on top. It will seriously mess up your system if that happens. | * Кроме того, если 32-битный пакет содержит бинарные файлы в (вроде ''/usr/lib/foo''), одноимённые 64-разрядные файлы будут перезаписаны при установке поверх 32-битного пакета и наоборот. Если такое случится, система будет серьёзно попорчена. |
| |
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". | Потребуются дополнительные меры предосторожности для удаления ненужных/нежелательных файлов из 32-битных пакетов перед их установкой. Нужны 32-битные пакеты, которые не конфликтуют с тем, что уже есть в 64-битной Slackware. Отсюда и название «32-битный пакет совместимости». |
| |
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 ;-) | Я решил, что если 32-битные пакеты совместимости для Slackware буду делать я сам, это будет пустой тратой загрузочного канала. В конце концов, вероятно, у вас уже есть купленный DVD Slackware 14.2, то есть уже имеется в наличии и 64-битная, и 32-битная версии Slackware... в противном случае дерево пакетов 32-битной 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. | Вместо этого я написал несколько сценариев (часть кода написана Fred Emmott для небезызвестной [[http://slamd64.com/ | Slamd64]]) и обернул их в пакет «//compat32-tools//». Их назначение — позволить вам самостоятельно извлечь необходимое из произвольного 32-битного пакета Slackware и и использовать его для создания нового пакета, который можно безопасно устанавливать на 64-битной Slackware. |
| |
This "//compat32-tools//" package needs some explanation.\\ Please read the detailed '//README//' file in the ''/usr/doc/compat32-tools-*/'' directory, it will help you on your way. These are the three useful scripts which the package installs: | Пакет «//compat32-tools//» требует некоторых пояснений.\\ Прочтите подробный файл «//README//» в каталоге ''/usr/doc/compat32-tools-*/'', он станет хорошим подспорьем. Пакет устанавливает три полезных сценария: |
| |
* ///etc/profile.d/32dev.sh//\\ This is the same script that comes with Slamd64. It reconfigures your shell environment so that it will be easier for you to compile 32-bit software (by preferring the 32-bit compilers and libraries over their 64-bit versions) | * ///etc/profile.d/32dev.sh//\\ Это тот же сценарий, что и в Slamd64. Он перенастраивает переменные окружения для облегчения компиляции 32-битных программ (путем установки предпочтений 32-битному компилятору и библиотекам перед 64-битными версиями) |
| |
* //convertpkg-compat32//\\ This script takes a 32-bit Slackware package and converts it to a '-compat32' package that you can safely install (using "installpkg") on Slackware64, alongside the 64-bit version of the same software package. For instance: suppose you need 32bit libraries that are in the mesa package. You take the mesa package from 32-bit Slackware (''x/mesa-7.5-i486-1.txz'') and then run <code> | * //convertpkg-compat32//\\ Этот сценарий принимает 32-битный пакет Slackware и собирает на его основе пакет «-compat32», который можно безопасно установить (при помощи «installpkg») на Slackware64, параллельно с 64-битной версией того же самого пакета. Например, допустим, потребовались 32-битные библиотеки из пакета «mesa». Берём пакет «mesa» из 32-битной Slackware (''x/mesa-7.5-i486-1.txz'') и выполняем <code> |
# convertpkg-compat32 -i /path/to/mesa-7.5-i486-1.txz | # convertpkg-compat32 -i /path/to/mesa-7.5-i486-1.txz |
</code> which will create a new package called ''mesa-compat32-7.5-x86_64-1.txz''. This new package (which is created in your ''/tmp'' directory unless you specified another destination) is basically the old 32bit package, but stripped from non-essential stuff. The changed basename (//mesa// becomes //mesa-compat32//) allows you to install this new package in Slackware64 where it will co-exist with the 64bit //mesa// package, not overwriting any files.\\ The script leaves temporary files in the directory "''/tmp/package-<prgnam>-compat32''" which you can safely delete. | </code> который создаст новый пакет ''mesa-compat32-7.5-x86_64-1compat32.txz''. Этот новый пакет (созданный в каталоге ''/tmp'', если не указали другой каталог) основан на прежнем 32-битном пакете, но не содержит лишнего. Смена базового имени пакета (//mesa// на //mesa-compat32//) позволяет установить этот новый пакет в Slackware64, где он сможет сосуществовать с 64-битным пакетом //mesa// не перезаписывая его файлов.\\ Временные файлы, оставленные сценарием в каталоге «''/tmp/package-<prgnam>-compat32''», можно удалить. |
| |
* //massconvert32.sh//\\ This script contains an internal list of what I consider the essential subset of 32-bit Slackware packages. It uses the above "//convertpkg-compat32//" script to grab every package that is on this internal list, and convert these into '-compat32' packages.\\ You need to run this script only once, for example like this (the example assumes that you mounted your 32bit Slackware DVD on ''/mnt/dvd''): <code> | * //massconvert32.sh//\\ Этот сценарий содержит внутренний список пакетов, которые я считаю основой 32-битной Slackware. Он использует упомянутый выше сценарий «//convertpkg-compat32//» для конвертации пакетов по внутреннему списку в «-compat32».\\ Этот сценарий достаточно запустить один раз, например, как показано ниже (в примере считается, что 32-битный DVD Slackware смонтирован в ''/mnt/dvd''): <code> |
# massconvert32.sh -i /mnt/dvd/slackware -d ~/compat32 | # massconvert32.sh -i /mnt/dvd/slackware -d ~/compat32 |
</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> В результате примерно 150 МБ новых пакетов будут записаны во вновь созданный каталог ''~/compat32'' (имя каталога выбрано для примера и, конечно, может быть произвольным). Эти пакеты содержат 32-битный костяк мультибиблиотечной системы Slackware64.\\ Установите их при помощи «''installpkg''», и они обеспечат вам достаточно полный 32[[http://example.com|Внешняя ссылка]]-битный слой совместимости поверх 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 your 64-bit Slackware to a newer release) then you do not use "''installpkg''" of course, but "''upgradepkg --install-new''" instead: <code> | </code> Конечно, при обновлении с предыдущих версий этих пакетов (например, при обновлении 64-битной Slackware до новой версии) нужно использовать «''upgradepkg --install-new''» вместо «''installpkg''»: <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> Параметр «//--install-new//» нужен, чтобы добавленные в новую версию Slackware новые пакеты //''compat32''// были установлены. |
| |
<note important>When installing the //''compat32''// packages you will notice that some will show errors about missing files in ''/etc''. This is "by design", and these errors can be ignored. These messages are caused by the fact that files in ''/etc'' are removed from a "-compat32" package during conversion (except for //pango// and //gtk+2//). I assume that files in ''/etc'' will already have been installed by the original 64bit packages.\\ An example of these "errors" for the ''cups-compat32'' package: <code> | <note important>При установке пакетов //''compat32''// можно заметить сообщения об отсутствующих файлах в ''/etc''. Так задумано, игнорируйте эти ошибки. Эти сообщения вызваны тем фактом, что файлы в ''/etc'' удаляются из пакетов «-compat32» при конвертации (за исключением //pango// и //gtk+2//). Я полагаю, что файлы в ''/etc'' уже установлены оригинальными 64-битными пакетами.\\ Вот пример подобных «ошибок» для пакета ''cups-compat32'': <code> |
Executing install script for cups-compat32-1.3.11-x86_64-1.txz. | Executing install script for cups-compat32-1.3.11-x86_64-1.txz. |
install/doinst.sh: line 5: [: too many arguments | install/doinst.sh: line 5: [: too many arguments |
</code></note> | </code></note> |
| |
<note important>If you were considering to use the ''convertpkg-compat32'' script to convert a **non-Slackware** package to a //-compat32// package, I must strongly advise against this. The script is written with a single purpose and that is to make 32bit versions of the official Slackware64 binaries/libraries available in a multilib setup. As such, the script will remove a lot of stuff that is present in the original 32bit package - stuff which is expected to have been installed as part of the 64bit version of the package.\\ In almost all cases where you have downloaded a non-Slackware 32bit package and want to make it work on Slackware64, the best way is to find the sources and build a 64bit version of the package. Alternatively, just //install the original// 32bit package instead of trying to "convert it" and then run it from the commandline to find out any missing 32bit libraries you may still have to extract from an official Slackware package.</note> | <note important>Если собрались использовать сценарий ''convertpkg-compat32'' для конвертации в пакет //-compat32// пакта **не из Slackware**, настоятельно не рекомендую этого делать. Сценарий написан для единственной цели — сделать 32-битные версии официальных бинарных файлов/библиотек Slackware доступными для мультибиблиотечной установки. Поэтому сценарий оставляет в 32-битном пакете только необходимое для слоя совместимости, полагая, что всё остальное установлено в составе 64-битного пакета.\\ Если вы загрузили 32-битный пакет не-для-Slackware и хотите использовать его в Slackware64, в подавляющем большинстве случаев наилучшим вариантом будет загрузка исходного кода и сборка 64-битной версии пакета. Либо //устанавливайте оригинальный// 32-битный пакет вместо того, чтобы «конвертировать его» и затем запускать из командной строки для выяснения недостающих 32-битных библиотек, которые, возможно, придётся извлекать из официальных пакетов Slackware.</note> |
| |
| |
===== Running 32-bit programs ===== | ===== Запуск 32-битных программ ===== |
| |
Running a pre-compiled 32-bit program is easy after you've done the above system preparation. Just download, install and run it! | Когда подготовка системы согласно приведённым выше инструкциям завершена, запуск скомпилированных 32-битных программ несложен. Просто загрузите, установите и запускайте! |
| |
At times, you may run into a program that requires a certain 32-bit Slackware library that you do not yet have available. In that case, find out which 32bit Slackware package contains this missing library. Use the "//convertpkg-compat32//" script to convert that original 32bit Slackware package and install the resulting 32bit "//compatibility//" package on Slackware64. | Время от времени могут попадаться программы, требующие определённых 32-битных библиотек, которых нет в системе. В этом случае найдите, какой пакет в 32-битной Slackware содержит отсутствующую библиотеку. Используйте сценарий «//convertpkg-compat32//» для конвертации исходного 32-битного пакета и установите полученный 32-битный «//-compat32//» пакет в Salckware64. |
| |
| |
===== Компилирование 32-битных программ ===== | ===== Компилирование 32-битных программ ===== |
| |
Если нужно скомпилировать 32-битную программу (wine и grub — пара примеров исключительно 32-битных программ с открытым исходным кодом), сперва настройте окружение запуском следующей команды:<code> | Если нужно скомпилировать 32-битную программу (wine и grub — пара примеров исключительно 32-битных программ с открытым исходным кодом), сперва настройте окружение суперпользователя root запуском следующей команды:<code> |
$ . /etc/profile.d/32dev.sh | # . /etc/profile.d/32dev.sh |
</code> Обратите внимание на точку перед именем файла — это тоже часть команды (синоним команды source)! Запуск команды изменяет или создаёт несколько переменных окружения. В результате при компиляции 32-битные версии бинарных файлов получат приоритет над 64-битными — будет запускаться 32-битная компиляция. Изменения действуют до выхода (logout) из шелла. | </code> Обратите внимание на точку в начале строки — это тоже часть команды. Использование точки эквивалентно команде source. \\ Запуск команды изменяет или создаёт несколько переменных окружения. В результате при компиляции 32-битные версии бинарных файлов получат приоритет над 64-битными — будет запускаться 32-битная компиляция. Изменения действуют до выхода (logout) из шелла суперпользователя root. |
| |
В этом изменённом окружении возможно использовать стандартные SlackBuild-ы для сборки 32-битных пакетов для Slackware64. Пара важных замечаний: | В этом изменённом окружении возможно использовать стандартные SlackBuild-ы для сборки 32-битных пакетов для Slackware64. Несколько важных замечаний: |
— Необходимо устанавливать переменную ARCH в значение «x86_64», несмотря на компиляцию 32-битной программы! \\ Это относится к //тройке// «$ARCH-slackware-linux», обычно используемой в команде «configure». Если установить ARCH, например, в значение «i486», то определение //CFLAGS// для этой архитектуры приведёт к ошибке ''gcc'' наподобие «//compiler can not create executables//» («//компилятор не может создавать исполняемые файлы//»). Это относится к дизайну сценариев SlackBuild. Вместо правки сценариев и изменения/удаления определения //GFLAGS// можно установить переменную ARCH в «x86_64» и сэкономить себе время. Реальную работу выполняет сценарий ''32dev.sh''. | - Необходимо устанавливать переменную ARCH в значение «i486», поскольку компилируется 32-битная программа хотя бы и на 64-битной системе! \\ Это относится к //тройке// «$ARCH-slackware-linux», обычно используемой в команде «configure». |
— Правка сценария SlackBuild потребуется, если он будет использовать каталоги «lib64/» при «$ARCH = x86_64». Придётся заставить его использовать каталоги «lib/». Обычно это достигается поиском определения:<code> | - В качестве исключения, компилировать пакет «wine» необходимо с «ARCH=x86_64», поскольку он будет установлен непосредственно на мультибиблиотечный компьютер без преобразования в пакет «compat32». |
LIBDIRSUFFIX="64" | - Для установки этого 32-битного пакета на мультибиблиотечную Slackware64, его нужно преобразовать в совместимый пакет «compat32»: \\ <code> |
</code> и заменой этой строки на <code> | # convertpkg-compat32 -i /path/to/your/fresh/foo-VERSION-i486-BUILD.txz |
LIBDIRSUFFIX="" | # upgradepkg --install-new /tmp/foo-compat32-VERSION-x86_64-BUILDcompat32.txz |
</code> | </code> |
| |
| |
<code bash> | <code bash> |
# Серия A/: | # Набор A/: |
| |
aaa_elflibs | aaa_elflibs |
| attr |
bzip2 | bzip2 |
cups | cups |
dbus | dbus |
e2fsprogs | e2fsprogs |
| eudev |
| libgudev |
openssl-solibs | openssl-solibs |
| udev |
util-linux | util-linux |
| xz |
| |
# Серия AP/: | # Набор AP/: |
| |
| cups |
| cups-filters |
| flac |
| mariadb |
mpg123 | mpg123 |
mysql | mysql |
| sqlite |
| |
# Серия D/: | # Набор D/: |
| |
libtool | libtool |
| llvm |
| opencl-headers |
| |
# Серия L/: | # Набор L/: |
| |
| SDL2 |
alsa-lib | alsa-lib |
alsa-oss | alsa-oss |
| alsa-plugins |
atk | atk |
audiofile | audiofile |
cairo | cairo |
dbus-glib | dbus-glib |
| elfutils |
esound | esound |
expat | expat |
| ffmpeg |
| fftw |
freetype | freetype |
| fribidi |
gamin | gamin |
| gc |
gdk-pixbuf2 | gdk-pixbuf2 |
| giflib |
glib2 | glib2 |
| gmp |
| gnome-keyring |
gtk+2 | gtk+2 |
gst-plugins-base | gst-plugins-base |
| gst-plugins-base0 |
gst-plugins-good | gst-plugins-good |
| gst-plugins-good0 |
| gst-plugins-libav |
gstreamer | gstreamer |
| gstreamer0 |
hal | hal |
| harfbuzz |
| icu4c |
jasper | jasper |
| json-c |
| lame |
lcms | lcms |
| lcms2 |
| libaio |
libart_lgpl | libart_lgpl |
| libasyncns |
| libclc |
| libedit |
libelf | libelf |
libexif | libexif |
| libffi |
libglade | libglade |
libgphoto2 | libgphoto2 |
libieee1284 | libieee1284 |
libjpeg | libjpeg |
| libjpeg-turbo |
libmng | libmng |
libmpc | libmpc |
| libnl3 |
| libnotify |
| libogg |
libpcap | libpcap |
libpng | libpng |
| libsamplerate |
libsndfile | libsndfile |
| libtasn1 |
libtermcap | libtermcap |
libtiff | libtiff |
| libunistring |
libusb | libusb |
| libvorbis |
libxml2 | libxml2 |
libxslt | libxslt |
| lzo |
ncurses | ncurses |
| ocl-icd |
| openjpeg |
| orc |
pango | pango |
popt | popt |
| pulseaudio |
| python-six |
qt | qt |
readline | readline |
| sbc |
sdl | sdl |
seamonkey-solibs | seamonkey-solibs |
| speexdsp |
| startup-notification |
svgalib | svgalib |
v4l-utils | v4l-utils |
zlib | zlib |
| |
# Серия N/: | # Набор N/: |
| |
curl | curl |
libgcrypt | libgcrypt |
libgpg-error | libgpg-error |
| libtirpc |
| nettle |
openldap-client | openldap-client |
openssl | openssl |
| p11-kit |
| samba |
| |
# Серия X/: | # Набор X/: |
| |
fontconfig | fontconfig |
| freeglut |
glew | glew |
| glu |
libFS | libFS |
libICE | libICE |
libXfixes | libXfixes |
libXfont | libXfont |
| libXfont2 |
libXfontcache | libXfontcache |
libXft | libXft |
libdmx | libdmx |
libdrm | libdrm |
| libepoxy |
libfontenc | libfontenc |
| libinput |
| libpciaccess |
| libva |
| libva-intel-driver |
| libvdpau |
libxcb | libxcb |
| libxshmfence |
mesa | mesa |
pixman | pixman |
| vulkan-sdk |
| xcb-util |
| |
| # Набор XAP/: |
| |
| sane |
</code> | </code> |
| |
| |
| ===== Зеркала мультибиблиотек ===== |
| |
| Загрузить мультибиблиотечные пакеты можно (как минимум) по этим адресам: |
| |
| * [[http://slackware.com/~alien/multilib/ | http://slackware.com/~alien/multilib/]] |
| * [[http://bear.alienbase.nl/mirrors/people/alien/multilib/ | http://bear.alienbase.nl/mirrors/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://slackbuilds.org/mirror/alien/multilib/| http://slackbuilds.org/mirror/alien/multilib/]] |
| |
===== Сторонние инструменты поддержки ===== | ===== Сторонние инструменты поддержки ===== |
| |
* Sėbastien Ballet написал инструмент //compat32pkg//. На [[http://compat32pkg.sourceforge.net/ | его сайте]] //compat32pkg// доступен для загрузки как и обширная документация по его использованию в Slackware64.\\ Цитата с сайта:\\ //«Compat32pkg — это автоматический инструмент, предоставляющий всё необходимое для управления (конвертации, установки, обновления, удаления) 32-битной части мультибиблиотечной slackware-64 от AlienBob-а, а также всех 32-битных пакетов из Slackware-32, в которых у пользователей 64-битного окружения может возникнуть потребность, таких как firefox, seamonkey, jre, ...»// | * Sėbastien Ballet написал инструмент //compat32pkg//. На [[http://compat32pkg.sourceforge.net/ | его сайте]] //compat32pkg// доступен для загрузки как и обширная документация по его использованию в Slackware64.\\ Цитата с сайта:\\ //«Compat32pkg — это автоматический инструмент, предоставляющий всё необходимое для управления (конвертации, установки, обновления, удаления) 32-битной части мультибиблиотечной slackware-64 от AlienBob-а, а также всех 32-битных пакетов из Slackware-32, в которых у пользователей 64-битного окружения может возникнуть потребность, таких как firefox, seamonkey, jre, ...»// |
| * Написанный Matteo Rossini (ник zerouno) с правками (в частности) от Sėbastien Ballet [[http://slakfinder.org/slackpkg+.html|slackpkg+]]. Это плагин для [[http://slackpkg.org/|slackpkg]] из Slackware, добавляющий возможность установки пакетов из внешних (сторонних) неофициальных репозиториев Slackware. Он хорошо подходит для добавления мультибиблиотечности в вашу 64-битную Slackware и поддержания её в актуальном состоянии. |
| |
| |
===== Благодарности ===== | ===== Благодарности ===== |
| |
* Большое спасибо 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''). |
| |
| |