Difference between revisions of "Pacman (Русский)"

From ArchWiki
Jump to: navigation, search
m (Fixed mistakes and russian links)
m (spell check)
Line 269: Line 269:
 
=== Получение списка установленных пакетов для быстрого восстановления системы ===
 
=== Получение списка установленных пакетов для быстрого восстановления системы ===
  
Хорошей практикой явлется сохранение списка всех установленых пакетов. Если ваша система "упала" и её сложно восстановить, pacman может легко переустановить эти пакеты.
+
Хорошей практикой является сохранение списка всех установленных пакетов. Если ваша система "упала" и её сложно восстановить, pacman может легко переустановить эти пакеты.
  
 
Сначала сохраните в список пакеты (доступные в репозитории):
 
Сначала сохраните в список пакеты (доступные в репозитории):
 
 
  pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist
 
  pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist
  
безопасная, но и более сложная альтернатива (во избежание удаления частичных совпадений)
+
безопасная, но и более сложная альтернатива (во избежание удаления частичных совпадений):
  # comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist
+
  comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist
  
 
Сохраните этот файл на флешке или на другом носителе.
 
Сохраните этот файл на флешке или на другом носителе.

Revision as of 01:37, 12 May 2013

Описание help replacing me
pacman - пакетный менеджер Arch Linux. Менеджеры пакетов используются для установки, обновления и удаления программного обеспечения. В данной статье рассматриваются основные приемы и советы по устранению неполадок.
Обзор
Template:Package management overview
Дополнительно
Downgrading Packages (Русский)
Improve Pacman Performance (Русский)
pacman GUI Frontends (Русский)
pacman Rosetta
pacman Tips
Pacman package signing
FAQ_(Русский)#Управление_пакетами
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 и makepkg). Pacman позволяет пользователям с легкостью управлять и настраивать под себя пакеты, вне зависимости от того, из официального ли они репозитория Arch или собраны самостоятельно.

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

Pacman написан на языке C и использует формат пакетов .pkg.tar.xz.

Tip: Официальный пакет pacman включает в себя много дополнительных полезных инструментов, таких как makepkg, pactree, vercmp и другие. Весь перечень можно получить с помощью pacman -Ql pacman | grep bin

Конфигурация

Основные настройки pacman находятся в /etc/pacman.conf. В этом файле пользователь может указать все нужные ему настройки программы. Подробнее о конфигурировании можно прочесть в man pacman.conf.

Есть пасхалка: при добавлении в # Misc options параметра ILoveCandy скучные решетки превращаются в пакмена и точки, которые он ест :D

Основные параметры

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

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

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

IgnorePkg=имя_пакета

В случае, если необходимо в строке IgnorePkg перечислить несколько пакетов, разделяйте их имена пробелами:

IgnorePkg=имя_пакета1 имя_пакета2 имя_пакета3

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

Как и в случае с пакетом, вы также можете запретить обновления группы пакетов, например так:

IgnoreGroup=имя_группы

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

Для пропуска каталогов, в которые должны будут устанавливаться файлы, перечислите эти каталоги в NoExtract. Например, для игнорирования установки юнитов systemd:

