Меню Рубрики

Установка и удаление программ archlinux

Удаление программ Linux

Не всегда нам нужно только устанавливать программы. Иногда нужно очистить систему или удалить лишние пакеты и файлы чтобы освободить место на диске. Удаление программ в большинстве случаев выполняется очень просто вне зависимости от дистрибутива. Но иногда могут возникнуть сложности, например, с программами, которые сами создают множество файлов в файловой системе или программы, установленные вручную.

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

1. Удалить программу через GUI

В Ubuntu и многих других дистрибутивах необязательно использовать консоль для удаления программ, существуют центры приложений и графические интерфейсы. Здесь достаточно запустить утилиту, выбрать нужную программу или пакет и удалить ее. Например, во многих дистрибутивах применяется Gnome Software. Сначала запустите его из главного меню:

Затем найдите нужную программу, например, Gimp:

Откройте ее и нажмите кнопку «Удалить»:

Далее, подтвердите что ее нужно удалить и введите пароль суперпользователя:

После завершения работы, программа будет полностью удалена с вашего компьютера.

2. Удаление программ через пакетный менеджер

Самый простой и часто используемый способ удалить программу linux — это использовать стандартный пакетный менеджер из терминала. Если вы использовали пакетный менеджер для установки программы то единственным верным способом ее удаления будет тоже он. В зависимости от дистрибутива команды удаления будут отличаться, но, в целом, они будут иметь похожий синтаксис. Мы рассмотрим примеры для самых популярных дистрибутивов. Например, нам нужно удалить Firefox. В Ubuntu, Debian, Linux Mint и других дистрибутивах этого семейства команда будет выглядеть вот так:

Эта команда удалит пакет из системы, но некоторые конфигурационные файлы останутся и будут занимать место. Чтобы полностью удалить программу используйте опцию purge:

Более подробно о том, как удалить программу в Linux в Ubuntu мы рассматривали в отдельной статье, в том числе и работу с PPA. Для удаления пакета в CentOS или Red Hat выполните:

В Fedora и основанных на ней дистрибутивах, кроме Red Hat, используется новый пакетный менеджер — dnf:

В OpenSUSE используется собственный пакетный менеджер — zypper:

sudo zypper remove firefox

Удаление программ Linux с помощью пакетного менеджера позволяет полностью очистить систему от остатков программы. После завершения удаления рекомендуется перезагрузить компьютер, чтобы убедиться, что все файлы были удалены. Теперь вы знаете как удалить программу в Linux через терминал.

Пакетный менеджер раскладывал файлы программы по системе, а значит он знает что и где находится, значит сможет все правильно удалить. Но если вы компилировали программу и устанавливали ее установочным скриптом, то вы не сможете удалить ее с помощью пакетного менеджера, поскольку он ничего не знает о ней.

3. Удаление программ без пакетного менеджера

Здесь тоже есть несколько вариантов. Если вы устанавливали программу из исходников с помощью компиляции и make install, то она разложена по всей системе. А это значит, что вы не сможете просто зайти и удалить папку с ней, как в Windows. Вам придется использовать тот же скрипт, что вы использовали для установки. Откройте терминал и выполните:

cd /папка/с/исходниками
$ sudo make uninstall

Первая команда переходит в папку с исходниками, вторая — удаляет программу. Если скрипта не сохранилось, то вы можете скачать его из интернета. Иначе программу не удалить. Еще один вариант установки программ — с помощью скрипта из официального сайта. Такие программы удалить намного проще. Они устанавливаются, как правило, в одну папку, для них существует специальный каталог в файловой системе Linux. Здесь они создают новую папку, где расположены все их файлы, включая исполняемые и файлы настроек. Например, чтобы удалить браузер Google Chrome, установленный, таким образом, нужно набрать:

sudo rm -Rf /opt/google-chrome/

