Порівняння попередніх версійПопередня ревізіяНаступна ревізія | Попередня ревізіяНаступна ревізіяПо сторонах наступні версії |
uk:slackware:multilib [2016/11/15 09:37 (UTC)] – streamthreader | uk:slackware:multilib [2016/11/26 23:07 (UTC)] – streamthreader |
---|
===== Додавання Мульти-Бібліотечності в Slackware з архітектурою x86_64 ===== | ===== Додавання Multilib в Slackware з архітектурою x86_64 ===== |
| |
Це стаття містить інструкцію по тому, як створити //справжню мультибібліотечну// Slackware64. Мульти-бібліотечий 64-розрядний Linux, спроможний запускати як 64-х так і 32-х розрядні програми. У документі [[http://www.pathname.com/fhs/pub/fhs-2.3.html#LIB64 | Стандарт ієрархії файлової системи]] описується оптимальний метод розміщення окремо 32-х та 64-х бітного програмного забезпечення в одній системі. Коли була розпочата розробка порту "Slackware64" (офіційний порт під архітектуру [[wp>x86_64]]) ми вирішили адаптувати цей стандарт. Тому Slackware64 була налаштована шукати 64-х розрядні бібліотеки у директоріях ''/lib64'' та ''/usr/lib64''. Ось чому я називаю її Slackware64 "multilib-ready" - незважаючи на те, що 32-х розрядні бібліотеки вона буде шукати у директоріях ''/lib'' та ''/usr/lib'', 32-х розрядних програми чи бібліотек, з системою Slackware64 не постачається. Користувачу потрібно зробити декілька кроків, перед тим як систему можна буде називати Slackware64 "multilib-enabled". | Це стаття містить інструкцію по тому, як створити //справжню multilib// Slackware64. Multilib 64-розрядний Linux, спроможний запускати як 64-х так і 32-х розрядні програми. Документ [[http://www.pathname.com/fhs/pub/fhs-2.3.html#LIB64 | Стандарт ієрархії файлової системи]] описує метод, який є оптимальним для отримання чіткого розділення між 32-х та 64-х бітного програмного забезпечення в одній системі. Коли була розпочата розробка порту (адаптованої версії) "Slackware64" (офіційний порт під архітектуру [[wp>x86_64]]) ми вирішили адаптувати цей стандарт. Тому Slackware64 була налаштована шукати 64-х розрядні бібліотеки у директоріях ''/lib64'' та ''/usr/lib64''. Ось чому я називаю її Slackware64 "multilib-ready" - незважаючи на те, що 32-х розрядні бібліотеки вона буде шукати у директоріях ''/lib'' та ''/usr/lib'', 32-х розрядних програми чи бібліотек, з системою Slackware64 не постачається. Користувачу потрібно зробити декілька кроків, перед тим як систему можна буде називати Slackware64 "multilib-enabled". |
| |
Це досягається наступним чином: | Це досягається наступним чином: |
Крім декількох README файлів (ця стаття з Wiki є поліпшеною версією тих README файлів), ви знайдете по одній під-дерикторії на кожен 64-розрядний випуск Slackware, відносно кореневої папки "//multilib//". Також існує директорія під назвою "source". В папці "//source//" знаходиться сирцевий код пакунків, та скрипти для збірки SlackBuild.\\ Але дійсно цікаве - бінарні пакунки, які доступні в під-директорії //<slackware_номер_релізу>// яка знаходиться під кореневою директорією. Кожна така директорія містить під-директорію "//slackware64-compat32//" де ви знайдете перезібрані 32-розрядні пакунки, готові для встановлення на 64-х розрядну Slackware. | Крім декількох README файлів (ця стаття з Wiki є поліпшеною версією тих README файлів), ви знайдете по одній під-дерикторії на кожен 64-розрядний випуск Slackware, відносно кореневої папки "//multilib//". Також існує директорія під назвою "source". В папці "//source//" знаходиться сирцевий код пакунків, та скрипти для збірки SlackBuild.\\ Але дійсно цікаве - бінарні пакунки, які доступні в під-директорії //<slackware_номер_релізу>// яка знаходиться під кореневою директорією. Кожна така директорія містить під-директорію "//slackware64-compat32//" де ви знайдете перезібрані 32-розрядні пакунки, готові для встановлення на 64-х розрядну Slackware. |
| |
===== Слідкуйте, та користуйтесь найсвіжишим пакунком муьлти-бібліотечності ===== | ===== Підтримання пакунків муьлти-бібліотечності в актуальному стані ===== |
| |
Для того, щоб бути в курсі оновлень, Я наполягаю на тому, щоб ви слідкували за [[http://slackware.com/~alien/multilib/ChangeLog.txt | журналом змін]] ([[http://slackware.com/~alien/multilib/ChangeLog.rss|RSS новинами]]) які я обслуговую для моїх мульти-бібліотечних пакунків. За звичай, я //оновлюю пакунки glibc та gcc// на слідуючий день, після оновлення цих пакунків у Slackware. | Для того, щоб бути в курсі оновлень, Я наполягаю на тому, щоб ви слідкували за [[http://slackware.com/~alien/multilib/ChangeLog.txt | журналом змін]] ([[http://slackware.com/~alien/multilib/ChangeLog.rss|RSS новинами]]) які я обслуговую для моїх мульти-бібліотечних пакунків. За звичай, я //оновлюю пакунки glibc та gcc// наступного дня, після оновлення цих пакунків у Slackware. |
| |
Автоматизація: | Автоматизація: |
- Перевірте інструмент [[#rd_party_support_tools | compat32pkg]] Себастєна Балета, який автоматизує цей процес, як це пробить slackpkg. | - Перевірте інструмент [[#rd_party_support_tools | compat32pkg]] Себастєна Балета, який автоматизує цей процес, на зразок як це робить slackpkg. |
- Якщо ви віддаєте перевагу slackpkg, для керування пакетами, то варто, перевірити [[http://slakfinder.org/slackpkg+.html|slackpkg+]], це додаток до slackpkg, який керує пакунками, які ви встановили зі сторонього репозіторію - включаючі мільти-бібліотечність. Коли все правильно налаштованно, то підтримка оновленої версії мільти-бібліотечності дуже просте: <code> | - Якщо ви віддаєте перевагу slackpkg, для керування пакетами, то варто, перевірити [[http://slakfinder.org/slackpkg+.html|slackpkg+]], це додаток до slackpkg, який керує пакунками, які ви встановили зі стороннього репозіторія - включаючи мільти-бібліотечність. Коли все правильно налаштовано, то підтримка оновленої версії мільти-бібліотечності дуже просте: <code> |
# slackpkg update | # slackpkg update |
# slackpkg upgrade multilib | # slackpkg upgrade multilib |
# slackpkg install multilib | # slackpkg install multilib |
</code> Остання команда покаже якщо будь-який новий пакунок було додано до колекції пакунків "compat32", як наприклад поточні llvm-compat32 та orc-compat32. | </code> Остання команда покаже якщо будь-який новий пакунок було додано до колекції пакунків "compat32", як наприклад поточні llvm-compat32 та orc-compat32. |
* Як за звичай виглядає налаштування - для комп'ютера з запущеною Slackware-current, та використовуючи тестовий репозіторій Alien BOB-а для KDE. PKGS_PRIORITY Забезпечує, що мільти-бібліотечні пакунки для gcc та glibc маєть перевагу, над оригінальним від Slackware. Ключове слово "multilib" яке означає ім'я репозіторія, має бути таким самим словом, яке використовувалось в команді вище "slackpkg". Обране ім'я "multilib" довільне, воно могло б, точно так же бути "compat32", до тих пір, поки ви використовуєте його послідовно. \\ Зміст файлу для прикладу "/etc/slackpkg/slackpkgplus.conf" буде: <file> | * Як за звичай виглядає налаштування - для комп'ютера з запущеною Slackware-current, та використовуючи тестовий репозіторій Alien BOB-а для KDE. PKGS_PRIORITY Забезпечує, що мільти-бібліотечні пакунки для gcc та glibc має перевагу, над оригінальним від Slackware. Ключове слово "multilib" яке означає ім'я репозіторія, має бути таким самим ім'ям, яке використовувалось вище в команді "slackpkg". Обране ім'я "multilib" довільне, воно могло б, точно так же бути "compat32", до тих пір, поки ви використовуєте його послідовно. \\ Зміст файлу для прикладу "/etc/slackpkg/slackpkgplus.conf" буде: <file> |
SLACKPKGPLUS=on | SLACKPKGPLUS=on |
VERBOSE=1 | VERBOSE=1 |
==== Інструкція по швидкому методу ==== | ==== Інструкція по швидкому методу ==== |
| |
Цей розділ містить основні інструкції щодо додавання повної мультибібліотечної сумісності в систему Slackware64. Якщо ви хочете зрозуміти більш детальніше цей процес, чи вам потрібна інформація по збірці 32-х розрядного ПЗ на Slackware64, вам треба ознайомитись з наступним розділом.\\ Увага, символ "''#''" означає що це //командний рядок користувача root//. | Цей розділ містить основні інструкції щодо додавання повної мульти-бібліотечної сумісності в систему Slackware64. Якщо ви хочете зрозуміти більш детальніше цей процес, чи вам потрібна інформація по збірці 32-х розрядного ПЗ на Slackware64, вам треба ознайомитись з наступними розділами.\\ Увага, символ "''#''" означає що це //командний рядок користувача root//. |
| |
* Завантажте пакунки з мого веб сайту (я даю посилання [[#obtaining_multilib_packages | в попередньому розділі]], але в цьому прикладі я використовую дзеркало). Припустимо що у вас запущена Slackware 14.1. Виконайте команди: <code> | * Завантажте пакунки з мого веб сайту (я дав посилання [[#obtaining_multilib_packages | в попередньому розділі]], але в цьому прикладі я використовую дзеркало). Припустимо що у вас запущена Slackware 14.2. Виконайте команди: <code> |
# SLACKVER=14.1 | # SLACKVER=14.2 |
# mkdir multilib | # mkdir multilib |
# cd multilib | # cd multilib |
# cd ${SLACKVER} | # cd ${SLACKVER} |
</code> | </code> |
* Поновіть в 64-х розрядній Slackware такі пакунки //gcc//" та "//glibc//" до мульти-бібліотечних версій.\\ Виконайте команду: <code> | * Оновіть в 64-х розрядній Slackware пакунки //gcc//" та "//glibc//" до мульти-бібліотечних версій.\\ Виконайте команду: <code> |
# upgradepkg --reinstall --install-new *.t?z | # upgradepkg --reinstall --install-new *.t?z |
</code> після того як ви перейшли до директорії в яку завантажили ці пакунки.\\ Ця команда встановить допоміжні пакунки під назвою "//compat32-tools//". | </code> після того як ви перейшли до директорії в яку завантажили ці пакунки.\\ Ця команда встановить допоміжні пакунки під назвою "//compat32-tools//". |
* Якщо ви також завантажили директорію //slackware64-compat32// (в моєму прикладі команда "''lftp''" робить це автоматично) ви будете раді пізнати, що необхідні 32-х розрядні пакунки вже перетворенні як треба! Все що від вас потрібно, це виконати команду: <code> | * Якщо ви також завантажили директорію //slackware64-compat32// (в моєму прикладі команда "''lftp''" робить це автоматично) ви будете раді пізнати, що необхідні 32-х розрядні пакунки вже перетворенні як треба! Все що від вас потрібно, це виконати команду: <code> |
# upgradepkg --install-new slackware64-compat32/*-compat32/*.t?z | # upgradepkg --install-new slackware64-compat32/*-compat32/*.t?z |
</code> яка встановить усі необхідні 32-х розрядні пакунки (чи поновить їх, якщо вони вже встановлені зі старою версією набору мульти-бібліотечності). Це все! | </code> яка встановить відконвертовані 32-х розрядні пакунки (чи оновить їх, якщо вони вже були встановлені зі старої версії мульти-бібліотечності). Це все! |
* Якщо ви не знайшли директорію //slackware64-compat32// це значить, що в її не завантажили, або дзеркало з пакунками не містить необхідну директорію. В цьому випадку, ви можете самі перетворити 32-х розрядні пакунки для встановлення. Це не важко, та займе декілька хвилин: | * Якщо ви не знаходите директорію //slackware64-compat32// це означає, що в її не завантажили, або дзеркало з пакунками не містить необхідну директорію. В цьому випадку, ви можете самі переконвертувати 32-х розрядні пакунки для встановлення. Це не важко, та займе декілька хвилин: |
* Найшвидше буде, якщо у вас є локальна копія з оригінальними 32-х розрядними пакунками від Slackware, (в цьому випадку воно має назву //локальне дзеркало// ). В тих, у кого є офіційний DVD носій, може використати його: він двосторонній, та 32-х розрядна версія Slackware знаходиться на одній із сторін. __Для цього прикладу__ Я очікую, що у вас є локальна копія 32-х розрядної Slackware у директорії "''/home/ftp/pub/slackware/slackware-14.1/slackware/''".\\ Де розміщені під-директорії 'a', 'ap', 'd', 'l', 'n' та 'x'. (Якщо у вас змонтовано DVD диск, то директорія може знаходитись тут "''/media/SlackDVD/slackware/''" але цей варіант я тут не використовую). | * Найшвидше буде, якщо у вас є локальна копія з оригінальними 32-х розрядними пакунками від Slackware, (в цьому випадку воно має назву //локальне дзеркало// ). В тих, у кого є офіційний DVD носій, може використати його: він двосторонній, та 32-х розрядна версія Slackware знаходиться на одній із сторін. __Для цього прикладу__ Я очікую, що у вас є локальна копія 32-х розрядної Slackware у директорії "''/home/ftp/pub/slackware/slackware-14.1/slackware/''".\\ Де розміщені під-директорії 'a', 'ap', 'd', 'l', 'n' та 'x'. (Якщо у вас змонтовано DVD диск, то директорія може знаходитись тут "''/media/SlackDVD/slackware/''" але цей варіант я тут не використовую). |
* Створіть нову пусту директорію (давайте назвемо її 'slackware64-compat32') та перейдіть до неї: <code> | * Створіть нову пусту директорію (давайте назвемо її 'slackware64-compat32') та перейдіть до неї: <code> |