Arch Tips & FAQ

ArchLinux tips & faqХотелось собрать ответы на некоторые вопросы и кое-какие арчеспецифичные советы для новоиспеченных пользователей ArchLinux в одном месте, дабы давать им эту ссылку сразу после того как они бегло просмотрели арчевики (и почему они её не читают?).

В итоге получился такой небольшой ArchTips с элементами FAQ, с преферансом и поэтессами. Надеюсь что для себя здесь найдет что-то полезное не только новичок в арче...

Естественно, что бы не повторятся я старался не касался вопросов из Arch FAQ c арчевики, но постарался сдобрить свои графоманские замашки ссылками на арчевики, зачастую специально не договаривая дабы дать лишний повод её почитать. Поверьте, оно того стоит...

Маленький Arch Tips

Что такое AUR?
AUR — Arch User Repository, пользовательский репозитарий Arch. Место где хранится уйма пользовательских PKGBUILD'ов — файлов описания для сборки пакета из исходников с помощью программы makepkg являющуюся частью pacman.
Естественно что для установки из исходников понадобится компилятор и прочие вещи для разработчиков, в ArchLinux базовая их часть находится в группе пакетов base-devel. Группы пакетов устанавливаются так же как и один пакет
pacman -S base-devel
Не буду расписываться о подробностях, коих вполне навалом тут (бывшим гентушникам настоятельно рекомендую обратить внимание на строки и ссылки про makepkg.conf)

Установка из AUR
1. Скачать PKGBUILD и другие требуемые файлы (install файл, патчи, etc). Все они содержатся в архиве, доступном по соответствующей ссылке «Архив» («Tarball» в англоязычной версии AUR’а);
2. Перейти в директорию, содержащую PKGBUILD и выполнить makepkg (команда «makepkg -s» установит и зависимости, если они не в AUR);
3. Установить получившийся пакет с помощью pacman:
pacman -U /path/to/pkg.tar.gz

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

Установка yaourt
Многие арчеводы просто не представляют себе жизни без yaourt — консольной оболочке для пакетного менеджера pacman и пользовательского репозитария AUR.
Помимо того что он есть в AUR (PKGBUILD), его можно поставить из французского репозитария всего лишь добавив в /etc/pacman.conf строки
[archlinuxfr]
Server = http://repo.archlinux.fr/i686
и обновив список пакетов (pacman -Sy) установить как
pacman -S yaourt
Работает yaourt аналогично пакману за исключением того что ищет и может устанавливать пакеты не только из репозитория но и из AUR, ну и имеет дополнительные возможности узнать о которых можно в мане или в какой-нить статье в сети с его описанием...
Есть схожие по функционалу проекты — clyde, paktahn, packer (о последнем я писал packer — облегчаем установку пакетов, да и на paktahn обращал свой взор)

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

Репозитарии testing и unstable
Как следует из названия в нем расположены тестовые пакеты которые по тем или иным причинам ещё не удостоились звания «стабильный» (пользователи debian stable могут тут поехидничать).
Если у вас есть желание поставить что-либо из тестинга, но нет желания полностью его использовать, то можно добавить его в самый конец pacman.conf. Благодаря тому что приоритеты репозитарии имеют тупо по очереди, то все обновления будут идти из core/extra/community, а из testing можно будет поставить отдельный пакет с помощью
pacman -S testing/имя_пакета

Так же существуют gnome-unstable и kde-unstable,

ArchLinux x86_64 и multilib
Не секрет, что друзья не растут в огороде что некоторых приложений под x86_64 просто-напросто не существует. Но есть возможность устанавливать 32-х битные приложения в окружении x86_64. В ArchLinux для этого существует репозитарий multilib с годными skype, flashplugin, wine и прочим...
Так что не забываем разкомментировать этот репозиторий в /etc/pacman.conf
У multilib так же есть свой тестинг multilib-testing.

Пропуск обновления пакетов
Тынц. Кстати, там же в pacman.conf есть опция CleanMethod = KeepCurrent позволяющая отчищать в кэше устаревшие пакеты дабы этот самый кэш постоянно не рос после обновления, и опция XferCommand позволяющая сменить загрузчик пакетов из сети....

