Pacman - Зейское співтовариство користувачів linux і unix

Менеджер пакетів pacman - є однією з основних особливостей Arch Linux. Він поєднує в собі простий формат бінарних пакетів і легку у використанні систему збирання (дивіться Arch Build System і makepkg). Pacman дозволяє користувачам з легкістю управляти і налаштовувати під себе пакети, незалежно від того, з офіційного вони репозитария Arch або зібрані самостійно.

Pacman. синхронізуючи пакети з головним сервером, підтримує систему в актуальному стані. Така клієнт-серверна модель, дозволяє завантажувати / встановлювати пакети з усіма необхідними залежностями всього однією командою.

Pacman написаний на мові C і використовує формат пакетів .pkg.tar.xz. Офіційний пакет pacman включає в себе багато додаткових корисних інсрументом, таких як makepkg, pactree, vercomp і інші. Весь перелік можна отримати за допомогою команди:

конфігурація

Основні параметри

Основні параметри знаходяться в секції [options]. Для отримання додаткової інформації про параметри - прочитайте сторінку man або вивчіть встановлений за замовчуванням файл pacman.conf.

Пропуск поновлення пакетів

Для пропуску поновлення будь-якого пакета, додайте його назву в рядок:

У разі, якщо необхідно в рядку IgnorePkg перерахувати кілька пакетів - розділяйте імена пакетів пробілами:

Пропуск поновлення групи пакетів

Як і у випадку з пакетом, ви також можете заборонити оновлення групи пакетів, наприклад так:

репозиторії

В цьому розділі файлу pacman.conf вказуються репозиторії, які будуть використовуватися. Їх можна вказати прямо тут або підключити з іншого файлу.

Всі офіційні репозиторії перераховані в одному файлі - /etc/pacman.d/mirrorlist, для доступу до них використовується змінна $ repo, таким чином досить підтримувати в актуальному стані тільки один список.

Нижче наведено приклад використання дзеркал офіційних репозиторіїв, які перераховані в /etc/pacman.d/mirrorlist.

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

установка Пакетів

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

Для установки одного пакета або групи пакетів (включаючи залежності), використовуйте наступну команду:

Якщо пакет має кілька версій в різних репозиторіях (наприклад в extra і testing). Можна вказати, звідки саме слід встановити пакет:

Установка групи пакетів

Деякі пакети належать до групи пакетів, які можуть бути встановлені одночасно. Наприклад, при виконанні команди:

будуть встановлені всі пакети входять до групи gnome. Щоб побачити список пакетів належать до групи gnome, виконайте:

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

Установка пакетів з файлів

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

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

видалення Пакетів

Для видалення пакета, без видалення встановлених залежностей:

Для видалення пакета з усіма залежностями, які не використовуються іншими встановленими пакетами:

Для видалення пакета, його залежностей, і всіх пакетів залежать від цільового пакету: Увага! Ця операція рекурсивного і повинна використовуватися з обережністю, так як з'являється ризик видалити багато потенційно необхідних пакетів.

За замовчуванням pacman створює резервні копії конфігураційних файлів, що видаляються додатків за допомогою додавання до них розширення. pacsave. Якщо ви хочете видалити і ці файли - використовуйте ключ -n:

pacman не видаляти конфігураційних файлів, створених самими додатками (наприклад "dot-файли" у вашій домашній теці).

оновлення Системи

pacman може оновити всі пакети системи однією командою. Кількість пакетів залежить від того, наскільки свіжі пакети коштують у вашій системі. Кращий варіант - синхронізація бази даних репозиторіїв І оновлення вашої системи однією командою:

Увага! У зв'язку з тим, що Arch є постійно-оновлюваних дистрибутивом, користувачам слід пам'ятати, що після або в процесі оновлення можуть виникнути непередбачені труднощі. Тому оновлюватися слід з обережністю. Це означає, що якщо, наприклад, очікуються великі зміни або нововведення в оновлюваних пакетах, то оновлювати систему краще тоді, коли у користувача буде достатньо вільного часу і він буде готовий до вирішення можливих проблем.

