Керівництво по бінарним пакетам - gentoo wiki

На ряду зі звичайною підтримкою ebuild, Portage підтримує збірку і установку бінарних пакетів. Це керівництво пояснює, як створити їх, встановити і як налаштувати сервер бінарних пакетів.

Є багато причин, чому деяким системним адміністраторам подобається встановлювати пакети Gentoo у вигляді бінарних пакетів.

  1. First of all, it allows administrators to keep similar systems updated. Having to compile everything from source can become time consuming. Maintaining several similar systems, possibly some of them with older hardware, can be much easier if only one system has to compile everything from source and the other systems reuse the binary packages.
  2. A second reason is to do safe updates. For mission critical systems it is important to stay usable as much as possible. This can be done by a staging server that performs all updates first to itself. Once the staging server is in a good state the updates can then be applied to the critical systems. A variant of this approach is to do the updates in a chroot on the same system and use the binaries created there on the real system.
  3. A third reason is as a backup. Often binary packages are the only way of recovering a broken system (i.e. broken compiler). Having pre-compiled binaries around either on a binary package server or locally can be of great help in case of a broken toolchain.
  4. Finally, it also supports updating very old systems. The task of updating very old systems can be greatly eased using binary packages. It is usually helpful to install binary packages on old systems because they do not require build time dependencies to be installed / updated. Binaries packages also avoid failures in build processes since they are pre-compiled.

У цьому керівництві основна увага буде приділена таким темам:

  • як створити бінарні пакети;
  • як надати бінарні пакети клієнта;
  • як використовувати бінарні пакети;
  • як обслуговувати бінарні пакети.

Ближче до кінця буде розглянуто кілька більш складних тем про роботу з бінарними пакетами.

замітка
Всі утиліти, які використовуються в цьому посібнику, є частиною пакета sys-apps / portage. якщо не вказано інше.

Створення бінарних пакетів

Існує три основних способи створення бінарних пакетів:

  1. після звичайної установки використовувати додаток quickpkg;
  2. явно, під час кожного запуску emerge. використовувати параметр --buildpkg (-b);
  3. автоматично, за допомогою установки значення buildpkg в змінної Portage FEATURES.

Усі три методи створять бінарні пакети в каталозі, який вказаний у змінній PKGDIR (за замовчуванням це / usr / portage / packages).

Використання quickpkg

The quickpkg application takes one or more dependency atoms (or package sets) and creates binary packages for all installed packages that match that atom.

Наприклад, для створення бінарних пакетів для всіх встановлених версій GCC:

root # quickpkg sys-devel / gcc

Використовуйте *. для того щоб створити бінарні пакети для всіх встановлених пакетів в системі:

There is a caveat with this method: it relies on the installed files, which can be a problem in case of configuration files. Administrators often change configuration files after installing software. Because this could leak out important (perhaps even confidential) data into the packages, quickpkg by default does not include configuration files that are protected through the CONFIG_PROTECT method. To force inclusion of configuration files, use the --include-config or --include-unmodified-config options.

Використання --buildpkg як параметра emerge

При установці програм за допомогою emerge можна попросити Portage створювати бінарні пакети, що використання параметра --buildpkg (-b).

root # emerge --ask --buildpkg sys-devel / gcc

Так само можна попросити Portage тільки створити бінарний пакет без установки пакета в систему. Для цього необхідно використовувати параметр --buildpkgonly (-B).

root # emerge --ask --buildpkgonly sys-devel / gcc

The latter approach however requires all build time dependencies to be previously installed.

Реалізація роботи buildpkg за допомогою можливості Portage

Найбільш поширений спосіб створення бінарного пакета, кожен раз коли пакет встановлюється Portage, - це використовувати можливість (feature) buildpkg. якою можна включити в файлі /etc/portage/make.conf так:

Файл /etc/portage/make.confВключеніе можливості Portage buildpkg

Кожен раз, коли Portage буде встановлювати програмне забезпечення та увімкнені, він буде створювати також бінарний пакет.