Собственный репозиторий
В арчевики есть статья Custom Local Repository, в которой все достаточно хорошо описано. От себя добавлю — если у вас уйма старых и новых версий пакетов в одном каталоге (к примеру, из кэша /var/cache/pacman/pkg/), то удалить старье можно с помощью утилиты repo-clean (В AUR'е пакет repo-clean-xz)

После обновление всё сломалось — что делать?
Если у вас всё сломалось то с вероятностью в 90% вы ССЗБ ибо не читаете арченовости и арчевики, используете тестинг, накосячили в настроках или ещё где... В остальных же случаях спасают обновление/пересборка/downgrading нужного пакета. Бывает что-то отваливается по причине того что сама программа теперь работает абсолютно по другому и разработчики это не учли, но такие случаи редки, хотя в своем большинстве вы этого просто не заметите...

Downgrading пакетов
Тут уж либо пересборкой из ABS или иным способом, либо использовать старые репозитарий (статус многих зеркал можно посмотреть тут). Но есть у ArchLinux и машина времени — Arch Rollback Machine, где можно найти старые пакеты.
И не забываем что те пакеты которые у вас уже устанавливались из репозитариев остаются лежат в /var/cache/pacman/pkg/, и повторно их можно установить как
pacman -U /var/cache/pacman/pkg/имя_файла
.
Так же в AUR имеются програмки для отката версии пакета, к примеру, downgrader и downgrade

Обновление конфигов при обновлении пакетов
В Arch довольно-таки простой пакетный менеджер который не сравнивает текущий и новый конфиг в пакете, а просто при необходимости создает конфиг с припиской .pacsave или .pacnew, который пользователю предстоит сравнить руками визуально и при необходимости внести соответствующие изменения. Для упрощения сего дела существует утилита dotpac показывающая в интерактивном режиме разницу между созданными при обновлении конфигов с текущими и предложит внести изменения. Есть и pacdiff работающий схоже и входящий в состав pacman-contrib

Ускоряем менеджер пакетов
Кончено те кто пришли из дистрибутивов с пакетами основанными на deb/rpm могут считать пакман быстрым, однако когда-то давно он был ещё быстрее. Есть несколько методов ускорить его, причем использовать их можно совмесно.
  1. Загрузка пакетов в несколько потоков — для этого используется просто другой менеджер загрузок, к примеру aria2c, но что бы загружать сразу несколько пакетов а не по очереди все же лучше использовать враппер над pacman. К примеру, powerpill, который использует помянутый выше bauerbill.
  2. Сортировка зеркал с помощью rankmirrors (там же написано о утилите reflector, позволяющей сортировать зеркала по статусу)
  3. Экономия трафика в виде использования delta обновлений которые поддерживает ArchLinux, но лично я нашел только одно зеркало его использующее

Было ещё пару методов, но с выходом pacman 3.5 они устарели ибо теперь это делает сам pacman — к примеру он изменил формат базы данных, и замедления из-за большого количества мелких файлов и фрагментации практически сошло на нет, хотя pacman-cage всё ещё в некоторых моментах ускоряет — к примеру, список установленных пакетов всё ещё горой файлов и каталогов), да и вообще пакман хорош =)


Информация о железе
pacman -S hwdetect
(в AUR имеется гуй qhwdetect)
Это специфичная для ArchLinux консольная утилита с огромным количеством опций — начиная от просмотра модулей ядра для устройств и заканчивая возможностью автоматического изменения rc.conf и mkinitcpio.conf
Ну и так же как в других дистрибутивах lshw/hwinfo/lspci/lsusb/etc

Железные мелочи
Для отключение спикера нужно добавить строки вида blacklist имя_модуля (в данном случае два модуля snd_pcsp pcspkr) в /etc/modprobe.d/filename.conf. Подробности о отключении модулей ядра как всегда описано в archwiki
Включаем numlock при старте системы