Возможно, после удаления программы, вам стоит проверить папку /etc, так как там обязательно должны были остаться файлы настроек пути к библиотекам этой программы, исполняемым файлам и файлы сервисов. Также после удаления программ рекомендуется делать очистку системы Ubuntu.

Выводы

В этой статье мы рассмотрели как выполняется удаление программ Linux для различных дистрибутивов. Как видите, если правильно подходить к установке, то удалить программу очень просто. Сложности возникнут только если вы использовали нестандартные пути получения программ, что очень не рекомендуется.

источник

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

Все существующие дистрибутивы Linux для того, чтобы осуществлять операции по обновлению ПО и библиотек ОС в основном используют пакетные менеджеры. Пакетный менеджер является ключевой программой, который зачастую и отличает различие одного дистрибутива Linux от другого.

Общее описание технологии

Пакетный менеджер pacman является основным признаком дистрибутива ArchLinux. Archlinux pacman предназначен для установки программ и пакетов в дистрибутиве ArchLinux. pacman оперирует пакетами, которые, как и в случае с другими пакетными менеджерами представляют из себя бинарные архивы, содержащие некоторые данные для установки.

Pacman сам по себе может использоваться не только в ArchLinux и его производных, но и в прочих дистрибутивах. Возможна адаптация pacman для использования RPM, а также пакетов прочего типа, несовместимого со стандартным ArchLinux.

Pacman, как и RPM имеет возможность загрузки части пакета при обновлении. При работе pacman зачастую значительно быстрее обрабатывает транзакции, нежели это делает DPKG или RPM.

История разработки ArchLinux

Первые версии ArchLinux на самом деле являлись просто некоторой сборкой LFS, содержащим набор скриптов для сборки и развертывания дистрибутива. Очень долго, для установки самого дистрибутива pacman вообще не использовался, установочный образ содержал специализированную программу, называемую Arch Install Frimewere (AIF).

Сам по себе, дистрибутив в первых своих версиях содержал примитивную скрипт-сборочную пакетную систему, называемую Arch Build System (ABS). Суть такой примитивной пакетной системы заключался в предоставлении быстрого и удобного метода сборки пакетов из исходного кода. Но это не то, что хотел иметь собственно разработчик Arch Linux. По этой причине была разработана утилита pacman, которая и предназначалась для оперирования с уже собранными бинарными пакетами. ABS затем была переназначена для того, чтобы заниматься сборкой пакетов для pacman.

В дальнейшем, ABS в Archlinux позволил создать пользовательский репозиторий рецептов для сборки пакетов, называемый AUR. Из AUR возможна установка пакетов ArchLinux, которых нет даже в официальных репозиториях.

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

Установка пакетов ArchLinux, их обновление, а также их удаление как мы уже поняли выше, осуществляются при помощи pacman. Данная утилита достаточно проста. Рассмотрим команды ее синтаксис:

$ sudo pacman [опция]

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

  • -S – установка программ в archlinux;
  • -Sw — скачать пакет но не устанавливать;
  • -U — установить локальный пакет;
  • -s – поиск пакета;
  • -i – информация;
  • -u – обновить пакеты;
  • -y – обновить списки пакетов из репозиториев;
  • -dd – игнорирование зависимостей;
  • -g – запрос информации о группе;
  • -l – вывод пакетов в виде списка;
  • -o – вывод в файл;
  • -R – удаление;
  • -Q – запрос к базе данных установленных пакетов;
  • -F – поиск по файлам;
  • -D – задание и изменение цели установки уже имеющегося пакета;
  • -R — удалить пакет;
  • -Rn — удалять резервные копии конфигурационных файлов;
  • -Rs — удалять зависимости пакета;

Это основные опции, которые будут применяться в этой инструкции.

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

Сначала рассмотрим как выполняется установка программ ArchLinux с помощью Pacman из официальных репозиториев, а потом остановимся на пользовательском репозитории AUR. Теперь рассмотрим основные команды pacman archlinux.

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