Виняток для деяких пакетів

root # emerge -uDN @world --buildpkg --buildpkg-exclude "virtual / * sys-kernel / * - sources"

Це можна використовувати для пакетів, для які створення бінарних пакетів приносить мало користі. Наприклад пакети вихідного коду ядра або бінарні пакети (ті, які закінчуються на -bin як www-client / firefox-bin).

Налаштування хоста бінарних пакетів

Portage підтримує декілька протоколів для завантаження бінарних пакетів: FTP, FTPS, HTTP, HTTPS і SSH. Така кількість залишає великий простір для різних реалізацій хоста бінарних пакетів.

Тим не менш, не існує «готового» методу, наданого Portage для поширення бінарних пакетів. Залежно від бажаної настройки необхідно встановити додаткове програмне забезпечення.

Хост бінарних пакетів на основі веб

Основний підхід для поширення бінарних пакетів це створити хост бінарних пакетів на основі веб.

Скористайтеся веб-сервером, таким як lighttpd (www-servers / lighttpd) і налаштуйте його, щоб він надавав доступ на читання до каталогу вказаною у змінній PKGDIR в файлі /etc/portage/make.conf.

Файл /etc/lighttpd/lighttpd.confПрімер конфігурації lighttpd

Потім, на клієнтських системах налаштуйте змінну PORTAGE_BINHOST.

Файл /etc/portage/make.confІспользованіе хоста бінарних пакетів на основі веб

Хост бінарних пакетів на основі SSH

To provide a more authenticated approach for binary packages, one can consider using SSH.

When using SSH, it is possible to use the root Linux user's SSH key (without passphrase as the installations need to happen in the background) to connect to a remote binary package host.

To accomplish this, make sure that the root user's SSH key is allowed on the server. This will need to happen for each machine that will connect to the SSH capable binary host:

root # cat root.id_rsa.pub >> /home/binpkguser/.ssh/authorized_keys

Тоді змінна PORTAGE_BINHOST може виглядати так:

Файл /etc/portage/make.confНастройка PORTAGE_BINHOST для SSH-доступу

замітка
Не використовуйте конфігураційний файл SSH

/.ssh/config для настройки портів або імені користувача. Цей каталог ігнорується, коли Portage синхронізує пакети на стороні клієнта. Замість цього налаштуйте всі параметри в змінної PORTAGE_BINHOST.

Експорт з NFS

У разі використання хоста бінарних пакетів у внутрішній мережі, може бути простіше експортувати пакети за допомогою NFS, а потім змонтувати їх на клієнті.

Файл / etc / exports може виглядати так:

Файл / etc / exportsЕкспорт каталогу пакетів

Потім на клієнтах можна змонтувати каталог. Приклад запису в файлі / etc / fstab.

Файл / etc / fstabЗапісь для монтування папки з пакетами

Використання бінарних пакетів

Для того, щоб бінарні пакети можна було використовувати на інших системах, вони повинні відповідати деяким вимогам:

  • Архітектура на клієнті і сервері, а також змінна CHOST повинні збігатися.
  • Змінні оптимізації в CFLAGS
  • USE-прапори можливостей процесора (такі як MMX, SSE і так далі) слід вибирати обережно; всі клієнти повинні підтримувати їх.

важливо
Portage не може перевірити чи дотримуються ці вимоги. За дотримання цих вимог відповідає системний адміністратор.

Також Portage перевірять, чи створений бінарний пакет з використанням тих же USE-прапорів, які потрібні клієнтові. Якщо пакет зібраний з іншою комбінацією USE-прапорів, в залежності від параметрів, переданих emerge. Portage або проігнорує бінарний пакет (і стане збирати з вихідного коду), або завершитися. Більш докладніше дивіться в розділі установка бінарних пакетів.

На клієнтах потрібно зробити деякі налаштування, щоб використовувалися бінарні пакети.

Установка бінарних пакетів

Можна додати кілька параметрів до команди emerge. щоб повідомити Portage про те як потрібно працювати з бінарними пакетами: