Чи можливо встановити конкретну версію пакетів, від якої залежить основний пакет?


10

У нас є середовище розробки на FreeBSD 10.3. Я чув, що FreeBSD управляє залежностями пакунків таким чином, що він завжди шукає найновішу версію всіх пакетів, від якої залежить основний пакет. І це схоже на правду. Отже, мої запитання:

  1. Це правда? чи є офіційні документи, які це підтверджують?
  2. Найкращий спосіб подолати цю проблему?

7
Я підозрюю, ви можете встановити пакунок певної потрібної вам версії спочатку, потім pkg lockїї, а потім встановити все, що вам потрібно.
стрілка

1
Це також залежить від того, який порт / пакет ви хочете і в якій версії. Наприклад, ви можете мати різні версії python / postgresql / php. Іноді для програмного забезпечення є кілька пакетів, іноді ви можете створити свій спеціальний пакет з портів.
Рафаель Аренс

3
Якщо ви сліпо запускаєте оновлення freebsd (або pkg upugrade), так, він знайде новіші, які він може, і спробує встановити це. Як говорив стрілок, зараз (починаючи з 9.2 або більше), ви можете pkg заблокувати <pkg>, який повинен захищати те, що ви встановили та його залежності від модифікації. YMMV.
чотириразовий

Відповіді:


1

Як FreeBSD будує пакети

Проект FreeBSD використовувався для створення пакетів лише для випусків та періодично для філій STABLE. Старі розробники пакетів використовували розподілену систему під назвою Portbuild. Для створення пакетів було б використано велику групу менших машин 2 ГБ-4 ГБ. Це було схильним до помилок і повільним, в основному, завдяки старим машинам. Повне нарощування може зайняти тиждень. Сьогодні пакети будуються на одних великих машинах, що використовують Poudriere. (З веб-сторінки Брайана Дрюері ).

Дивіться також: Як оновити суміш пакетів та портів на FreeBSD

FreeBSD має розвивається ABI (і API), як і Solaris і Windows, тоді як Linux має стабільний (застійний?) ABI (і API), тому зі старими бінарними файлами Linux все ще працюватимуть у більш новій версії ОС, тоді як з ОС, що не є Linux, це не так ' t завжди так (іноді так).

Використання pkg lockвсе ще може призвести до головних болів , тоді як воно буде заблоковано (запропонувати попередження), коли ви намагаєтесь оновити pkg upgradeйого, як і раніше, передбачає, що версії з більшим числом краще (бажано), і що ви хотіли б зробити, тому він запитує дозволу, і ви можете дозволити, але це не гарантує, що щось інше не буде порушено. Дивіться вище URL-адресу або це обговорення: " Чи не хочете ви, щоб FreeBSD блокував версії бінарних пакетів, що поширюються через pkg для версії ОС? ".

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

Блог Брайана Дрюрі: " Журнал FreeBSD: Poudriere " вважає:

"Перестаньте використовувати на своїх серверах portmaster, portupgrade та порти та перейдіть до пакетів.

Налаштування власних пакетів пакетів за допомогою Poudriere займає всього кілька хвилин і заощадить вам багато часу в майбутньому.

...

Якщо ви підтримуєте більше однієї системи FreeBSD і не використовуєте пакети, вам слід. Я підтримую лише 20 серверів, але побудова портів у кожній системі забирала багато часу і витрачала витрачені ресурси на виробничих машинах. Створюючи порти на декількох серверах, дуже легко вивести їх параметри або версії з синхронізації. Створюючи пакети один раз в одній системі, я зменшив навантаження на мої системи, зменшив обсяг роботи, який я повинен був виконати, і зробив всі мої системи послідовними. Замість того, щоб мати справу з однаковим збоєм у кожній системі, мені потрібно лише обробити це в системі збірки.

Але, сучка ...

Навіщо вам потрібно відступати від офіційних пакетів? Рамка портів підтримує параметри для портів, щоб змінити конфігурацію часу побудови. Не всі програми підтримують конфігурацію часу виконання. Деякі програми повинні бути складені по-різному, залежно від того, які функції включені. Інші мають можливість просто зменшити кількість функцій та залежностей у порту за замовчуванням. Для адміністраторів серверів це може швидко призвести до того, що деякі з пакунків за замовчуванням не відповідають їхнім вимогам.

Тому ...

Існує кілька способів отримати власні пакунки. Pkg підтримує використання декількох сховищ. Він може бути налаштований для використання офіційного сховища FreeBSD як основного, а спеціального - як вторинного. Pkg не обмежується кількістю сховищ, які вони можуть відстежувати, і вони можуть бути упорядковані за пріоритетом. Проблема з декількома сховищами полягає в тому, що їх наразі важко підтримувати. Коли Pkg виявить, що встановлений пакет має різні параметри або залежності від сховища, яке він відстежує, пакет буде перевстановлений з потенційно будь-якої віддаленої версії. Ви можете або заблокувати пакет під час оновлення за допомогою Pkg блокування PKGNAME та pkg розблокувати PKGNAME, або прив’язати його до певного сховища з анотацією pkg -A PKGNAME-сховище REPONAME. Існує також тонка проблема збереження дерева портів у вашому користувальницькому сховищі синхронізацією з пакетами FreeBSD. Оскільки пакети побудовані з знімка дерева портів, зробленого раз на тиждень, якщо ваш власний сховище не відповідає, це може призвести до конфліктів. Набагато простіше просто скласти цілий набір пакетів саме того, що вам потрібно, з потрібними параметрами.

Рішення:

Poudriere (грубо виражений рік-po-dree-рік, французькою мовою «пороховий кег») був написаний як швидша і простіша заміна Tinderbox. Він був написаний автором Pkg Батистом Даруссіним, і зараз він здебільшого підтримується мною разом з Баптистом та деякими іншими авторами. Він швидко став фактичним інструментом тестування портів FreeBSD та інструментом створення пакетів. Це офіційний інструмент збірки кластерів, а також використовується в проекті FreeBSD Ports для тестування широких виправлень у тих, що називаються «exp-run». Він написаний в оболонці POSIX і повільно переміщується до компонентів C. На відміну від Tinderbox, він не має залежностей і не потребує бази даних. Це було оптимізовано, щоб бути високо паралельним у всіх операціях. Він використовує в'язниці для побудови портів у пісочних середовищах у дуже жорстких умовах. Створення тюрми робиться один раз за допомогою простої команди. Під час складання в'язниця автоматично клонується для кожного процесора, який використовується для надання портам чистого місця для побудови. "

Налаштування власного сховища за допомогою povriere дозволяє забезпечити гнучкість портів та простоту управління пакетами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.