Не забувайте, що висновок pacman заноситися в /var/log/pacman.log.

Якщо вирішити проблеми відповідно до інструкцій не вдається - пошукайте подібні повідомлення на форумі. Цілком можливо, що інші користувачі зіткнулися з подібними проблемами вже надали варіанти щодо її вирішення.

Запити до Бази Даних Пакетів

pacman, за допомогою прапора -Q, може шукати пакети в локальній базі даних; см.

і, за допомогою прапора -S, в базі даних (репозитариях); см.

pacman вміє шукати пакети в базі даних, як за назвами, так і за описами:

Пошук пакета по імені в базі даних (висновок без додаткової інформації):

Для пошуку серед встановлених пакетів:

Для відображення великої інформації про даному пакеті:

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

Для отримання списку файлів встановленого пакета:

Для отримання списку файлів невстановленого пакета можна використовувати утиліту pkgfile, зі складу пакета pkgtools, або nosr, що входить в пакет nosr-git, який розташований в AUR.

Щоб дізнатися до якого пакунку належить потрібний файл:

Для отримання списку пакетів, які більше не потрібні як залежності (пакети, які можуть бути безпечно видалені або сироти):

Для відображення залежностей у вигляді дерева:

Для отримання списку встановлених пакетів, які залежать від вашого пакета - можна скористатися утилітою whoneeds зі складу пакета pkgtools:

Отримання Списку Встановлених Пакетів для Швидкого Відновлення Системи

Доброю практикою явлется збереження списку всіх встановлених пакетів. Якщо ваша система "впала" і її складно відновити, pacman може легко перевстановити ці пакети.

Перш за все, збережіть в список пакетів (доступних в репозиторії):

Збережіть цей файл на флешці або на іншому носії.

Скопіюйте файл pkglist в нову систему, перейдіть в цю папку.

Для відновлення використовуйте команду:

Отримання Списку фото не належав Будь-якому Пакету

Якщо ви завжди хочете тримати свою систему в чистоті і поважаєте Шлях Arch. ви повинні іноді перевіряти файли відсутні в базі даних pacman. Ці файли, найчастіше встановлені сторонніми додатками з використанням ./configure; make; make install і т.п. Ви можете знайти всі ці встановлені файли (або симлінк) використовуючи цей простий скрипт:

зауважте - все файли зазначені в non-db.txt НЕ БУДУТЬ видалені без підтвердження. Тут можуть перебувати конфігураційні файли, журнали та ін. Використовуйте цей список тільки якщо знаєте, що ви робите.

додаткові команди

Оновлення системи і установка списку пакетів (за одну операцію):

Завантажити пакет, але не встановлювати його:

Встановити локальний пакет (не з репозиторію):

Встановити не локальний пакет (не з репозиторію):

Видалити з кешу (/ var / cache / pacman / pkg) невстановлені пакети: Увага! Будуть видалені всі пакети з кешу. Тому, в разі виникнення проблем після оновлення - з'являться додаткові труднощі, пов'язані з відкотом версій пакетів.

Повне очищення кешу пакетів: Увага! Будуть видалені всі пакети з кешу. Виконуйте це тільки в тому випадку, якщо у вас все нормально працює і вам не доведеться відкочувати будь-який пакет.

В якості альтернативи ключам -Sc і -Scc - можна використовувати пакет Cacheclean, доступний в AUR. Це скрипт на python, який дозволяє вибірково очищати кеш pacman # 'а від старих версій пакетів.

Часткові поновлення офіційно не підтримуються

Arch Linux постійно оновлюваний дистрибутив і це значить, що в репозиторіях завжди знаходяться нові версії бібліотек. Розробники та довірені користувачі збирають пакети для репозиторіїв з використанням цих бібліотек. Для пакетів встановлених локально (наприклад пакети з AUR), потрібно самостійно вирішувати питання з залежностями згідно з даними soname.