Опции для pacman при использовании комбинируются в одну фразу, таким образом, например, для обновления репозиториев и обновления ОС команда будет выглядеть так:

Читайте также:  Установка кассетных подвесных потолков

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

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

Удаление конкретного пакета:

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

sudo pacman -Rdd [имя пакета]

Поиск пакета в репозиториях:

Получение информации о пакете:

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

Просмотр списка всех установленных пакетов:

Просмотр списка файлов пакета:

Установка пакетов из AUR

К сожалению, не все пакеты есть в официальных репозиториях, многие вам придется искать пакеты на стороне. Большинство пакетов уже собраны и подготовлены пользователями в репозитории AUR. Для этого можно использовать пакет pacaur. Его можно установить командой:

curl -o install.sh https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh
$ sudo sh install.sh

Теперь вы можете использовать те же опции что и в утилите pacman в pacaur чтобы пользоваться AUR, например, поиск пакета:

Графический интерфейс Pacman

Для любителей пользоваться графическим интерфейсом вместо терминала в ArchLinux есть утилита pamac. Это простой менеджер приложений, чем-то похожий на стандартный менеджер приложений Ubuntu:

Для установки пакета достаточно открыть для него контекстное меню и нажать «Установить»:

Удаление пакетов выполняется тем же образом.

Выводы

В этой статье мы рассмотрели как выполняется установка пакетов ArchLinux различными способами. А также немного поговорили про историю разработки дистрибутива.

источник

pacman (Русский)

Система управления пакетами pacman — одна из отличительных особенностей Arch Linux. Она объединила в себе простую систему сборки и пакеты в двоичном формате. Цель pacman — организация удобного управления пакетами вне зависимости от того, взяты они из официальных репозиториев или же собраны самостоятельно.

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

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

Contents

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

В этом разделе приведена небольшая подборка доступных возможностей pacman. Больше примеров можно найти в руководстве pacman(8) .

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

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

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

Для установки списка пакетов при помощи поиска по регулярному выражению (смотрите эту ветку форума) выполните:

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

Чтобы установить несколько пакетов с частично совпадающими названиями, используйте фигурные скобки:

Можно использовать несколько уровней вложенных фигурных скобок:

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

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

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

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

— будут выбраны все пакеты в диапазоне с 1 по 10, а также 15;

— будут выбраны все пакеты, кроме входящих в диапазон с 5 по 8, а также 2.

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

Перечень групп можно найти на странице https://www.archlinux.org/groups/.

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

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

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

Команда выше может не сработать при удалении группы с другими необходимыми пакетами. В этом случае используйте команду:

Удалить пакет, его зависимости, а также все пакеты, для которых он сам является зависимостью:

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

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

Обновление пакетов

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

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

Для взаимодействия с базами данных в pacman предусмотрены флаги -Q (база данных пакетов), -S (база данных синхронизации) и -F (база данных файлов). Команды pacman -Q —help , pacman -S —help и pacman -F —help выведут список возможных опций для этих флагов.

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

Иногда поиск с параметром -s выдаёт много ненужных результатов, поэтому имеет смысл ограничить поиск только названиями пакетов, отключив поиск по описаниям и другим полям. Для этого можно использовать регулярные выражения:

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

Искать пакет в репозиториях по названию файла:

Показать подробную информацию о пакете в репозитории:

То же самое — для установленного пакета:

Если указать сразу два флага -i , то будет также выведен список резервных копий файлов и их состояние (модифицирован/нет):

Вывести список файлов установленного пакета:

Вывести список файлов пакета в репозитории:

Проверить наличие файлов установленного пакета:

С двумя флагами -k проверка будет более тщательной.

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

Узнать, какому пакету в репозиториях принадлежит файл:

Вывести список пакетов, которые больше не требуются как зависимости («пакеты-сироты»):

Вывести список пакетов, установленных явно (explicitly) и не являющихся зависимостями для других пакетов:

Другие полезные команды можно найти в статье pacman/Советы и приёмы.

Pactree

Дерево зависимостей пакета можно узнать командой

Чтобы увидеть «обратное» дерево зависимостей, т.е. список пакетов, которые сами зависят от указанного, используйте флаг pactree -r или утилиту whoneeds из пакета pkgtools AUR .

Структура базы данных

Базы данных pacman обычно размещаются в каталоге /var/lib/pacman/sync . Для каждого подключённого в файле /etc/pacman.conf репозитория в этом каталоге находится соответствующий файл базы данных. Сам файл представляет собой gzip-сжатый tar-архив (с расширением .db), содержащий по одному каталогу для каждого пакета. Например, для пакета which содержимое каталога имеет вид:

В файле desc хранятся мета-данные пакета — описание, список зависимостей, размер, хэш-сумма MD5 и т.д.

Очистка кэша пакетов

Скачиваемые пакеты pacman сохраняет в каталог ( /var/cache/pacman/pkg/ ). Устаревшие версии пакетов, как и версии пакетов удалённых, автоматически не удаляются. Такой подход обладает следующими преимуществами:

  1. Можно выполнить откат пакета без необходимости искать где-то (например, в архиве Arch Linux) его старую версию;
  2. Удалённый по ошибке пакет можно заново установить из кэша, не скачивая из репозитория.

Тем не менее, это означает, что время от времени необходимо чистить этот каталог самостоятельно, чтобы предотвратить его разрастание.

Скрипт paccache(8) из пакета pacman-contrib удаляет из кэша старые версии пакетов, как установленных в системе, так и уже удалённых, по умолчанию оставляя только 3 самые свежие:

Включите и запустите paccache.timer , чтобы очистка кэша выполнялась каждую неделю автоматически.

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

Флаг -u / —uninstalled позволяет ограничить действие paccache только версиями пакетов, которых в системе уже нет. Например, команда удаления всех кэшированных версий удалённых пакетов:

Список возможных опций выводится командой paccache -h .

В pacman есть встроеный функционал очистки кэша и удаления баз данных репозиториев, которые были заблокированы в файле /etc/pacman.conf . Однако pacman гораздо менее гибок по сравнению с paccache и не даёт возможности сохранить некоторое количество последних версий, просто очищая каталог кэша.

Чтобы удалить все кэшированные версии удалённых пакетов и неиспользуемые базы данных, выполните:

Читайте также:  Установка подогрева на кио рио

Чтобы удалить вообще все файлы из кэша, укажите флаг очистки дважды:

pkgcacheclean AUR и pacleaner AUR — две альтернативные программы для очистки кэша.

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

Скачать пакет без установки:

Установить пакет не из удалённого репозитория, а хранящийся локально (например, предварительно скачанный из AUR):

Сохранить копию локально устанавливаемого пакета в кэше pacman:

Скачать и установить пакет из удаленного источника (но и не из репозиториев, перечисленных в конфигурационном файле pacman):

Флаг -p можно использовать для подавления стандартных действий -S , -U и -R .

Pacman всегда выводит список пакетов, которые будут установлены или удалены, и спрашивает разрешение пользователя перед выполнением действия.

Причина установки

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

  • установлен вручную (explicitly-installed): установлен пользователем командами pacman -S или pacman -U ;
  • зависимость (dependency): установлен автоматически в процессе установки другого пакета, поскольку являлся его зависимостью.

При установке пакета можно принудительно изменить причину установки на зависимость:

При переустановке пакета текущая причина установки не меняется.

Список установленных вручную пакетов выводится командой pacman -Qe , а пакетов-зависимостей — командой pacman -Qd .

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

Для противоположной операции воспользуйтесь флагом —asexplicit .

Поиск пакета по названию файла

Синхронизировать базу данных файлов:

Найти пакет, содержащий определённый файл (например, файл pacman ):

Утилита pkgfile также осуществляет поиск пакетов по файлам, опираясь на свою базу данных; она обладает расширенной функциональностью по сравнению с pacman -F .

Настройка

Настройки pacman находятся в файле /etc/pacman.conf . Подробную информацию о файле настроек можно найти в руководстве pacman.conf(5) .

Глобальные параметры

Глобальные настройки pacman указываются в разделе [options] . Помимо руководства pacman.conf(5) некоторая информация о настройках из этого раздела содержится в комментариях самого файла pacman.conf .

Сравнение версий пакетов перед обновлением

Чтобы увидеть сравнение старых и новых версий доступных для обновления пакетов, раскомментируйте строку VerbosePkgLists в файле pacman.conf . Теперь команда pacman -Syu будет выводить примерно следующее:

Запрет на обновление отдельных пакетов

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

Если необходимо пропустить обновление для нескольких пакетов, укажите названия, разделив их пробелами, или используйте несколько строк IgnorePkg . Также можно использовать шаблоны поиска. Если нужно пропустить обновление пакета всего один раз, то лучше использовать опцию командной строки —ignore — здесь в качестве разделителя для названий пакетов используется запятая.

При необходимости обновить пакет из списка исключений всё же можно, командой pacman -S название_пакета : pacman при этом выведет напоминание, что пакет указан в IgnorePkg .

Запрет на обновление группы пакетов

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

Запрет на обновление файлов

Файлы, указанные в параметре NoUpgrade , не будут изменяться в процессе установки/обновления; новые версии этих файлов будут сохраняться с расширением .pacnew .

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

Чтобы запретить установку файлов в определённые каталоги, перечислите их в параметре NoExtract . Например, запрет установки юнитов systemd:

Работа с несколькими файлами настроек

Если имеется несколько конфигурационных файлов (например, основная конфигурация и дополнительная с подключённым репозиторием testing), то работу с ними можно упростить, если вынести общие пункты настроек в отдельный файл и подключать его с помощью опции Include :

В этом примере общие настройки вынесены в файл /путь/к/файлу/общих/настроек . Приведённую выше строку нужно добавить в оба файла настроек, основной и дополнительный.

Системные пре- и пост-транзакционные хуки хранятся в каталоге /usr/share/libalpm/hooks ; pacman может выполнять хуки как из системного каталога, так и из каталогов, подключённых опцией — HookDir в файле pacman.conf (каталог по умолчанию — /etc/pacman.d/hooks ). Название файла хука должно заканчиваться на .hook . Хуки pacman неинтерактивны.

В частности, хуки pacman используются в связке с systemd-sysusers и systemd-tmpfiles для автоматического создания пользователей и файлов в процессе установки пакетов. Например, пакет tomcat8 требует наличия пользователя tomcat8 и определённых каталогов, ему принадлежащих. Хуки systemd-sysusers.hook и systemd-tmpfiles.hook вызывают команды systemd-sysusers и systemd-tmpfiles соответственно, когда pacman видит в пакете указания на пользователей и временные файлы.

Хуки alpm подробно описаны в руководстве alpm-hooks(5) .

Репозитории и зеркала

Помимо общего раздела [options] в файле pacman.conf также содержатся отдельные разделы для каждого из репозиториев. Репозиторий — набор пакетов, который физически находится на одном или нескольких серверах; эти сервера называются зеркалами репозитория.

Репозитории делятся на официальные и неофициальные. Порядок репозиториев в файле настроек имеет значение: если в разных репозиториях содержатся пакеты с одинаковым названием, то вне зависимости от их версий предпочтение отдаётся тому пакету, репозиторий которого ближе к началу файла. Чтобы подключённый репозиторий можно было использовать, сначала необходимо выполнить полное обновление системы.

Разделы репозиториев в файле pacman.conf содержат информацию о зеркалах. Список зеркал хранится в отдельном файле и подключается параметром Include . Например, зеркала официальных репозиториев подключаются из файла /etc/pacman.d/mirrorlist . Настройка зеркал описана в статье Mirrors.

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

