pacman (Українська)
| Резюме |
|---|
| Pacman це менеджер пакунків в Arch Linux. Менеджер пакунків використовується для встановлення, оновлення та видалення програм. В даній статті розглядаються основні прийоми і поради з усунення несправностей. |
| Огляд |
| Пакунки в Arch Linux будуються з використанням makepkg і користувацького сценарію збірки для кожного пакунку (відомого як PKGBUILD). Після складання, програмне забезпечення може бути встановлене і управлятися з pacman. PKGBUILD'и на програмне забезпечення в офіційному репозиторії доступні з дерева ABS; тисячі доступні (офіційно не підтримується) в Arch User Repository (репозиторій користувачів Arch, скорочено AUR). |
| Стосуються сабжа |
| Downgrading Packages |
| Improve Pacman Performance |
| pacman GUI Frontends |
| pacman Rosetta |
| pacman Tips |
| Pacman package signing |
| FAQ#Package_Management |
| Pacman-key |
| Pacnew and Pacsave Files |
| Джерела |
| libalpm(3) Manual Page |
| pacman(8) Manual Page |
| pacman.conf(5) Manual Page |
| repo-add(8) Manual Page |
Pacman це менеджер пакунків, який є однією з основних характерних особливостей Arch Linux. Він поєднує в собі простий формат двійкових пакунків з простою у використанні Arch Build System(система збірки Арча, скорочено ABS). Мета розробників pacman - зробити його, як можна легшим у керуванні пакунками, чи є вони з офіційних репозиторіїв Arch або власні версії користувачів.
Pacman тримає систему в актуальному стані за допомогою синхронізації списків пакунків з головного сервера. Ця модель, сервер / клієнт, також дозволяє користувачам завантажувати / встановлювати пакунки з допомогою простої команди, повністю з усіма необхідними залежностями.
Pacman написана на мові програмування C і використовує .pkg.tar.xz формат пакунків.
Конфігурація
Налаштування pacman розташовані в /etc/pacman.conf. Це місце, де користувач настроює програму для роботи, як йому треба. Докладнішу інформацію про файл конфігурації можна знайти в man pacman.conf
Загальні параметри
Загальні параметри знаходяться в розділі [options]. Читайте man сторінки або дивіться в pacman.conf інформацію за замовчуванням про те, що можна зробити тут.
Заборона оновлення пакунків
Для заборони оновлення конкретного пакунку, вкажіть його в такому вигляді:
IgnorePkg=linux
При зазначенні декількох пакунків, розділяйте їх пробілами, або використовувати додаткові IgnorePkg лінії.
Заборона оновлення груп пакунків
Як і з пакунками, пропускати цілі групи пакунків також можливо:
IgnoreGroup=gnome
Заборона встановлення файлів в систему
Щоб уникнути встановлення у деякі каталоги, зазначте їх у NoExtract. Наприклад, щоб уникнути встановлення юнітів systemd вкажіть:
NoExtract=usr/lib/systemd/system/*
Репозиторії
Ця секція визначає, які репозиторії використовуються. Вони можуть бути зазначені у /etc/pacman.conf прямо або включені з іншого файлу (наприклад, /etc/pacman.d/mirrorlist), що робить його необхідним для підтримання лише одного списку. Докладніше про налаштування дзеркал читайте тут.
/etc/pacman.conf
#[testing] #SigLevel = PackageRequired #Include = /etc/pacman.d/mirrorlist [core] SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist [extra] SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[community-testing] #SigLevel = PackageRequired #Include = /etc/pacman.d/mirrorlist [community] SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist # Users If you want to run 32 bit applications on your x86_64 system, # enable the multilib repositories as required here. #[multilib-testing] #SigLevel = PackageRequired #Include = /etc/pacman.d/mirrorlist #[multilib] #SigLevel = PackageRequired #Include = /etc/pacman.d/mirrorlist # An example of a custom package repository. See the pacman manpage for # tips on creating your own repositories. #[custom] #SigLevel = Optional TrustAll #Server = file:///home/custompkgs
Безпека пакунків
Pacman 4 підтримує підписання пакунків, яке додає додатковий рівень безпеки. Щоб налаштувати це підписання, можна використовуватиSigLevel на глобальному або для кожного сховища рівні. Конфігурація за замовчуванням /etc/pacman.conf
SigLevel = Required DatabaseOptionalдозволяє перевірку підписів для всіх пакунків на глобальному рівні, яка може бути прописана для кожного сховища
SigLevel, як показано вище. Більш детальну інформацію про підписання пакунків та перевірки підпису, дивіться тут.
Використання
Нижче наводиться лише невелика вибірка з операцій, які може виконати pacman. Щоб дізнатися більше прикладів, зверніться до man pacman. Для початку дивіться pacman - An Introduction.
Встановлення пакунків
Встановлення окремих пакунків
Для встановлення одного пакунку або списку пакунків (включаючи залежності), виконайте наступну команду:
# pacman -S ім'я_пакунку1 ім'я_пакунку2 ...
Іноді є кілька версій пакунку в різних сховищах, наприклад, [extra] і [testing]. Для установки попередньої версії, репозиторій повинен бути зазначен явно (інакше буде встановлений перший знайдений пакунок):
# pacman -S extra/ім'я_пакунку
Встановлення груп пакунків
Певні пакунки належать до групи пакунків, які можуть бути встановлені одночасно. Наприклад, ввівши таку команду:
# pacman -S gnome
встановите всі пакунки, які належать до групи gnome. Щоб дізнатися, які пакунки належать до групи gnome, виконайте:
# pacman -Sg gnome
Також завітайте https://www.archlinux.org/groups/ щоб побачити, в яких групах є пакунок.
Видалення пакунків
Щоб видалити один пакунок, залишивши всі його залежності встановленими:
# pacman -R ім'я_пакунку
Для видалення пакунка і його залежностей, які не вимагаються будь-яким іншим встановленим пакунком:
# pacman -Rs ім'я_пакунку
Для видалення пакунка, його залежностей і всі пакунки, які залежать від цільового пакунку:
# pacman -Rsc ім'я_пакунку
Для видалення пакунка, який потрібно іншому пакунку, не видаляючи залежний пакунок:
# pacman -Rdd ім'я_пакунку
Pacman зберігає файли конфігурації при видаленні деяких додатків з розширенням: .pacsave. Для запобігання створення цих файлів резервних копій використовувати опцію -n:
# pacman -Rn ім'я_пакунку
Оновлення пакунків
Pacman може оновити всі пакунки в системі за допомогою всього однієї команди. Це може зайняти деякий час в залежності від того, наскільки актуальна система. Ця команда може синхронізувати репозиторії баз даних та поновлення пакунків системи (без урахування 'локальних' пакунків, та не налаштованих репозиторіїв):
# pacman -Syu
Pacman це потужний інструмент для керування пакунками, але можливо існують ситуації в яких він не впорається. Читайте The Arch Way (Українська), якщо вас щось турбує. Користувачі повинні бути пильними і взяти на себе відповідальність за підтримання своєї власної системи. При виконанні оновлення системи, дуже важливо, щоб користувачі читали всю інформацію, яку видає pacman і мали здоровий глузд. Якщо користувач модифікував файл конфігурації пакунку, то при оновлені пакунка буде створений .pacnew файл, щоб уникнути перезапису налаштувань, які задав користувач. Pacman буде пропонувати користувачу об'єднати їх. Ці файли вимагають ручного втручання з боку користувача, і це хороша практика, обов'язково треба впоратися з цим відразу після оновлення чи видалення.Читайте Pacnew and Pacsave Files щоби дізнатися про це більше.
Перед оновленням бажано відвідати домашню сторінку Arch Linux, щоб перевірити останні новини (або підписатися на стрічку RSS): коли оновлення потребують надзвичайного втручання користувача (більше, ніж може бути зроблено, просто дотримуючись вказівок pacman), відповідне повідомлення буде розміщене.
Якщо стикаєтеся з проблемами, які не можуть бути вирішені в цих інструкціях, скористайтеся пошуком по форуму. Цілком імовірно, що інші зіткнулися з тією ж проблемою і опублікували інструкцію по її вирішенню.
Запити до баз даних пакунків
Pacman шукає в локальній базі даних пакунків з опцією -Q, дивиться:
$ pacman -Q --help
та шукає у базі даних(репозиторіях) з опцією -S, дивиться:
$ pacman -S --help
Pacman можете шукати пакунки в базі даних(репозиторіях), пошук як в назвах пакунків так й в описах:
$ pacman -Ss умова1 умова2 ...
Для пошуку вже встановлених пакунків:
$ pacman -Qs умова1 умова2 ...
Пошук пакунка за ім'ям в базі даних(репозиторіях)(виводиться без додаткової інформації):
$ pacman -Sqs умова1 умова2 ...
Щоб показати детальну інформацію по пакунку:
$ pacman -Si ім'я_пакунку
Показати детальну інформацію по пакунку вже встановленому:
$ pacman -Qi ім'я_пакунку
Вказавши подвійно опцію -i - буде також відображати список файлів резервних копій і їх модифікацій:
$ pacman -Qii ім'я_пакунку
Для отримання списку файлів встановленого пакунку:
$ pacman -Ql ім'я_пакунку
Для не встановлених пакунків, можна використовувати pkgfile.
Можна також надсилати запити до бази даних, щоб дізнатися, якому пакунку належить файл:
$ pacman -Qo /шлях/до/файлу
Отримати список всіх пакунків, які більше не потрібні:
$ pacman -Qdt
Отримати дерево залежностей пакунку:
$ pactree ім'я_пакунку
Для отримання списку пакунків які залежать від встановленого пакунку можете скористатися whoneeds з пакунка pkgtools:
$ whoneeds ім'я_пакунку
Додаткові команди
Оновити систему та встановити деякі пакунки:
# pacman -Syu ім'я_пакунку1 ім'я_пакунку2 ...
Завантажити пакунок без встановлення:
# pacman -Sw ім'я_пакунку
Встановити 'локальний' пакунок, який не з віддаленого репозиторію (наприклад, пакунок з AUR):
# pacman -U /шлях/до/пакунку/ім'я_пакунку-версія.pkg.tar.xz
Q: Pacman падає під час оновлення!
- Завантажтеся з Arch live CD.
- Змонтуйте вашу кореневу файлову систему.
- Оновіть бази даних за допомогою
pacman -Syy. - Перевстановіть поламані пакунки
pacman -r /шлях/до/кореневого_розділу -S пакунок.
Q: Я встановив програмне забезпечення, використовуючи "make install"; ці файли не належать жодному пакунку!
--force(pacman -S --force). Читайте Pacman Tips#Identify files not owned by any package про скрипт, який шукає в файловій системі покинуті файли.
Q: Мені потрібен пакунок з конкретним файлом. Як я дізнаюся, якому пакунку належить цей файл?
Q: Pacman повністю зламаний! Як мені перевстановити його?
Q: Після оновлення моєї системи, я отримую помилку "unable to find root device"("не вдалося знайти корінь пристрою"), після перезавантаження моя система більше не зантажується.
--force може бути причиною). У вас є два варіанти:
1. СпробуйтеFallback (резервний) образ.
- Після запуску системи, виконайте наступну команду (для перезбирання ядра linux) або з консолі або з терміналу, щоб відновити initramfs образ:
-
# mkinitcpio -p linux
2. Якщо це не працює, з дистрибутиву Arch 2012(або пізніше)року випуску (CD / DVD або USB флешки), виконайте:
-
# mount /dev/sdxY /mnt #Монтуємо ваш кореневий розділ. # mount /dev/sdxZ /mnt/boot #У випадку, якщо ви використовуєте окремий /boot розділ. # arch-chroot /mnt # pacman -Syu mkinitcpio systemd linux
- Перевстановлення ядра (пакунок linux) автоматично регенерує образ initramfs -
mkinitcpio -p linux. Немає необхідності робити це окремо.
- Після цього, рекомендується запустити
exit,umount /mnt/{boot,}таreboot.
Q: Підпис від "User <email@gmail.com>" не має довіри, інсталяція не вдалася
archlinux-keyring першим пакунком, тобто pacman -S archlinux-keyring.Q: Я постійно отримую
- Помилка: Ім'яПакунку: підпис "User <email@archlinux.org>" не є дійсним
- Помилка: не вдалося завершити транзакцію (невірний або пошкоджений пакунок (PGP підпису))
- Відбулися помилки, пакунки не були оновлені.
# hwclock -wперш ніж намагатися встановити / оновити пакунок знову.
Q: Я постійно отримую помилку "не вдалося завершити транзакцію (невірний або пошкоджений пакунок)"
*.part (частково завантажені пакунки) в /var/cache/pacman/pkg і видаліть їх (часто викликано використанням користувацьких XferCommand у pacman.conf).Q: Я отримую помилку кожен раз, коли я використовую pacman: 'Попередження: поточний стандарт є недійсним; використовується за замовчанням "C" локаль'. Що мені робити?
Q: Як я можу отримати для Pacman параметри мого проксі-сервера?
$http_proxy, $ftp_proxy й т.і.) встановлені. Якщо ви використовуєте Pacman з sudo, вам потрібно налаштувати sudo для змінних середовищ Pacman.