[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версійПопередня ревізія
Наступна ревізія
Попередня ревізія
uk:slackware:multilib [2016/11/15 09:37 (UTC)] streamthreaderuk:slackware:multilib [2016/11/27 10:08 (UTC)] (поточний) streamthreader
Рядок 1: Рядок 1:
-===== Додавання Мульти-Бібліотечності в 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".
  
 Це досягається наступним чином: Це досягається наступним чином:
-  - Спочатку нам потрібно перемкнути в режим мульти-бібліотечності наступні програми:+  - Спочатку нам потрібно перейти на multilib версії:
     * //glibc// (тобто glibc який підтримує //запуск// як 32-х так і 64-х розрядних програм), а також     * //glibc// (тобто glibc який підтримує //запуск// як 32-х так і 64-х розрядних програм), а також
     * //gcc// (так як він спроможний //компілювати// як 32-х так і 64-х розрядні програми).     * //gcc// (так як він спроможний //компілювати// як 32-х так і 64-х розрядні програми).
-  - Після цього треба взяти системні бібліотеки з 32-х розрядної Slackware та встановити в 64-х розрядну, для створення 32-х розрядного програмного шару.+  - Після цього треба взяти системні бібліотеки з 32-х розрядної Slackware та встановити в 64-х розрядну, це завершить процес створення 32-х розрядного програмного шару.
  
-<note>Slackware для архітектури x86_64 (чи скорочено "//Slackware64//") це лише чиста 64-х розрядна операційна система, але вона дуже просто може бути оновлена до підтримки мульти-бібліотечності. //З коробки Slackware64 може виконувати та збирати тільки 32-х розрядне програмне забезпечення.//</note>+<note>Slackware для архітектури x86_64 (чи скорочено "//Slackware64//") це чиста 64-х розрядна операційна система, але вона дуже просто може бути оновлена до multilib. //З коробки Slackware64 може виконувати та збирати тільки 64-х розрядне програмне забезпечення.//</note>
  
-Коли вийшла Skackware64, вона мала перевагу над 64-розрядними "форками" які були на той час доступні. Ці форки додавали 32-розрядний шар, завдяки перекомпіляції великої кількості своїх пакетів під 32-х розрядну архітектуру. З іншого боку, Slackware, дистрибутив який виходить як 32-х так і в 64-х розрядному вигляді, обидва варіанти розробляються паралельно. Це означає, що вам не доведеться знову збирати 32-х розрядні пакунки з нуля, для того щоб додати сумісність у вигляді мульти-бібліотечності до системи з архітектурою 64. Ви просто берете пакунки з 32-х розрядного дистрибутиву Slackware! \\  Ось чому ми не додаємо відразу мульти-бібліотечніть до Slackware64 - натомість ми створюємо передумову, завдяки якій у вас є вибір, та і інструкція по тому як зробити мульти-бібліотечну систему.  \\ В [[#detailed_instructions | розділі нижче]], я покажу як взяти пакунки 32-х розрядної Slackware (назвемо їх "mesa") та переупакуємо їх вміст в пакунки "mesa-compat32", які можна буде встановити напряму в Slackware64.+Коли вийшла Skackware64, вона мала перевагу над 64-розрядними "форками" які були на той час доступні. Ці форки додавали 32-розрядний шар, завдяки перекомпіляції великої кількості своїх пакетів під 32-х розрядну архітектуру. З іншого боку, Slackware, дистрибутив який виходить як 32-х так і в 64-х розрядному вигляді, обидва варіанти розробляються паралельно. Це означає, що вам не доведеться знову збирати 32-х розрядні пакунки з нуля, для того щоб додати сумісність multilib до системи з архітектурою 64. Ви просто берете пакунки з 32-х розрядного дистрибутиву Slackware! \\  Ось чому ми не додаємо відразу multilib до Slackware64 - натомість ми створюємо передумову, завдяки якій у вас є вибір, та і інструкція по тому як зробити multilib систему.  \\ В [[#Детальніша_інструкція | розділі нижче]], я покажу як взяти пакунки 32-х розрядної Slackware (назвемо їх "mesa") та переупакуємо їх вміст в пакунки "mesa-compat32", які можна буде встановити напряму в Slackware64.
  
-===== Переваги мульти-бібліотечної системи =====+===== Переваги multilib системи =====
  
-Ось декілька прикладів програмного забезпечення, яке потребує наявності мульти-бібліотечності в системі Slackware з архітектурою 64, тому що воно не може бути запущено чи зібрано без сумісного 32-х розрядного шару: +Ось декілька прикладів програмного забезпечення, яке потребує наявності multilib в системі Slackware з архітектурою 64, тому що воно не може бути запущено чи зібрано без сумісного 32-х розрядного шару: 
-  * [[http://winehq.org/ | Wine]] \\ Більшість програм для платформи Windows все ще 32-х розрядні, і для того зоб запустити таке ПЗ на Linux, вам необхідна 32-х розрядна версія Wine.+  * [[http://winehq.org/ | Wine]] \\ Більшість програм для платформи Windows все ще 32-х розрядні, і для того щоб запустити таке ПЗ на Linux, вам необхідна 32-х розрядна версія Wine.
   * [[http://www.virtualbox.org/ | VirtualBox]] \\ Популярна програмна, віртуальна машина. Так-як ця програма (частково) з відкритим кодом, для неї досі треба 32-х розрядний шар сумісності в системі Slackware 64-х розрядної архітектури.   * [[http://www.virtualbox.org/ | VirtualBox]] \\ Популярна програмна, віртуальна машина. Так-як ця програма (частково) з відкритим кодом, для неї досі треба 32-х розрядний шар сумісності в системі Slackware 64-х розрядної архітектури.
-  * [[http://steampowered.com|Steam]] \\ Дуже популярна ігрова платформа, досі потребує [[http://www.slackware.com/~alien/slackbuilds/steamclient/|32-розрядний клієнт]]. Також більшість доступних ігор, 32-розрядні.+  * [[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 клієнт]],  ... \\ Ці програми проприєтарні, та їх код закрито. Ми залежимо від розробника, який не виробляє 64-х розрядні бінарні файли. В цьому випадку, саме така ситуація.   * [[http://www.skype.com/ | Skype]], [[http://www.citrix.com/lang/English/home.asp | Citrix клієнт]],  ... \\ Ці програми проприєтарні, та їх код закрито. Ми залежимо від розробника, який не виробляє 64-х розрядні бінарні файли. В цьому випадку, саме така ситуація.
  
Рядок 29: Рядок 29:
 Крім декількох 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
Рядок 59: Рядок 59:
 ==== Інструкція по швидкому методу ==== ==== Інструкція по швидкому методу ====
  
-Цей розділ містить основні інструкції щодо додавання повної мультибібліотечної сумісності в систему 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
Рядок 68: Рядок 68:
 # 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>
 uk:slackware:multilib ()