Pacman использует цифровые подписи в качестве дополнительного механизма обеспечения безопасности пакетов. Настройки проверки подписей задаются параметром SigLevel . По умолчанию в разделе [options] задано глобальное значение SigLevel = Required DatabaseOptional , что означает проверку подписей всех пакетов без исключения. Можно задать особые правила проверки подписей для отдельных репозиториев, указав параметр SigLevel в соответствующих разделах. Подробнее см. pacman/Package signing.

Решение проблем

Failed to commit transaction (conflicting files)

Следующее сообщение об ошибке [1]:

означает, что при выполнении операции были обнаружены конфликтующие файлы. Pacman не будет их перезаписывать автоматически. Это не ошибка, так сделано специально.

Проблема решается тривиально. Сначала проверьте, не принадлежит ли файл другому пакету ( pacman -Qo /путь/к/файлу ). Если принадлежит, создайте отчет об ошибке. Если проблемный файл не нужен другим пакетам, переименуйте его и перезапустите команду обновления. Если в дальнейшем проблем не возникнет, то старый файл можно удалить.

Если программа была установлена вручную без pacman — например, при помощи команды make install — необходимо удалить программу и все её файлы, а затем выполнить установку при помощи pacman. Смотрите также статью Поиск файлов, не принадлежащих ни одному пакету.

Информация о каждом установленном файле хранится в файле с метаданными пакета /var/lib/pacman/local/пакет-версия/files . При повреждении этого файла (он может быть пустым или отсутствовать) во время обновления пакета будет получена ошибка file exists in filesystem («файл существует в файловой системе»). Обычно такие ошибки возникают во время установки или обновления всего лишь одного пакета. Вместо ручного переименования или удаления конфликтующих файлов, принадлежащих данному пакету, лучше выполнить команду pacman -S —overwrite шаблон пакет , чтобы pacman принудительно перезаписал файлы, название которых совпадает с шаблоном.

Failed to commit transaction (invalid or corrupted package)

Удалите все файлы .part (частично скачанные пакеты) из кэша pacman /var/cache/pacman/pkg/ . Причиной ошибки чаще всего является пользовательская команда в параметре XferCommand файла pacman.conf .

Failed to init transaction (unable to lock database)

Когда pacman собирается внести изменения в базу данных пакетов, например, при установке пакета, он создает файл блокировки /var/lib/pacman/db.lck . Благодаря этому другой экземпляр pacman не сможет работать в то же самое время, что позволяет избежать повреждения базы.

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

Не удаётся найти пакет для установки

Эта ошибка проявляется в сообщениях Not found in sync db , Target not found или Failed retrieving file .

Читайте также:  Установка воздушного электроотопителя ртс

Удостоверьтесь, что пакет, который вы пытаетесь установить, действительно существует. Если это так, возможно, список хранящихся в репозиториях пакетов устарел. Выполните pacman -Syu , чтобы получить новый список и обновить систему. Также убедитесь, что выбранные зеркала в рабочем состоянии, а репозитории настроены правильно.

Также есть вероятность того, что в вашей системе не включен репозиторий, содержащий нужный пакет — например, пакет находится в репозитории multilib, но multilib не включен в файле pacman.conf .

Pacman падает при обновлении

Если при удалении пакетов pacman завершает свою работу с ошибкой «database write» («запись в базу данных»), и после этого все попытки переустановки или обновления пакетов завершаются неудачей, сделайте следующее:

  1. Загрузитесь, используя Arch Live USB. Желательно, чтобы версия pacman в образе была не старше той, что установлена в системе.
  2. Смонтируйте корневую файловую систему, например, командой mount /dev/sdaX /mnt от root, и убедитесь, что в точке монтирования достаточно свободного места (команда df -h ).
  3. Смонтируйте файловые системы proc, sys и dev: mount -t proc proc /mnt/proc; mount —rbind /sys /mnt/sys; mount —rbind /dev /mnt/dev
  4. Если в системе используются стандартное расположение баз данных и каталогов, то можно синхронизировать базу данных pacman и обновить систему командой pacman —sysroot /mnt -Syu от root.
  5. После обновления стоит убедиться, что в системе не осталось необновлённых нерабочих пакетов: find /mnt/usr/lib -size 0 .
  6. Если такие пакеты всё же есть, их нужно переустановить: pacman —sysroot /mnt -S package .

