Ласкаво просимо в Portage
Завдяки високій гнучкості і надзвичайно багатим можливостям Portage можна визнати одним з кращих засобів управління програмним забезпеченням з існуючих в Linux. Portage написана на Python і Bash.
дерево портежей
Складальні файли ebuild
Говорячи про пакетах, ми часто маємо на увазі програми, доступні користувачам Calculate через дерево портежей. Дерево портежей - це набір складальних файлів ebuild, що містять всю інформацію, необхідну Portage для управління програмним забезпеченням (установки, пошуку, вилучення і т.п.) За замовчуванням складальні файли знаходяться в / usr / portage і / var / lib / layman / calculate . Другим шляхом знаходиться оверлей Calculate, який також містить складальні ebuild файли.
Коли Portage виконує будь-які дії над пакетами програм, ці дії спираються на складальні файли, наявні в системі. Тому необхідно регулярно оновлювати складальні файли, щоб Portage знав про нові програми, оновлення, пов'язаних з безпекою і т.д.
Оновлення дерева портежей
Дерево портежей зазвичай оновлюється за допомогою rsync. Оновлення виконати досить просто, так як запуск rsync забезпечується командою emerge:
Якщо rsync виконати неможливо через обмеження брандмауера, дерево портежей все-таки можна оновити з щоденних «знімків». Для автоматичного вилучення і установки в системі новітнього знімка служить утиліта emerge-webrsync:
Важливо разом з деревом портежей виконувати оновлення оверлею Calculate. Оверлей зберігається в Git, його оновлення можна виконати утилітою layman:
Виконати оновлення відразу дерева портежей і накладення Calculate, а також бази даних програми eix можна однією командою:
Обслуговування програмного забезпечення
Пошук програм
Для пошуку програм в дереві портежей за назвою можна використовувати вбудовані можливості команди emerge. За замовчуванням команда emerge --search видає назви пакетів, відповідних (як повністю, так і частково) заданій умові пошуку.
Наприклад, щоб знайти всі пакети, що містять "pdf" в назві:
Для пошуку пакетів ще і по тексту опису можна використовувати параметр --searchdesc (або -S):
Приклад пошуку всіх пакетів, в описі яких є слово "browser".
установка програм
Після того, як ви знайшли потрібне програмне забезпечення, його можна легко встановити за допомогою команди emerge. Ось приклад установки пакета gnumeric:
Так як безліч додатків залежить один від одного, будь-яка спроба встановити який-небудь пакет програм може спричинити за собою також установку додаткових пакетів. Не турбуйтеся, Portage впорається і з цим. Якщо ви захочете з'ясувати, що саме Portage збирається встановити разом з потрібним вам пакетом, додайте параметр -p (або --pretend). наприклад:
Після команди на установку пакета, Portage завантажує з інтернету необхідний вихідний код (при необхідності), і за замовчуванням зберігає його в каталозі / var / calculate / remote / distfiles. Після цього пакет розпаковується, компілюється і встановлюється. Якщо ви хочете, щоб Portage тільки завантажив вихідний код без його установки, додайте до команди emerge параметр -f (або --fetchonly):
Виявлення документації до пакету
Багато пакети містять власну документацію. Іноді USE-прапор doc визначає, чи слід встановлювати документацію до пакету. Перевірити наявність USE-прапора doc можна командою emerge -vp <название пакета>. приклад:
USE-прапор doc можна включити або відключити як глобально в файлі /etc/portage/make.conf/custom. так і для окремих пакетів, створивши файл в директорії /etc/portage/package.use і вказати в ньому прапор. У розділі USE-прапори це питання описується більш детально.
Документація від знову встановленого пакета зазвичай знаходиться в підкаталозі каталогу / usr / share / doc. відповідному пакунком. Крім того, можна вивести список всіх встановлених файлів утилітою equery. приклади:
видалення пакета
Коли ви захочете видалити пакет з системи, використовуйте команду emerge -C (або --unmerge). Це призведе до видалення з системи всіх файлів, встановлених з пакунка, крім конфігураційних файлів програми, змінювалися після установки. Збереження конфігураційних файлів дозволяє повернутися до роботи з пакетом, якщо ви коли-небудь вирішите знову його встановити.
Увага: Portage не перевіряє. залежать чи інші пакети від видаляється! Однак ви отримаєте попередження, якщо видалення пакета призведе до непрацездатності системи.
Після видалення пакета з системи, залишаються пакети, встановлені по залежностям. Щоб Portage виявила всі колись потрібні пакети, які тепер можна видалити, використовуйте команду emerge -c (або --depclean). Ми повернемося до цього нижче.
оновлення системи
Щоб система зберігалася у відмінній формі (не кажучи вже про встановлення найсвіжіших оновлень, пов'язаних з безпекою), її потрібно регулярно оновлювати. Так як Portage переглядає складальні файли тільки в локальному дереві портежей і оверлее, спершу потрібно оновити їх. Оновивши дерево портежей, ви зможете оновити систему командою emerge -u world. У наступному прикладі ми також користуємося параметром -a (або --ask), який доручає Portage вивести список пакетів, які вона збирається оновити, і запитати вас, чи можна продовжувати:
Portage буде шукати більш нові версії встановлених додатків. Однак перевіряється тільки версії додатків, явно встановлених вами, а не тих, від яких вони залежать. Якщо ви хочете оновити кожен пакет в системі, додайте аргумент -D (або --deep):
Оскільки оновлення, пов'язані з безпекою, трапляються і в пакетах, які були встановлені по залежностям, рекомендується зрідка запускати цю команду.
Якщо ви міняли якісь із USE-прапорів, можливо, потім ви також захочете додати параметр -N (або --newuse). Тоді Portage перевірить, чи вимагає зміна установки нових пакетів або перекомпіляції існуючих:
Метапакети
У деяких пакетів в дереві портежей немає вмісту як такого, і вони використовуються для установки набору інших пакетів. Наприклад, пакет kde повністю встановлює середу KDE у вашій системі, залучаючи різні KDE-пакети в якості залежностей.
Якщо ви коли-небудь захочете видалити з системи такий пакет, запуск emerge --unmerge не матиме належного ефекту, так як пакети, від яких він залежить, чи залишаться в системі.
У Portage існує можливість видалення залишкових завісімосей, але так як залежності програм змінюються з часом, доступність програмного забезпечення, перш за все потрібно повністю оновити всю систему, включаючи реалізацію змін, вироблених шляхом модифікації USE-прапорів. Після цього можна запустити emerge -c (або --depclean), щоб видалити залишкові залежності. Коли це зроблено, вам буде потрібно пересобрать додатки, раніше динамічно пов'язані з віддаленими пакетами, в яких вони тепер не потребують.
З усім цим справляються наступні три команди:
Коли Portage скаржиться.
Слоти, віртуали, гілки, архітектури та профілі
Як уже сказано, Portage - надзвичайно потужна система, що підтримує безліч можливостей, не хапають іншим системам управління програмами. Щоб це стало зрозуміло, розберемо кілька аспектів Portage, не вникаючи в подробиці.
За допомогою Portage різні версії окремого пакета можуть співіснувати в одній системі. У той час, як інші системи управління прагнуть називати пакети відповідно до версії (наприклад freetype і freetype2), в Portage використовується технологія слотів (SLOT), або областей. Пакет надає певний слот своєї версії. Пакети з різними слотами здатні співіснувати в одній системі. Наприклад, у пакета freetype є ebuild як зі SLOT = "1". так і зі SLOT = "2".
Існують також пакети, що виконують одні і ті ж функції, але відрізняються в реалізації. Наприклад metalogd. sysklogd і syslog-ng є системними службами журналирования. Програми, що використовують "системний журнал", не можуть залежати від однієї конкретної програми, наприклад від metalogd. так як інші програми нічим не гірше. У Portage передбачені віртуальні пакети: кожна служба журналювання надає virtual / syslog. і в результаті в додатках можна вказувати залежність від virtual / syslog.
Програмне забезпечення може розташовуватися в різних гілках дерева портежей. За замовчуванням в системі дозволено тільки використання стабільних пакетів. Більшість нових програм під час вступу включаються в тестову гілку, що вказує на необхідність додаткового тестування перед тим, як включити їх в стабільні. Хоча в дереві портежей і видно складальні файли для таких програм, Portage не стане оновлювати їх до тих пір, поки вони не будуть поміщені в стабільну гілку.
Деякі програми є не для всіх архітектур. Або вони не працюють в певних архітектур, або вимагають додаткового тестування, або у розробника немає можливості перевірити, чи працює пакет в різних архітектурах.
Кожна установка Gentoo дотримується певного профілю. який містить, крім іншого, список пакетів, необхідних для працездатності системи.
Блокування пакетів
Приклад попередження про заблокованих пакетах (з --pretend)
У файлах ebuild є спеціальні поля, повідомляють Portage про залежності. Можливі два види залежності: залежність збірки, оголошена в DEPEND. і залежність виконання, оголошена в RDEPEND. Коли одна з цих залежностей явно вказує на несумісність пакету або віртуального пакету, це викликає блокування.
Для розблокування можна відмовитися від установки пакета або попередньо видалити конфліктує пакет. В даному прикладі можна відмовитися від установки postfix або спочатку видалити ssmtp.
Також можливо, що два пакети, що підлягають встановленню, блокують один одного. У цій рідкісній випадку слід визначити, навіщо вам встановлювати обидва пакети. У більшості випадків можна обійтися одним.
маскування пакетів
Приклад попередження про замаскованих пакетах:
Приклад попередження про замаскованих пакетах із зазначенням причини:
Коли ви збираєтеся встановити пакет, що не призначений для вашої системи, видається помилка маскування. Потрібно спробувати встановити іншу програму, існуючу для вашої системи, або дочекатися, поки пакет стане доступним. Завжди є причина, по якій пакет замаскований:
arch. пакет недостатньо перевірений для приміщення в стабільну гілку. Зачекайте кілька днів або тижнів і спробуйте встановити його ще раз.Відсутність потрібних пакетів
Приклад попередження про відсутність пакету:
Додаток, який ви намагаєтеся встановити, залежить від іншого пакета, недоступного вашій системі. Будь ласка, перевірте, чи є такий запит в bugzilla. а якщо немає, повідомте про помилку. Якщо ви не змішуєте гілки, такого не повинно відбуватися, і це - явна помилка.
Неоднозначність назви пакета
Приклад попередження про повторюваних іменах ebuild:
циклічні залежності
Приклад попередження Portage про циклічні залежностях:
Два або більше пакета, які ви хочете встановити, взаємно залежні, і в результаті їх установка неможлива. Швидше за все, це помилка в дереві портежей. Будь ласка, почекавши час, поновіть дерево портежей, і спробуйте знову. Ви можете також перевірити, чи є ця помилка в bugzilla. і якщо немає, повідомити про неї.
Помилка вилучення
Приклад попередження Portage про помилку вилучення:
Portage не змогла завантажити вихідний код цього додатка і спробує продовжити установку інших додатків (якщо запланована). Ця помилка може статися через неправильно синхронізованого дзеркала, або через те, що ebuild вказує на невірне місце. Сервер, де знаходяться вихідні коди, також може чомусь не працювати.
Повторіть дію через годину, щоб подивитися, чи повториться ця помилка.
Захист системного профілю
Приклад попередження Portage про пакет, захищеному профілем:
Ви попросили видалити пакет, що входить до складу базових пакетів вашої системи. Він відзначений в вашому профілі як обов'язковий, і його не слід видаляти з системи.