Саме тому часткове оновлення не підтримується. Не використовуйте pacman -Sy package або інші еквіваленти pacman -Sy і pacman -S package. Завжди перед установкою пакетів синхронізуйте репозиторії і оновлюйте систему повністю. З тієї ж самої причини потрібно бути обережними при використанні IgnorePkg і IgnoreGroup.

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

усунення проблем

Оновлення пакета XYZ зламало мою систему!

Arch Linux - передовий, постійно оновлюваний дистрибутив. Оновлення для пакетів стають доступними тоді, коли їх вважатимуть досить стабільними для повсякденного використання. Проте, поновлення іноді вимагають втручання користувача: може знадобитися оновлення конфігураційних файлів, можуть змінитися додаткові залежності, і т.д.

Перечитайте останній абзац.

Я знаю що для пакета ABC доступні оновлення, але pacman повідомляє мені, що система в актуальному стані!

Дзеркала pacman синхронізуються не миттєво. Іноді може пройти більше 24 годин, перш ніж поновлення стануть доступні вам.

В якості вирішення можна порадити змінити дзеркало. На MirrorStatus можна подивитися стан дзеркал.

При оновленні з'являється повідомлення про помилку: "file exists in filesystem" ( "файл існує в файлової системі")!

Чому це відбувається: pacman при виявленні конфліктуючих файлів, за замовчуванням, не буде їх перезаписувати автоматично. Це не помилка, так зроблено спеціально. (Дізнатися до якого пакунку належить файл, якщо такий є, можна за допомогою pacman -Qo.)

Питання вирішується тривіально. Спочатку перевірте чи не належить файл іншому пакету: (pacman -Qo / path / to / file). Якщо належить - створіть звіт про помилку]]. Якщо проблемний файл не потрібен іншим пакетам - перейменуйте його і запустіть команду оновлення. Якщо в подальшому проблем не виникне, то старий файл можна видалити.

При установці пакета я отримую повідомлення про помилку: "not found in sync db"

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

pacman кілька разів оновлює один і той же пакет!

Це може бути пов'язано з дублюванням записів в / var / lib / pacman / local /, наприклад є два примірника linux. pacman -Qi виведе правильну версію, а pacman -Qu покаже її як застарілу і, отже, вимагає оновлення.

Рішення: видалити зайву запис з / var / lib / pacman / local /.

pacman версії 3.4, в разі виявлення повторюваних записів, повинен вивести повідомлення про помилку.

Якщо при спробі видалення, перевстановлення або оновлення пакетів pacman падає з помилкою "database write" ( "записи в базу даних"):

Завантажитеся використовуючи Arch live CD

Змонтуйте кореневу файлову систему

Оновлення бази даних pacman за допомогою pacman -Syy

Переінсталюйте зламаний пакет через pacman -r / шлях / до / корневому_разделу -S package

Я встановив програму використовуючи make install; тепер ці файли не належать жодному з пакетів!

При виявленні "конфліктуючих файлів", щоб їх не перезаписувати вручну, можна використовувати pacman з ключем -f (pacman -Sf).

Почитайте, про скрипт, перевіряти файлову систему на наявність кинутих файлів.

Мені потрібен пакет з певним файлом. Як дізнатися якого пакунку це файл належить?

Встановіть pkgtools, в його склад входить pkgfile, який використовує окрему базу даних з усіма файлами і пов'язаними з ними пакетами.

pacman повністю не працездатний! Як мені його перевстановити?

Якщо pacman не працює і не виходить його відновити - скачайте вручну пакети (openssl, libarchive, libfetch і pacman) і розпакуйте їх в кореневий розділ. Бінарний pacman буде відновлений разом з конфігураційних файлів за замовчуванням. Потім, для підтримки цілісності бази даних пакетів, переустановите викачані пакети стандартними засобами pacman. Додаткову інформацію та приклад (застарів) скрипта, що автоматизує цей процес, можна знайти в цьому повідомленні форуму.

Дивіться також

Схожі статті