Переустановка pacman вручную

Даже если pacman не подаёт признаков жизни, всё ещё можно починить его вручную, загрузив последние версии пакетов и распаковав файлы в нужные места. Последовательность действий:

  1. Узнайте зависимости пакета pacman .
  2. Скачайте пакеты с любого рабочего зеркала.
  3. Извлеките каждый пакет в корневой каталог.
  4. Переустановите эти пакеты командами pacman -S —overwrite название_пакета , чтобы обновить базу данных.
  5. Выполните полное обновление системы.

Если у вас имеется доступ к другой работоспособной системе с Arch Linux, полный список зависимостей можно узнать командой

Возможно, вам необходимо обновить только несколько пакетов, в зависимости от серьёзности проблемы. Пример команды распаковки архива пакета:

Обратите внимание на флаг -w , который включает интерактивный режим. Запускать распаковку неинтерактивно рискованно, потому что можно перезаписать важный файл. Также не забудьте, что пакеты нужно распаковывать в правильном порядке (сначала зависимости). На форуме рассмотрен пример процесса восстановления работоспособности pacman c несколькими неработающими пакетами-зависимостями.

Ошибка «Unable to find root device» после перезагрузки

Вероятно, при обновлении ядра был повреждён образ initramfs (например, при использовании pacman с опцией —overwrite ). Для восстановления работоспособности есть два варианта, и первый из них — использовать fallback-образ.

Когда система запустится, выполните команду пересборки образа initramfs либо из консоли, либо из терминала (для стандартного ядра linux ):

Если этот способ не сработает, загрузитесь с Live-USB, смонтируйте корневой и загрузочный разделы, после чего сделайте chroot командой arch-chroot:

Переустановка ядра (пакета linux ) автоматически пересоздаст образ initramfs при помощи mkinitcpio -p linux . Нет необходимости дополнительно вводить эту команду.

После всего этого рекомендуется выполнить exit , umount /mnt/ и reboot .

«_is_unknown_trust,_installation_failed»>Signature from «User » is unknown trust, installation failed

  • Обновите существующие ключи командой pacman-key —refresh-keys .
  • Вручную обновите пакет archlinux-keyring командой pacman -Sy archlinux-keyring && pacman -Su .
  • Выполните полный сброс ключей.

Требование импортировать ключи PGP

При установке Arch Linux со старого ISO-образа скорее всего вы получите сообщение о необходимости выполнить импорт PGP-ключей — подтвердите загрузку. Если добавить ключи всё же не получится, синхронизируйте связку ключей или обновите пакет archlinux-keyring (см. «_is_unknown_trust,_installation_failed»>выше).

Error: key «0123456789ABCDEF» could not be looked up remotely

Если пакеты подписаны свежими ключами, которые были добавлены к archlinux-keyring совсем недавно, это ключи могут оказаться недоступны в процессе обновления системы (проблема курицы и яйца). Установленный пакет archlinux-keyring должен обновиться, чтобы получить новые ключи. Pacman попытается обойти эту проблему обращением к серверу ключей, но это может оказаться невыполнимо из-за работы прокси или межсетевого экрана и приведёт к ошибке. Обновите пакет archlinux-keyring как описано «_is_unknown_trust,_installation_failed»>выше.

«_is_invalid,_installation_failed»>Signature from «User » is invalid, installation failed

