Ru slackware multilib
Welcome to the Slackware Documentation Project
Зміст
Додавання мультибібліотечності до Slackware x86_64
Стаття містить інструкції зі створення мультибібліотечної Slackware64. Мультибібліотечна 64-бітна система Linux здатна виконувати як 32-бітові, так і 64-бітові програми. Стандарт ієрархії файлової системи документує оптимальний метод досягнення чистого поділу між 64-бітним та 32-бітним програмами на одній системі. Розпочавши розробку Slackware64 (офіційного порту на архітектуру x86_64), ми вирішили дотримуватися цього стандарту. Тому Slackware64 була налаштована на пошук 64-бітних бібліотек у каталогах /lib64 та /usr/lib64. Ось чому я називаю Slackware64 готовою до мультибібліотечності - хоча 32-бітові бібліотеки будуть шукатися в /lib і /usr/lib, у постачанні Slackware64 немає 32-бітових програм. Потрібно зробити ще один крок (вам, користувачеві), перш ніж Slackware64 можна буде назвати "мультибібліотечною".
Це досягається так:
Коли вийшла Slackware64, вона мала перевагу перед іншими 64-бітними «форками», що існували. Останні додавали 32-бітовий шар сумісності шляхом перекомпіляції багатьох своїх пакетів як 32-бітових бінарників. З іншого боку, Slackware - це дистрибутив, що складається з 32-бітного та 64-бітного випуску, що розробляються паралельно. Це означає, що вам не потрібно компілювати 32-бітові пакети з нуля для додавання мультибібліотечності до 64-бітної системи. Можна просто взяти їх із дерева пакетів 32-бітної Slackware! Це було однією з причин не додавати в Slackware64 повну мультибібліотечність - ми створили необхідні умови, але якщо користувачеві потрібна мультибібліотечність, то йому потрібно діяти самостійно. У розділі нижче я поясню, яквзяти 32-бітовий пакет Slackware (скажімо, пакет "mesa") і перепакувати його вміст у пакет "mesa-compat32", який можна встановити безпосередньо в Slackware64.
Переваги мультибібліотечної системи
Я наведу кілька прикладів програм, які вимагають підтримки мультибібліотечності на 64-бітному Slackware, оскільки вони не запускаються або не компілюються на Slackwre64 без 32-бітового шару сумісності:
На щастя, підтримка 64 біт стає все більш поширеною. Досить довго хворим був Adobe, але врешті-решт вони випустили свій плагін Flash для браузера в 64-бітному варіанті. Sun (нині поглинений Oracle-ом) випустила 64-бітну версію свого плагіна Java для браузера. Ці дві події стали спусковим гачком для початку роботи над Slackware64.
Отримання мультибібліотечних пакетів
Можете завантажити набір мультибібліотечних пакетів та сценаріїв із мого сайту: http://slackware.com/
Підтримка мультибібліотечності в актуальному стані
Для підтримки актуальності раджу звернути увагу на ChangeLog (стрічка RSS), яку я підтримую для моїх мультибібліотечних пакетів. Зазвичай оновлюються пакети glibc and gcc протягом дня після оновлення їх у Slackware.
Остання команда покаже нові "compat32" пакети, наприклад нещодавно додані llvm-compat32 та orc-compat32.
Включення мультибібліотечної підтримки у Slackware64
Зразкові інструкції
Цей розділ містить основні інструкції щодо додавання повної підтримки мультибібліотечності до вашої системи Slackware64. Якщо хочете розібратися в процесі докладніше або потрібна інформація про те, як компілювати 32-бітові програми в Slackware64, прочитайте наступні розділи. Зверніть увагу, знак «#» на початку командозначає запрошення суперкористувача root.
після переходу до каталогу із завантаженими пакетами. Ця команда також встановить додатковий пакет "compat32-tools".
яка встановить усі 32-бітові пакети Slackware (або оновить їх, якщо встановлені старіші версії, наприклад, при оновленні до нової версії Slackware). Це все!
З іншого боку, якщо ви використовуєте розширення slackpkg slackpkg+, тоне включайте ці пакети в чорний список, інакше slackpkg+ не зможе ними керувати!
Детальні інструкції
Оновлення glibc та gcc
Наступні пакети glibc/gcc є заміною, не додаванням до стандартних пакетів Slackware. Для оновлення до моїх мультибібліотечних версій пакетів gcc та glibc використовуйте програму «upgradepkg». Вони потрібні для виконання (glibc) та складання (gcc) 32-бітових програм на комп'ютері з 64-бітною Slackware:
Slackware64 13.0
Slackware64 13.1
Slackware64 13.37
Slackware64 14.0
Slackware64 14.1
Slackware64 14.2
Slackware64 current
Усі версії Slackware
Є один додатковий пакет для інсталяції програмою «installpkg». Актуальна версія для кожного з випусків Slackware може відрізнятися, але пакет знаходиться в тому ж каталозі, що і мультибібліотечні версії gcc і glibc:
Додавання 32-бітових бібліотек Slackware
Оновлення glibc і gcc, описане в попередньому розділі, робить із «готової до мультибібліотечності» справді «мультибібліотечну» систему. Тепер все, що залишилося - це встановити 32-бітові версії системних компонентів Slackware, щоб встановлені та/або компілювані в подальшому програми змогли знайти всі необхідні їм 32-бітові бібліотеки.
Це трохи складніше, ніж взяти пакети з32-бітний Slackware і встановити їх у Slackware64:
Потрібні додаткові запобіжні заходи для видалення непотрібних/небажаних файлів з 32-бітних пакетів перед їх встановленням. Потрібні 32-бітові пакети, які не конфліктують із тим, що вже є у 64-бітній Slackware. Звідси і назва "32-бітовий пакет сумісності".
Я вирішив, що якщо 32-бітові пакети сумісності для Slackware буду робити я сам, це буде марною витратою завантажувального каналу. Зрештою, ймовірно, у вас вже є куплений DVD Slackware 14.2, тобто вже є в наявності і 64-бітна, і 32-бітна версії Slackware… інакше дерево пакетів 32-бітної Slackware, безумовно, доступне для вільного завантаження
Натомість я написав кілька сценаріїв (частина коду написана Fred Emmott для відомої Slamd64) і обернув їх у пакет «compat32-tools». Їх призначення – дозволити вам самостійно витягти необхідне з довільного 32-бітного пакету Slackware та використовувати його для створення нового пакета, який можна безпечно встановлювати на 64-бітному Slackware.
Пакет "compat32-tools" вимагає деяких пояснень. Прочитайте докладний файл «README» у каталозі /usr/doc/compat32-tools-*/ , він стане гарною підмогою. Пакет встановлює три корисні сценарії:
який створить новий пакет mesa-compat32-7.5-x86_64-1compat32.txz. Цей новий пакет (створений у каталозі /tmp, якщо не вказали інший каталог) заснований на колишньому 32-бітному пакеті, але не містить зайвого. Зміна базового імені пакета (mesa на mesa-compat32) дозволяє встановити цей новий пакет у Slackware64, де він зможе співіснувати з 64-бітним пакетом mesa, не перезаписуючи його файлів. Тимчасові файли, залишені сценарієм у каталозі « /tmp/package-
-compat32», можнавидалити.
В результаті приблизно 150 МБ нових пакетів будуть записані до новоствореного каталогу
Звичайно, при оновленні з попередніх версій цих пакетів (наприклад, при оновленні 64-бітної Slackware до нової версії) потрібно використовувати "upgradepkg -install-new" замість "installpkg":
Параметр «–install-new» потрібний, щоб додані до нової версії Slackware нові пакети compat32 були встановлені.
Запуск 32-бітових програм
Коли підготовка системи згідно з наведеними вище інструкціями завершена, запуск 32-бітових програм, що скомпілювалися, нескладний. Просто завантажте, встановіть та запускайте!
Іноді можуть траплятися програми, які потребують певних 32-бітових бібліотек, яких немає у системі. У цьому випадку знайдіть, який пакет у 32-бітній Slackware містить відсутню бібліотеку. Використовуйте сценарій convertpkg-compat32 для конвертації вихідного 32-бітного пакета та встановіть отриманий 32-бітовий «-compat32» пакет у Salckware64.
Компілювання 32-бітових програм
Якщо потрібно скомпілювати 32-бітну програму (wine і grub - пара прикладів виключно 32-бітових програм з відкритим вихідним кодом), спочатку налаштуйте оточення суперкористувача root запуском наступної команди:
Зверніть увагу на точку на початку рядка – це також частина команди. Використання точки еквівалентне команді source. Запуск команди змінює або створює кілька змінних оточення. У результаті при компіляції 32-бітові версії бінарних файлів отримають пріоритет над 64-бітними - запускатиметься 32-бітна компіляція. Зміни діють до виходу (logout) із шелла суперкористувача root.
У цьому зміненому оточенні можна використовувати стандартні SlackBuild-и для збирання 32-бітових пакетів для Slackware64.Декілька важливих зауважень:
Застереження
Графічним 32-бітним додаткам, що запускаються на мультибібліотечній системі, потрібні 32-бітові бібліотеки драйвера. Якщо не потрібні файли, можливі збої.
Пакети, перетворені massconvert32.sh
Ось список пакетів, перетворених на "-compat32" версії сценарієм massconvert32.sh . Зауважте, що деякі з цих пакетів не входять до Slackware 13.0 або 13.1, вони були додані в пізніших версіях Slackware, і тому стануть причиною повідомлення «* FAIL: package 'package_name' was not found!» (« * ЗБІЙ: пакет 'ім'я_пакета' не знайдено!») при запуску сценарію на ранніх версіях Slackware.