NoExtract=usr/lib/systemd/system/*

Репозитории

В этом разделе файла pacman.conf указываются репозитории, которые будут использоваться. Их можно указать прямо здесь или подключить из другого файла.

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

Далее приведен пример использования зеркал официальных репозиториев, которые перечислены в /etc/pacman.d/mirrorlist.


#[testing]
#SigLevel = PackageRequired	
#Include = /etc/pacman.d/mirrorlist

[core]
#SigLevel = PackageRequired
Include=/etc/pacman.d/mirrorlist

[extra]
#SigLevel = PackageOptional
Include = /etc/pacman.d/mirrorlist
	
#[community-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

[community]
#SigLevel = PackageOptional
Include = /etc/pacman.d/mirrorlist

#Если в вашей x86_64 системе необходимо запускать 32-битные программы,
#раскоментируйте нужные multilib репозитории.

#[multilib-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

[multilib]
#SigLevel = PackageOptional
Include = /etc/pacman.d/mirrorlist

# Использование собственного репозитория. Обратитесь к справочной странице pacman для
# получения дополнительной информации по созданию собственных репозиториев.
	
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
Warning: Будьте осторожны при использовании репозитория [testing]. Пакеты в нём активно разрабатываются и обновляются, это может сказаться на стабильности и работоспособности других пакетов или системы в целом. Людям, использующим репозиторий [testing], для своевременного получения информации рекомендуется подписаться на список рассылки arch-dev-public.

Безопасность пакетов

В Pacman 4 реализован дополнительный уровень безопасности устанавливаемых пакетов - подписи пакетов. Для включения проверки подписей перейдите сюда.

Использование

Чтобы узнать обо всех возможностях pacman, изучите man pacman. Примеры ниже - это только небольшая подборка доступных операций.

Установка пакетов

Установка определенных пакетов

Для установки одного пакета или группы пакетов (включая зависимости) используйте следующую команду:

# pacman -S имя_пакета1 имя_пакета2 ...

Если пакет имеет несколько версий в разных репозиториях (например в [extra] и [testing]), можно указать, откуда именно следует установить пакет:

# pacman -S extra/имя_пакета

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

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

# pacman -S gnome

будут установлены все пакеты, входящие в группу gnome. Чтобы увидеть список пакетов, принадлежащих к группе gnome, выполните:

# pacman -Sg gnome

Перечень доступных групп пакетов можно изучить, посетив https://www.archlinux.org/groups/.

Note: Если не будет использована опция --needed, то при установке группы будут переустановлены все ранее установленные в систему и принадлежащие этой группе пакеты (даже если установленные в системе пакеты будут иметь последнюю доступную версию).
Warning: При установке недостаточно одного обновления списка пакетов (например, pacman -Sy имя_пакета): могут возникнуть проблемы с зависимостями. Смотрите разделы [1] и Частичные обновления не поддерживаются. В первую очередь, перед установкой новых пакетов выполняйте полное обновление системы.

Удаление пакетов

Для удаления пакета без удаления установленных зависимостей:

# pacman -R имя_пакета

Для удаления пакета со всеми зависимостями, не используемыми другими установленными пакетами:

# pacman -Rs имя_пакета

Для удаления пакета, его зависимостей и всех пакетов, зависящих от целевого пакета:

Warning: Эта операция рекурсивна и должна использоваться с осторожностью, так как появляется риск удалить много потенциально необходимых пакетов.
# pacman -Rsc имя_пакета

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

# pacman -Rdd package_name

По умолчанию pacman создает резервные копии конфигурационных файлов удаляемых приложений с помощью добавления к ним расширения .pacsave. Если вы хотите удалить и эти файлы, используйте ключ -n:

# pacman -Rn имя_пакета
Note: pacman не удаляет конфигурационных файлов, созданных самими приложениями (например, "dot-файлы" в вашей домашней папке).

Обновление системы

pacman может обновить все пакеты системы одной командой. Количество пакетов зависит от того, насколько свежие пакеты стоят в вашей системе. Лучший вариант - синхронизация базы данных репозиториев И обновление вашей системы одной командой (не будут обновлены пакеты из 'локальных' и не настроенных репозиториев):

# pacman -Syu
Warning: В связи с тем, что Arch является постоянно обновляемым дистрибутивом, пользователям следует помнить, что после или в процессе обновления могут возникнуть непредвиденные трудности. Поэтому обновляться следует с осторожностью. Это означает, что если, например, ожидаются большие изменения или нововведения в обновляемых пакетах, то обновлять систему лучше тогда, когда у пользователя будет достаточно свободного времени и он будет готов к решению возможных проблем.

pacman является мощным инструментом по управлению пакетами, но он не сможет обработать все возможные ситуации. Если вас это смущает - прочтите Путь Arch Linux. Пользователь должен быть внимателен и сам заниматься обеспечением работоспособности своей системы. При выполнении обновления системы крайне важно читать и осмысливать всю информацию, которую выводит pacman. Если вы изменяли конфигурационный файл, то при обновлении, во избежание перезаписи, будет создан новый конфигурационный файл .pacnew. pacman предложит объединить его с вашим конфигурационным файлом. Выполнять объединение файлов придется вручную и, лучше всего, сразу после обновления. Для получения дополнительной информации обратитесь к руководству Pacnew and Pacsave Files.

Tip: Не забывайте, что вывод pacman заносится в /var/log/pacman.log.

Перед обновлением желательно посетить главную страницу Arch Linux, главную страницу русскоязычного сообщества Arch Linux и проверить там последние новости (или подписаться на канал RSS): для обновлений, требующих дополнительного вмешательства (если выполнения указанных pacman-ом действий не достаточно), будут добавлены соответствующие новости.

Если решить проблемы согласно инструкциям не удаётся, поищите подобные сообщения на форуме. Вполне возможно, что другие пользователи, столкнувшиеся с подобными проблемами, уже предоставили варианты по их решению.

Запросы к базе данных пакетов

pacman с помощью флага -Q может искать пакеты в локальной базе данных; смотрите:

$ pacman -Q --help

и с помощью флага -S в базе данных (репозиториях); смотрите:

$ pacman -S --help

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

$ pacman -Ss условие1 условие2 ...

Поиск пакета по имени в базе данных (вывод без дополнительной информации):

$ pacman -Sqs  условие1 условие2 ...

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

$ pacman -Qs условие1 условие2 ...

Для отображения обширной информации о данном пакете:

$ pacman -Si имя_пакета

для установленных пакетов:

$ pacman -Qi имя_пакета

Использование сдвоенного флага -i позволит просмотреть список резервных копий файлов и список измененных файлов:

$ pacman -Qii имя_пакета

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

$ pacman -Ql имя_пакета

Для получения списка файлов неустановленного пакета можно использовать утилиту pkgfile из состава пакета pkgtools или nosr, входящую в пакет nosr-gitAUR, который расположен в AUR (Русский).

Чтобы узнать, какому пакету принадлежит нужный файл:

$ pacman -Qo /путь/к/файлу/имя_файла

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

$ pacman -Qdt

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

$ pactree имя_пакета

Для получения списка пакетов, которые зависят от вашего пакета, можно воспользоваться утилитой whoneeds из состава пакета pkgtools:

$ whoneeds имя_пакета

Получение списка установленных пакетов для быстрого восстановления системы

Хорошей практикой является сохранение списка всех установленных пакетов. Если ваша система "упала" и её сложно восстановить, pacman может легко переустановить эти пакеты.

Сначала сохраните в список пакеты (доступные в репозитории):

pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist

безопасная, но и более сложная альтернатива (во избежание удаления частичных совпадений):

comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist

Сохраните этот файл на флешке или на другом носителе.

Скопируйте файл pkglist в новую систему, перейдите в эту папку. Для восстановления используйте команду:

pacman -S $(cat pkglist)

Получение списка файлов, не принадлежащих ни одному пакету

Если вы всегда хотите держать свою систему в чистоте и уважаете Путь Arch, вы должны иногда проверять файлы, отсутствующие в базе данных pacman. Эти файлы зачастую установлены сторонними приложениями с использованием ./configure; make; make install и т.п. Вы можете найти все эти установленные файлы (или симлинки), используя этот простой скрипт:

#!/bin/bash
time /usr/bin/pacman -Ql | cut -d ' ' -f 2- | sort -u > db.txt
time find /arch /bin /boot /etc /lib /opt /sbin /usr 2>/dev/null | while read i; do
	if [ ! -d "$i" ]; then
		echo "$i"
	fi;
done | sort -u > fs.txt
time comm -23 fs.txt db.txt > non-db.txt

#для проверки:
#cat non-db.txt | while read i; do pacman -Qo "$i" 2>&1; done | tee test.txt

Заметьте, все файлы, указанные в non-db.txt, НЕ БУДУТ удалены без подтверждения. Здесь могут находиться конфигурационные файлы, журналы и др. Используйте этот список только если знаете, что вы делаете.

Дополнительные команды

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

# pacman -Syu имя_пакета1 имя_пакета2 ...

Скачать пакет, но не устанавливать его:

# pacman -Sw имя_пакета

Установить локальный пакет (не из репозитория):

# pacman -U /путь/к/пакету/имя_пакета-version.pkg.tar.xz

Установить 'не локальный' пакет (не из репозитория):

# pacman -U http://www.example.com/repo/example.pkg.tar.xz

Удалить из кэша (/var/cache/pacman/pkg) неустановленные пакеты:

Warning: Будут удалены все пакеты из кэша. Поэтому, в случае возникновения проблем после обновлениий, появятся дополнительные трудности, связанные с откатом версий пакетов.
# pacman -Sc

Полная очистка кэша пакетов:

Warning: Будут удалены все пакеты из кэша. Выполняйте это только в том случае, если у вас всё нормально работает и вы уверены, что вам не понадобится откатывать какой-либо пакет.
# pacman -Scc
Tip: В качестве альтернативы ключам -Sc и -Scc можно использовать пакет CachecleanAUR, доступный в AUR. Это скрипт на python, который позволяет выборочно очищать кэш pacman'а от старых версий пакетов

Частичные обновления официально не поддерживаются

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

Именно поэтому частичное обновление не поддерживается. Не используйте pacman -Sy package или другие эквиваленты pacman -Sy и pacman -S package. Всегда перед установкой пакетов синхронизируйте репозитории и обновляйте систему полностью. По той же самой причине нужно быть осторожными при использовании IgnorePkg и IgnoreGroup.

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

Устранение проблем

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Смотрите также