mirror of
https://github.com/arcan1s/arcanis.me.git
synced 2025-07-22 08:59:56 +00:00
massive removal of aligning (since it has been added to css)
This commit is contained in:
@ -8,15 +8,15 @@ short: about-aur
|
||||
description: Статья посвященная работе с пользовательским репозиторием Archlinux. Постарался сделать акцент на сопровождении пакетов. Данная статья, в большей степени, представляет собой компиляцию нескольких англоязычных статей Wiki и немного личного опыта. Поэтому не уверен, что в данной статье на английском языке будет толк.
|
||||
---
|
||||
<h2><a name="aur" class="anchor" href="#aur"><span class="octicon octicon-link"></span></a>AUR</h2>
|
||||
<p align="justify">Итак, <a href="https://aur.archlinux.org/">Arch User Repository</a> (AUR или АУР) - это репозиторий, поддерживаемый и развиваемый практически исключительно сообществом Archlinux. Есть еще отдельные люди, называемые <a href="https://www.archlinux.org/trustedusers/">доверенными пользователями</a> (TU), на плечах которых лежит своеобразная "модерация" этого репозитория. На мой скромный взгляд, едва ли не единственное отличие Archlinux от других дистрибутивов - это наличие AUR'а. Отличие этого репозитория от обычных прежде всего в том, что он <b>не содержит</b> архивов с исходниками или собранных пакетов - только скрипт сборки (PKGBUILD) и, возможно, дополнительные текстовые файлы.</p>
|
||||
<p>Итак, <a href="https://aur.archlinux.org/">Arch User Repository</a> (AUR или АУР) - это репозиторий, поддерживаемый и развиваемый практически исключительно сообществом Archlinux. Есть еще отдельные люди, называемые <a href="https://www.archlinux.org/trustedusers/">доверенными пользователями</a> (TU), на плечах которых лежит своеобразная "модерация" этого репозитория. На мой скромный взгляд, едва ли не единственное отличие Archlinux от других дистрибутивов - это наличие AUR'а. Отличие этого репозитория от обычных прежде всего в том, что он <b>не содержит</b> архивов с исходниками или собранных пакетов - только скрипт сборки (PKGBUILD) и, возможно, дополнительные текстовые файлы.</p>
|
||||
|
||||
<p align="justify">Конечно, вручную скачивать архив с сайта AUR'а, а также проверять обновления, не совсем удобно, поэтому существует <a href="https://wiki.archlinux.org/index.php/AUR_Helpers">набор хелперов</a>. Большинство хелперов представляет собой обертку над pacman. Я выделю только два - <a href="https://aur.archlinux.org/packages/packer/">packer</a> - минималистичный, удобный, быстрый - и <a href="https://aur.archlinux.org/packages/yaourt/">yaourt</a> - на шелле, но зато более функциональный. По не особо понятным мне причинам, в русскоязычном сегменте большее распространение получил yaourt, зарубежом - packer.</p>
|
||||
<p>Конечно, вручную скачивать архив с сайта AUR'а, а также проверять обновления, не совсем удобно, поэтому существует <a href="https://wiki.archlinux.org/index.php/AUR_Helpers">набор хелперов</a>. Большинство хелперов представляет собой обертку над pacman. Я выделю только два - <a href="https://aur.archlinux.org/packages/packer/">packer</a> - минималистичный, удобный, быстрый - и <a href="https://aur.archlinux.org/packages/yaourt/">yaourt</a> - на шелле, но зато более функциональный. По не особо понятным мне причинам, в русскоязычном сегменте большее распространение получил yaourt, зарубежом - packer.</p>
|
||||
|
||||
<p align="justify">Помимо хелперов, существуют также консольные клиенты для работы с AUR. Я выделю, пожалуй, только один - <a href="https://aur.archlinux.org/packages/python3-aur/">python-aur</a>. Иногда удобная альтернатива веб-интерфейсу.</p>
|
||||
<p>Помимо хелперов, существуют также консольные клиенты для работы с AUR. Я выделю, пожалуй, только один - <a href="https://aur.archlinux.org/packages/python3-aur/">python-aur</a>. Иногда удобная альтернатива веб-интерфейсу.</p>
|
||||
|
||||
<p align="justify">Другая особенность данного репозитория - и не менее важная - <b>все действия с ним осуществляются на свой страх и риск</b>. Опасные и некорректные пакеты, конечно же, удаляются, но вполне могут быть и ошибки при сборке и еще все, что сможете придумать. Дык вот - работа с ним на вашей совести, и никто вам ничем не обязан, если что-то сломается. По этой же причине, ни один хелпер в обозримом будущем не будет перенесен в официальные репозитории.</p>
|
||||
<p>Другая особенность данного репозитория - и не менее важная - <b>все действия с ним осуществляются на свой страх и риск</b>. Опасные и некорректные пакеты, конечно же, удаляются, но вполне могут быть и ошибки при сборке и еще все, что сможете придумать. Дык вот - работа с ним на вашей совести, и никто вам ничем не обязан, если что-то сломается. По этой же причине, ни один хелпер в обозримом будущем не будет перенесен в официальные репозитории.</p>
|
||||
|
||||
<p align="justify">У пакетов в AUR есть несколько характеристик, которых нет у пакетов в официальных репозиториях:
|
||||
<p>У пакетов в AUR есть несколько характеристик, которых нет у пакетов в официальных репозиториях:
|
||||
<ul>
|
||||
<li>группа - скорее для удобства поиска, сортировки. Немного помогает доверенным пользователям.</li>
|
||||
<li>автор, мейнтейнер, последний приславший - люди, кто, соответственно, первый раз прислал данный пакет, сопровождает его в настоящий момент, и последний прислал.</li>
|
||||
@ -25,7 +25,7 @@ description: Статья посвященная работе с пользов
|
||||
</p>
|
||||
|
||||
<h2><a name="install-from-aur" class="anchor" href="#install-from-aur"><span class="octicon octicon-link"></span></a>Установка с AUR</h2>
|
||||
<p align="justify">Для работы с AUR требуется установить группу пакетов <a href="https://www.archlinux.org/groups/x86_64/base-devel/">base-devel</a>. Пакеты с этой группы, как правило, <b>не включены</b> в зависимости. Рекомендуемая установка пакетов с AUR выглядит примерно так:</p>
|
||||
<p>Для работы с AUR требуется установить группу пакетов <a href="https://www.archlinux.org/groups/x86_64/base-devel/">base-devel</a>. Пакеты с этой группы, как правило, <b>не включены</b> в зависимости. Рекомендуемая установка пакетов с AUR выглядит примерно так:</p>
|
||||
{% highlight bash %}
|
||||
# скачать архив с PKGBUILD'ом c AUR
|
||||
curl -L -O https://aur.archlinux.org/packages/fo/foo/foo.tar.gz
|
||||
@ -40,13 +40,13 @@ pacman -U foo-0.1-1-i686.pkg.tar.xz
|
||||
{% endhighlight %}
|
||||
|
||||
<h2><a name="upload-to-aur" class="anchor" href="#upload-to-aur"><span class="octicon octicon-link"></span></a>Загрузка пакета в AUR</h2>
|
||||
<p align="justify"><b>Никаких</b> <code>makepkg -S</code>. С недавних пор данный метод считается устаревшим. Но обо всем по-порядку</p>
|
||||
<p><b>Никаких</b> <code>makepkg -S</code>. С недавних пор данный метод считается устаревшим. Но обо всем по-порядку</p>
|
||||
|
||||
<p align="justify">Нам нужно загрузить архив на сайт. В этом архиве <b>должны быть</b> PKGBUILD и .AURINFO. По поводу первого я расскажу еще чуть ниже, второй генерируется автоматически. Также, там могут быть установочные скрипты (*.install), патчи, файлы лицензии (если не предоставляются апстримом с исходниками), сервисы systemd, скрипты запуска - это то, что обычно включено. <b>Никаких исходников</b>. И тем более <b>никаких бинарников</b>. (Шутки-шутками, а я помню пакет, в котором исходный код записывался с помощью <code>cat << EOF</code> прямо в тексте PKGBUILD'а.)</p>
|
||||
<p>Нам нужно загрузить архив на сайт. В этом архиве <b>должны быть</b> PKGBUILD и .AURINFO. По поводу первого я расскажу еще чуть ниже, второй генерируется автоматически. Также, там могут быть установочные скрипты (*.install), патчи, файлы лицензии (если не предоставляются апстримом с исходниками), сервисы systemd, скрипты запуска - это то, что обычно включено. <b>Никаких исходников</b>. И тем более <b>никаких бинарников</b>. (Шутки-шутками, а я помню пакет, в котором исходный код записывался с помощью <code>cat << EOF</code> прямо в тексте PKGBUILD'а.)</p>
|
||||
|
||||
<p align="justify">Все файлы кладем в одну директорию. Убедились, что install файл, если он есть, указан в переменной install, все другие исходные файлы указаны в массиве source, а хэш-суммы правильные (их легко можно сгенерировать, набрав <code>makepkg -g</code>). Далее из этой директории запустить команду <code>mkaurball</code> (пакет <a href="https://www.archlinux.org/packages/pkgbuild-introspection">pkgbuild-introspection</a>) - и архив готов.</p>
|
||||
<p>Все файлы кладем в одну директорию. Убедились, что install файл, если он есть, указан в переменной install, все другие исходные файлы указаны в массиве source, а хэш-суммы правильные (их легко можно сгенерировать, набрав <code>makepkg -g</code>). Далее из этой директории запустить команду <code>mkaurball</code> (пакет <a href="https://www.archlinux.org/packages/pkgbuild-introspection">pkgbuild-introspection</a>) - и архив готов.</p>
|
||||
|
||||
<p align="justify">Несколько правил загрузки пакета в AUR:
|
||||
<p>Несколько правил загрузки пакета в AUR:
|
||||
<ul>
|
||||
<li>Если такой пакет существует в официальном репозитории (любой версии), то <b>не нужно</b> заливать новый пакет. Если репозиторный пакет устарел, просто пометьте его, как устаревший. Исключение из этого правила составляют пакеты из системы контрля версий (VCS), о них чуть ниже.</li>
|
||||
<li>Проверьте AUR. Если такой пакет уже существует и у него есть мейнтейнер, вы <b>не сможете залить</b> свой пакет. Если у него нет мейнтейнера, то вы автоматически будете его сопровождающим после обновления. Еще может быть такой же пакет, но с другим названием, будьте внимательны.</li>
|
||||
@ -57,12 +57,12 @@ pacman -U foo-0.1-1-i686.pkg.tar.xz
|
||||
</p>
|
||||
|
||||
<h2><a name="maintaining" class="anchor" href="#maintaining"><span class="octicon octicon-link"></span></a>Сопровождение пакетов</h2>
|
||||
<p align="justify">Если вы сопровождаете пакет и хотите его обновить, просто загрузите обновленный пакет еще раз. Читайте - и, по возможности, отвечайте - комментарии к вашему пакету, там иногда могут быть очень полезные замечания или дельные предложения. Если вы не хотите сопровождать больше ваш пакет (или нет времени), то, пожалуйста, нажмите на кнопку справа (бросить/disown), чтобы те, кто в нем заинтересован, смогли поддерживать его. Если есть пакет, который не имеет сопровождающего, и вы хотели бы им стать, вы также можете нажать на соответствующую кнопку справа в веб-интерфейсе =)</p>
|
||||
<p>Если вы сопровождаете пакет и хотите его обновить, просто загрузите обновленный пакет еще раз. Читайте - и, по возможности, отвечайте - комментарии к вашему пакету, там иногда могут быть очень полезные замечания или дельные предложения. Если вы не хотите сопровождать больше ваш пакет (или нет времени), то, пожалуйста, нажмите на кнопку справа (бросить/disown), чтобы те, кто в нем заинтересован, смогли поддерживать его. Если есть пакет, который не имеет сопровождающего, и вы хотели бы им стать, вы также можете нажать на соответствующую кнопку справа в веб-интерфейсе =)</p>
|
||||
|
||||
<h2><a name="aur-list" class="anchor" href="#aur-list"><span class="octicon octicon-link"></span></a>Список рассылки AUR</h2>
|
||||
<p align="justify">По любому вопросу, связанному с работой AUR вы всегда можете обратиться в <a href="https://mailman.archlinux.org/mailman/listinfo/aur-general">список рассылки</a>. На ваш вопрос ответят, вероятно, достаточно быстро; причем, ответить могут не только обычные пользователи, но и доверенные пользователи. Также, если вы вдруг неуверены в своем PKGBUILD'е, вы тоже можете всегда обратиться в список рассылки и показать свой PKGBUILD.</p>
|
||||
<p>По любому вопросу, связанному с работой AUR вы всегда можете обратиться в <a href="https://mailman.archlinux.org/mailman/listinfo/aur-general">список рассылки</a>. На ваш вопрос ответят, вероятно, достаточно быстро; причем, ответить могут не только обычные пользователи, но и доверенные пользователи. Также, если вы вдруг неуверены в своем PKGBUILD'е, вы тоже можете всегда обратиться в список рассылки и показать свой PKGBUILD.</p>
|
||||
|
||||
<p align="justify">Запросы, которые вы можете послать в список рассылки (могут быть совмещены несколько штук в одном письме):
|
||||
<p>Запросы, которые вы можете послать в список рассылки (могут быть совмещены несколько штук в одном письме):
|
||||
<ul>
|
||||
<li><b>Удаление пакета</b>. Запрос должен включать <b>краткое описание причины</b>, почему вы его хотите удалить. Обычные причины - специальный патч, который больше не нужен; пакет уныл и более не поддерживается апстримом; переименование; функциональность предоставляется другим пакетом.</li>
|
||||
<li><b>"Бросить пакет"</b>. Лишить текущего мейнтейнера права сопровождать данный пакет. Официальное требование - вы должны связаться до этого с мейнтейнером по e-mail и <b>ожидать от него ответа в течение двух недель</b>. Если ответа не поступило, то тогда можете слать запрос. Однако, если мейнтейнер неактивен в течение длительного времени, или пакет помечен, как устаревший, в течение длительного времени, то можно сделать исключение из этого правила.</li>
|
||||
@ -70,11 +70,11 @@ pacman -U foo-0.1-1-i686.pkg.tar.xz
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<p align="justify">Пожалуйста, пишите письма в список рассылки аккуратно. И, желательно, вежливо (а то потом будете генерировать что-то вроде <a href="http://linux.sytes.net/post/2014/05/aur-driven-by-idiots/">такого</a>). Также старайтесь избегать избыточного цитирования. И - это практически требование - предоставляйте ссылки на пакеты. Хороший вариант - составление списка ссылок в конце письма, а в теле ссылаться на них таким образом <code>[1]</code>. Если не уверены в корректности запроса - посмотрите <a href="https://mailman.archlinux.org/pipermail/aur-general/">архив списка рассылки</a>.</p>
|
||||
<p>Пожалуйста, пишите письма в список рассылки аккуратно. И, желательно, вежливо (а то потом будете генерировать что-то вроде <a href="http://linux.sytes.net/post/2014/05/aur-driven-by-idiots/">такого</a>). Также старайтесь избегать избыточного цитирования. И - это практически требование - предоставляйте ссылки на пакеты. Хороший вариант - составление списка ссылок в конце письма, а в теле ссылаться на них таким образом <code>[1]</code>. Если не уверены в корректности запроса - посмотрите <a href="https://mailman.archlinux.org/pipermail/aur-general/">архив списка рассылки</a>.</p>
|
||||
|
||||
|
||||
<h2><a name="pkgbuild" class="anchor" href="#pkgbuild"><span class="octicon octicon-link"></span></a>PKGBUILD</h2>
|
||||
<p align="justify">PKGBUILD - это, де-факто, сценарий шелла, указывающий как и почему собираться пакету. Он имеет 4 части:
|
||||
<p>PKGBUILD - это, де-факто, сценарий шелла, указывающий как и почему собираться пакету. Он имеет 4 части:
|
||||
<ul>
|
||||
<li><b>Объявление основных переменных</b>. Об этом я расскажу чуть ниже.</li>
|
||||
<li><b>Подготовка исходников</b>. Этот пункт необязательный. Включает в себя копирование (если вдруг нужно), применение патчей, sed и прочие мелочи. Функция обозначается, как <b>prepare()</b>.</li>
|
||||
@ -84,7 +84,7 @@ pacman -U foo-0.1-1-i686.pkg.tar.xz
|
||||
</p>
|
||||
|
||||
<h3><a name="pkgbuild-vars" class="anchor" href="#pkgbuild-vars"><span class="octicon octicon-link"></span></a>Переменные PKGBUILD</h3>
|
||||
<p align="justify">Основные переменные следующие:
|
||||
<p>Основные переменные следующие:
|
||||
<ul>
|
||||
<li><b>pkgbase</b> - группа пакетов. Например, пакеты <code>python-pyqt4</code> и <code>python2-pyqt4</code> имеют одну группу <code>pyqt4</code>.</li>
|
||||
<li><b>pkgname</b> - имя (или массив имен для совмещенных пакетов) пакета; обязательная переменная.</li>
|
||||
@ -102,19 +102,19 @@ pacman -U foo-0.1-1-i686.pkg.tar.xz
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<p align="justify">Все перечисленные выше переменные указываются в заголовке PKGBUILD. К ним также можно обращаться внутри PKGBUILD'а. Дополнительно стоит упомянуть переменные <b>startdir</b> - директория, откуда запускается makepkg, <b>srcdir</b> - директория с исходниками (<code>$startdir/src</code> по умолчанию), <b>pkgdir</b> - директория с собранным пакетом (<code>$startdir/pkg/$pkgname</code> по умолчанию). <b>Не используйте</b> переменную <b>startdir</b> без крайней необходимости.</p>
|
||||
<p>Все перечисленные выше переменные указываются в заголовке PKGBUILD. К ним также можно обращаться внутри PKGBUILD'а. Дополнительно стоит упомянуть переменные <b>startdir</b> - директория, откуда запускается makepkg, <b>srcdir</b> - директория с исходниками (<code>$startdir/src</code> по умолчанию), <b>pkgdir</b> - директория с собранным пакетом (<code>$startdir/pkg/$pkgname</code> по умолчанию). <b>Не используйте</b> переменную <b>startdir</b> без крайней необходимости.</p>
|
||||
|
||||
<h3><a name="pkgbuild-features" class="anchor" href="#pkgbuild-features"><span class="octicon octicon-link"></span></a>Некоторые особенности PKGBUILD'ов</h3>
|
||||
<p align="justify">К PKGBUILD применимы все правила программирования на шелле. Например, "смешная шутка":
|
||||
<p>К PKGBUILD применимы все правила программирования на шелле. Например, "смешная шутка":
|
||||
{% highlight bash %}
|
||||
pkgdir="/usr pkg"
|
||||
rm -rf $pkgdir
|
||||
{% endhighlight %}
|
||||
кому-то может показаться не очень смешной. Поэтому все пути (да и вообще переменные - там где надо, конечно) лучше обрамлять в двойные кавычки (исключение - условия в двойных квадратных скобках <code>[[ ... ]]</code>). Если вы вводите какие-либо свои переменные, то настоятельно рекоммендуется добавить в начале подчеркивание <code>_</code> во избежание перекрытия переменными makepkg.</p>
|
||||
|
||||
<p align="justify">В русскоязычном сегменте до сих пор зачастую встречаются строки типа <code>make || return 1</code>. Дык вот, <code>return 1</code> теперь уже давно как не нужен.</p>
|
||||
<p>В русскоязычном сегменте до сих пор зачастую встречаются строки типа <code>make || return 1</code>. Дык вот, <code>return 1</code> теперь уже давно как не нужен.</p>
|
||||
|
||||
<p align="justify">Еще можно работать с рядом других переменных, определенных makepkg. Их список можно глянуть в <code>/etc/makepkg.conf</code>. Самые ходовые - флаги компиляции и <code>CARCH</code>. Так, например, если вы собираете пакет, исходники к которому предоставляются в бинарном виде (проприетарный драйвер, например), то кусок PKGBUILD может выглядеть так:
|
||||
<p>Еще можно работать с рядом других переменных, определенных makepkg. Их список можно глянуть в <code>/etc/makepkg.conf</code>. Самые ходовые - флаги компиляции и <code>CARCH</code>. Так, например, если вы собираете пакет, исходники к которому предоставляются в бинарном виде (проприетарный драйвер, например), то кусок PKGBUILD может выглядеть так:
|
||||
{% highlight bash %}
|
||||
if [ "${CARCH}" == "x86_64" ]; then
|
||||
_filearch=amd64
|
||||
@ -127,9 +127,9 @@ source=(${pkgname}-${pkgver}.tar.gz::http://istodo.ru/distribs/${pkgname}-linux-
|
||||
{% endhighlight %}
|
||||
</p>
|
||||
|
||||
<p align="justify"><b>pkgbase</b> вообще удобная штука. Например, для создания пакетов одновременно для двух версий Python PKGBUILD может выглядеть <a href="https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/python-biopython">примерно так</a>. Или, в общем случае, <a href="https://aur.archlinux.org/packages/ne/netctl-gui/PKGBUILD">как-то так</a>.</p>
|
||||
<p><b>pkgbase</b> вообще удобная штука. Например, для создания пакетов одновременно для двух версий Python PKGBUILD может выглядеть <a href="https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/python-biopython">примерно так</a>. Или, в общем случае, <a href="https://aur.archlinux.org/packages/ne/netctl-gui/PKGBUILD">как-то так</a>.</p>
|
||||
|
||||
<p align="justify">Вообще говоря, для стандартных случаев существуют прототипы PKGBUILD'ов. Их можно найти в <code>/usr/share/pacman/</code>, хотя местами они могли немного устареть (больше года как). Так, прототипы для пакетов из системы контроля версий (git/svn/hg/bzr) однозначно устарели - сейчас используется другой, куда более аккуратный, формат. Настоятельно рекомендую ознакомиться на эту тему <a href="https://wiki.archlinux.org/index.php/VCS_PKGBUILD_Guidelines">с данной статьей</a>. Например, для пакета <b>qmmp-qsmmp-git</b> кусок PKGBUILD'а выглядит так:
|
||||
<p>Вообще говоря, для стандартных случаев существуют прототипы PKGBUILD'ов. Их можно найти в <code>/usr/share/pacman/</code>, хотя местами они могли немного устареть (больше года как). Так, прототипы для пакетов из системы контроля версий (git/svn/hg/bzr) однозначно устарели - сейчас используется другой, куда более аккуратный, формат. Настоятельно рекомендую ознакомиться на эту тему <a href="https://wiki.archlinux.org/index.php/VCS_PKGBUILD_Guidelines">с данной статьей</a>. Например, для пакета <b>qmmp-qsmmp-git</b> кусок PKGBUILD'а выглядит так:
|
||||
{% highlight bash %}
|
||||
pkgname=qmmp-qsmmp-git
|
||||
_gitname=qsmmp
|
||||
|
Reference in New Issue
Block a user