Такая ошибка может появиться, если системное время установлено неверно и подписи ключей кажутся устаревшими:

Задайте правильное время (например, командой # ntpd -qg ) и выполните # hwclock -w , после чего установите нужные пакеты или обновите систему.

Warning: current locale is invalid; using default «C» locale

Как сказано в сообщении ошибки, локаль системы настроена неправильно (см. Locale).

Pacman игнорирует настройки прокси

Удостоверьтесь, что соответствующие переменные окружения ( $http_proxy , $ftp_proxy и т.д.) заданы верно. Если вы используете pacman вместе с sudo, необходимо настроить sudo на передачу переменных окружения в pacman. Также убедитесь, что настройки dirmngr в файле /etc/pacman.d/gnupg/dirmngr.conf содержат параметр honor-http-proxy , отвечающий за использование прокси при обновлении ключей.

Как переустановить все пакеты, сохранив информацию о том, какие из них установлены вручную, а какие — в качестве зависимостей?

Чтобы переустановить все пакеты из официальных репозиториев, выполните pacman -S $(pacman -Qnq) (опция -S сохраняет причину установки по умолчанию).

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

Cannot open shared object file

Скорее всего, это означает, что при выполнении предыдущей операции pacman удалил или повредил разделяемые библиотеки, необходимые для него самого.

Чтобы выйти из этой ситуации, нужно вручную распаковать необходимые библиотеки в вашу файловую систему. Сперва определите, в каком пакете содержится требуемая библиотека, а затем найдите этот пакет в кэше pacman ( /var/cache/pacman/pkg/ ). Распакуйте разделяемую библиотеку в файловую систему. Это позволит вам запустить pacman.

Теперь необходимо переустановить испорченный пакет. При этом обязательно используйте ключ —overwrite , поскольку вы лишь распаковали системные файлы, но pacman об этом не знает. pacman корректно заменит ваш файл разделяемой библиотеки на тот, что имеется в пакете.

Вот и все. Обновите оставшуюся часть системы.

Проблемы с загрузкой пакетов

Были сообщения о некоторых сетевых проблемах, которые приводят к невозможности обновления/синхронизации: [2], [3]. При обычной установке Arch Linux эти проблемы не появляются, так как стандартный загрузчик файлов при этом заменяется другим (см. pacman/Tips and tricks#Performance). При установке Arch Linux в VirtualBox эта проблема также появляется, когда вы используете опцию виртуальной машины Host interface вместо NAT.

Failed retrieving file ‘core.db’ from mirror

Если зеркала настроены правильно, но вы получаете такое сообщение об ошибке, попробуйте выбрать другой сервер имён.

Пояснения

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

The factual accuracy of this article or section is disputed.

При выполнении операций с пакетами посредством pacman происходит следующее:

  1. pacman получает список пакетов для установки.
  2. pacman выполняет различные проверки на предмет возможности установки пакетов в систему.
  3. Если возможно применить какие-то из существующих пре-транзакционных хуков pacman, то они выполняются.
  4. Пакеты по очереди устанавливаются/обновляются/удаляются.
    1. Если у пакета есть скрипт установки, выполняется функция pre_install (или pre_upgrade / pre_remove в случае обновления или удаления пакета).
    2. pacman удаляет из системы все файлы старой версии пакета (в случае его обновления или удаления). Файлы настроек не удаляются (см. Pacman/Pacnew and Pacsave).
    3. pacman извлекает файлы из архива пакета и размещает их в системе (при установке или обновлении). Файлы, которые остались с прошлой установки, перезаписываются/модифицируются, а новые файлы настроек сохраняются рядом со старыми (см. предыдущий шаг) с добавлением к названию суффикса .pacnew .
    4. Если у пакета есть скрипт установки, выполняется функция post_install ( post_upgrade или post_remove при обновлении/удалении).
  5. Если возможно применить какие-то из существующих пост-транзакционных хуков pacman, то они выполняются.

источник

Добавить комментарий