Лог загрузки
По-умолчанию при выводе login с экрана стирается вся предыдущая информация и всё что было при загрузке на tty1 теряется. Избавится от этого при желании можно поправив файл /etc/issue удалив в нем первую строку — она там есть, и если вы её не видите то ваш редактор просто не осиливает escape-последовательности и должен быть предан анафеме (мой joe показывает их как ^[[H^[[2J). Ну и о существовании dmesg не забываем...

Особенности управление сетью
ArchLinux имеет в своем арсенале весьма интересную утилиту для управления сетевыми подключениями с использованием профилей. Имя сему чуду netcfg.
Всеобъемлющие её описание займет не один экран букв, посему отсылаю в уже написанное. От себя скажу — в некоторых случаях netcfg использовать удобнее чем nm или wicd.

Some yaourt/pacman tips
Переустановить все пакеты из репозиториев: pacman -S $(pacman -Qq | grep -v "$(pacman -Qmq)")
Дабы сделать аналогичное для пакетов отсутствующих в репах можно использовать yaourt -S `pacman -Qmq`
Обновить все установленные пакеты из git/hg/svn/etc yaourt --sucre
Удаление неустановленных пакетов из кэша pacman -Sc
Удаление всех пакетов из кэша pacman -Scc
Так же последние две команды удаляют и неиспользуемые репозитарии...
Удалить пакет со всеми зависимостями pacman -Rs имя_пакета
Удалить пакет со всеми зависимостями и с тем что зависит от него pacman -Rsc имя_пакета
Установить/Удалить пакет не смотря на зависимости (одно d пропускает только проверку версии зависимостей) pacman -Sdd/pacman -Rdd
Сохранение списка пакетов для последующей установки
pacman -Qq > filename # сохраняем в файл
#что бы сохранить только из репозитариев можно искользовать строку ниже
#comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort)
pacman -S `cat filename` # устанавливаем из списка, естественно что пакман будет ругаться если в списке есть пакеты не из реп

По-умолнанию yaourt не обновляет пакеты из AUR, для того что бы он это делал надо добавить в его конфиг строку вида AlwaysUpgradeAur yes, ну или вручную постоянно добавлять параметр --aur
Существует враппер над pacman позволяющий сделать что-то вроде сборки мира, использовал я его всего единожды посему не распишу о его возможностях, называется он pacbuilder, yaourt тоже умеет ставить пакет из исходников (-Sb, ставит с помощью ABS)

Кстати, gnome, kde или xfce можно установить всего лишь одной командой — pacman -S groupname, где имя группы gnome, kde или xfce4 соответственно.

Прирожденным гентушникам будет приятно узнать о существовании /etc/makepkg.conf в котором прописаны некоторые параметры сборки при использовании makepkg (который, если забыли, собирает пакет из PKGBUILD)

Плюшки для pacman
Пакет pacman-contrib — содержит backman позволяющий завернуть установленные файлы обратно в пакет, упомянутый выше pacdiff, paclist показывающий пакеты в репозитории, pacscripts показывающий пре-,пост-установочные скрипты (в том числе и в файлах пакетов), pacsearch работающий симпотичным аналогом pacman -Ss search. Так же в pacman-contrib имеются файлы для подсветки PKGBUILD
Пакет srcpac — враппер пакмана для сборки из исходников(функционал частично пересекается с yaourt), namcap для анализа пакетов... Вообще различных дополнений и приятных мелочей для более комфортной работы сполна, как в репозитории, так и в AUR'е, вопрос лишь в том нужны ли они лично вам. Я вполне удовлетворяюсь наличием в системе yaourt.

GUI для pacman
А нету такого =)
Т.е. есть всякие gtkpacman-mod, AppSet, PackageKit и прочие, но они настолько убоги, что их даже в репозитарии не берут... Шутка, конечно, хотя в каждой шутке как известно...
Вообще с гуем к пакману все очень плохо, все кто заявлял о себе умирали, появляются новые и так же умирают. Может в будущем что-то и изменится, но пока надежда разве что на вполне приличные PackageKit и AppSet — оба находятся в AUR и работают относительно неплохо. Тот же PackageKit даже умудрился попасть в репозиторий.
Так же активизировались некроманты дарующие вторую жизнь проекту gtkpacman (gtkpacman-mod, wakka — надеюсь они не будут распыляться на два очень-очень похожих проекта и объединят свои усилия, хотя скорее всего они тоже умрут).
Имеется так же не так давно появившейся pacmanxg с несколько странноватым для меня интерфейсом и поддержкой AUR через yaourt.
Есть ещё интересный проект — pcurses, как видно из название это ncurses мордочка для управления пакетами, лично мне она понравилась намного больше чем другие GUI.
Расписываться про оболочки для пакмана не хочу, несмотрня на то что тема мне достаточно интересна и есть что сказать по этому поводу...
Достаточно подробно о графическом пакмане и различных уведомлялках о обновлении можно прочесть здесь.

Автодополнения для pacman
Для пользователей bash: ставим bash-completion и добавляем в ваш bashrc строки
if [ -f /etc/bash_completion ]; then
	. /etc/bash_completion
fi
Для пользователей zsh: включаем в нем автодополнения, если с дуру отключили, и устанавливаем из AUR пакеты zsh-packer для packer, zsh-bauerbill для bauerbill и zsh-yaourt для yaourt.

Дополнительные материалы
Arch Wiki — там есть почти всё что обычно описывают в сторонних хаутушках типа того что вы читаетете сейчас
Там есть обзор ArchLinux, его Дао, сравнение арча с другими дистрибутивами, основная настройка и информация о управлении пакетами (pacman,
AUR и
ABS). В общем там есть многое, не ленитесь читать, скорее всего там есть ответ на ваш вопрос.
Несмотря на то что даю ссылки на русские статьи в арчевики, рекомендую всё же читать англоязычный вариант (если позволяют знания языков), ибо русскоязычная часть вики не очень активна и многочисленна, посему не всегда поспевает за английской (Присоедениться к переводчикам и писцам русскоязычной арчевики).


PS
Писалось сие ещё в конце января, но не публиковалось по причине сомнений в нужности — сомнения, конечно, остались, но некоторые события дали толчок ещё раз поразмыслить о её нужность и после череды правок выложить этот ArchTips. Как оказалось в ArchLinux с момента написания первого черновика сей заметки практически ничего не изменилось.
По мере сил, возможности и желания буду пополнять и обновлять сию заметку.
Вроде пока все, если есть еще какие вопросы-ответы, уточнения и исправления — делитесь, с удовольствием дополню или исправлю возможно закравшиеся ошибки...
Slava 11-12-2011
Спасибо. Я как раз Arch недавно поставил на домашний серверок. Да, после apt'а скорость pacman'а меня приятно удивила.

Мне часто хочется знать, в каком пакете находится тот или иной файл, или какие файлы находятся в определённом пакете, не скачивая его. В Debian для этого есть apt-file, а в Arch -- pkgtools (pkgfile -s pkgfile и pkgfile -l). https://wiki.archlinux.org/index.php/Pkgtools.

Ещё для меня была полезна таблица соответствия ключей pacman'а опциям других пакетных менеджеров: https://wiki.archlinux.org/index.php/Pacman_Rosetta
muhas 11-12-2011
надо бы потом внести о pkgtools и ссылку на таблицу опций в пост.
есть ещё pacfile со схожим функционалом (более лучший поиск, но без аналога pkgfile -l)
nick NILL 11-12-2011
Транслируешься в руникс? КАТ БЛЯ
muhas 11-12-2011
к руниксу претензии. у блога есть рсс по тегам с катом. отправлю им письмецо что бы поправили линк
jogy 11-12-2011
А автодополнение yaourt можно как-то сделать?
pluton 11-12-2011
для выборочной очистки кеша pacman есть утилита cacheclean: https://aur.archlinux.org/packages.php?ID=37572 отличие от pacman -Sc в том, что можно указать сколько версий пакета сохранить

а для управления конфигами в /etc я использую git, очень удобно. самое оно, убираешь расширение .pacnew, смотришь нормальный diff и добавляешь в репо те куски, которые обновились
muhas 11-12-2011
jogy, про zsh в посте написано, а вот в bash не знаю. может bash-complition как приспособить, но сам пользую zsh.
pluton, про. cacheclean не знал, доберусь до компа так сразу посмотрю утилитку, внесу потом дополнение. а то с телефона и пост правитб не удобно и арча нет)
muhas 12-01-2012
jogy, вот тут меня помянули в теме на лоре http://www.linux.org.ru/forum/general/7202921 пришло уведомление, полез посмотреть, а там как-раз о автодополнение pacman и yaourt
jogy 12-01-2012
muhas, спасибо. Почитал, присмотрелся - буду осваивать zsh.
Axon 12-03-2012
Не пойму, зачем нужны сторонние приблуды для поиска содержащего файл пакета, когда есть 'pacman -Qo ./path/to/file'? Пользуюсь этой функцией постоянно.
muhas 12-03-2012
Axon, а файлы неустановленых пакетов? Qo только по локальной базе установленых пакетов
Axon 12-03-2012
Единственный юзкейс, который я могу себе представить для этого - поломанная база пакмана, из которой пропали записи о некоторых установленных пакетах. Не каждый день такое случается, согласитесь.
muhas 12-03-2012
ты прям как ъ ананимус лора - я не пользуюсь, значит никому не надо, а это далеко не так...
куда как чаще ищется файл отсутствующий в системе и неведомо в каком пакете находящийся, но зачем-то нужный... к примеру, в каком пакете https.lua? я-то знаю что он в luasec, но узнал я об этом и поставил себе пакет только после поиска по файлам. согласен что не часто это надо, но ведь иногда это сохраняет уйму времени на поиск...
Axon 12-03-2012
Я же не сказал, что это не нужно. Просто я, действительно, не мталкивался с такой необходимостью, поэтому она мне непонятна. У меня чаще всего вопрос принадлежности файла пакету возникает когда что-то отказывается компиляться или запускаться, ссылаясь на отсутствие bla-bla-bla.so.4, при этом в системе есть bla-bla-bla.so.5, а я даже не знаю, что это за либа и из какого она пакета. В этом случае достаточно поиска по базе.