mirror of
https://github.com/arcan1s/arcanis.me.git
synced 2025-07-10 03:35:46 +00:00
edit russian papers
This commit is contained in:
@ -8,13 +8,16 @@ title: Создание собственного репозитория
|
||||
short: creating-custom-repo
|
||||
description: Небольшая статья, посвященная созданию собственного репозитория для Archlinux.
|
||||
---
|
||||
<h2><a name="prepare" class="anchor" href="#prepare"><span class="octicon octicon-link"></span></a>Подготовка</h2>
|
||||
<h2><a href="#prepare" class="anchor" name="prepare"><span class="octicon octicon-link"></span></a>Подготовка</h2>
|
||||
<p>Для начала находим сервер и желание с ним заниматься сексом. Для простоты, лучше, чтобы там стоял Archlinux, хотя, это и не совсем обязательно (можно создать отдельный корень под Arch). Из пакетов, пожалуй, нам понадобится только два, <code>devtools</code> и сам <code>pacman</code>:</p>
|
||||
|
||||
{% highlight bash %}
|
||||
pacman -Sy devtools
|
||||
{% endhighlight %}
|
||||
<p><a href="https://www.archlinux.org/packages/devtools/">devtools</a> - набор скриптов, предназначенный для автоматизации сборки пакетов в чистом чруте. Думаю, большинство мейнтейнеров Arch'а пользуются им.</p>
|
||||
|
||||
<p><a href="https://www.archlinux.org/packages/devtools/" title="Пакет Archlinux">devtools</a> - набор скриптов, предназначенный для автоматизации сборки пакетов в чистом чруте. Думаю, большинство мейнтейнеров Arch'а пользуются им.</p>
|
||||
<p>Создадим рабочие директории и установим цвета:</p>
|
||||
|
||||
{% highlight bash %}
|
||||
# цвета
|
||||
if [ ${USECOLOR} == "yes" ]; then
|
||||
@ -50,10 +53,12 @@ if [ ! -d "${STAGINGDIR}" ]; then
|
||||
mkdir -p "${STAGINGDIR}" || error_mes "unknown"
|
||||
fi
|
||||
{% endhighlight %}
|
||||
|
||||
<p>Директории <code>${REPODIR}/{i686,x86_64}</code> для самого репозитория, <code>${PREPAREDIR}</code> - директория, где будут лежать собранные пакеты, <code>${STAGINGDIR}</code> - директория, откуда будут собираться пакеты.</p>
|
||||
|
||||
<h2><a name="theory" class="anchor" href="#theory"><span class="octicon octicon-link"></span></a>Немного теории</h2>
|
||||
<p>Создаем директорию, расшариваем ее (например, по <a href="/ru/2014/03/06/site-changes/">ftp</a>). В ней две субдиректории - <code>i686</code> и <code>x86_64</code>, для каждого типа архитектур соответственно. И наполняем их набором пакетов по Вашему усмотрению.</p>
|
||||
<h2><a href="#theory" class="anchor" name="theory"><span class="octicon octicon-link"></span></a>Немного теории</h2>
|
||||
<p>Создаем директорию, расшариваем ее (например, по <a href="/ru/2014/03/06/site-changes/" title="Статья про изменения сайта">ftp</a>). В ней две субдиректории - <code>i686</code> и <code>x86_64</code>, для каждого типа архитектур соответственно. И наполняем их набором пакетов по Вашему усмотрению.</p>
|
||||
|
||||
<p>Процесс обновления репозитория можно разбить на следующие части:</p>
|
||||
<ol>
|
||||
<li>Создание PKGBUILD'ов (обновление их из AUR'а).</li>
|
||||
@ -67,17 +72,20 @@ fi
|
||||
</li>
|
||||
<li>Очистка.</li>
|
||||
</ol>
|
||||
|
||||
<p>Теперь по шагам.</p>
|
||||
|
||||
<h3><a name="pkgbuild" class="anchor" href="#pkgbuild"><span class="octicon octicon-link"></span></a>Создание PKGBUILD'ов</h3>
|
||||
<h3><a href="#pkgbuild" class="anchor" name="pkgbuild"><span class="octicon octicon-link"></span></a>Создание PKGBUILD'ов</h3>
|
||||
<p>Скачаем исходники для всех нужных пакетов из AUR'а:</p>
|
||||
|
||||
{% highlight bash %}
|
||||
cd "${STAGINGDIR}"
|
||||
yaourt -G package-name
|
||||
{% endhighlight %}
|
||||
|
||||
<h3><a name="building" class="anchor" href="#building"><span class="octicon octicon-link"></span></a>Сборка пакетов</h3>
|
||||
<h3><a href="#building" class="anchor" name="building"><span class="octicon octicon-link"></span></a>Сборка пакетов</h3>
|
||||
<p>Автоматически соберем каждый пакет:</p>
|
||||
|
||||
{% highlight bash %}
|
||||
func_build() {
|
||||
if [ ${USECOLOR} == "yes" ]; then
|
||||
@ -115,14 +123,17 @@ echo -e "${bwhite}[II]${cclose} Building packages"
|
||||
cd "${STAGINGDIR}"
|
||||
/usr/bin/find -name 'PKGBUILD' -type f -execdir /usr/bin/bash -c "func_build "${PREPAREDIR}" "${ROOTDIR}"" \;
|
||||
{% endhighlight %}
|
||||
|
||||
<p>Для удобства рекомендую добавить в файл <code>/etc/sudoers</code> следующие строки:</p>
|
||||
|
||||
{% highlight bash %}
|
||||
username ALL=NOPASSWD: /usr/bin/staging-i686-build
|
||||
username ALL=NOPASSWD: /usr/bin/staging-x86_64-build
|
||||
username ALL=NOPASSWD: /usr/bin/multilib-staging-build
|
||||
{% endhighlight %}
|
||||
|
||||
<h3><a name="signing" class="anchor" href="#signing"><span class="octicon octicon-link"></span></a>Подпись пакетов</h3>
|
||||
<h3><a href="#signing" class="anchor" name="signing"><span class="octicon octicon-link"></span></a>Подпись пакетов</h3>
|
||||
|
||||
{% highlight bash %}
|
||||
# подпись
|
||||
if [ ${USEGPG} == "yes" ]; then
|
||||
@ -133,9 +144,11 @@ if [ ${USEGPG} == "yes" ]; then
|
||||
done
|
||||
fi
|
||||
{% endhighlight %}
|
||||
<p>Для удобства рекомендую настроить <a href="https://wiki.archlinux.org/index.php/GPG#gpg-agent">gpg-agent</a>.</p>
|
||||
|
||||
<h3><a name="list" class="anchor" href="#list"><span class="octicon octicon-link"></span></a>Создание списка пакетов</h3>
|
||||
<p>Для удобства рекомендую настроить <a href="https://wiki.archlinux.org/index.php/GPG#gpg-agent" title="ArchWiki">gpg-agent</a>.</p>
|
||||
|
||||
<h3><a href="#list" class="anchor" name="list"><span class="octicon octicon-link"></span></a>Создание списка пакетов</h3>
|
||||
|
||||
{% highlight bash %}
|
||||
# создание списка пакетов
|
||||
cd "${PREPAREDIR}"
|
||||
@ -145,15 +158,18 @@ echo -e "${bwhite}[II] ${bblue}=>${cclose} i686 packages: \n${bwhite}${i686_PACK
|
||||
echo -e "${bwhite}[II] ${bblue}=>${cclose} x86_64 packages: \n${bwhite}${x86_64_PACKAGES}${cclose}"
|
||||
{% endhighlight %}
|
||||
|
||||
<h3><a name="updating" class="anchor" href="#updating"><span class="octicon octicon-link"></span></a>Обновление репозиториев</h3>
|
||||
<h3><a href="#updating" class="anchor" name="updating"><span class="octicon octicon-link"></span></a>Обновление репозиториев</h3>
|
||||
<p>Функция для удаления пакетов из базы данных и из репозитория:</p>
|
||||
|
||||
{% highlight bash %}
|
||||
func_remove() {
|
||||
_PACKAGE="$1"
|
||||
/usr/bin/rm -f "${_PACKAGE}"{,.sig}
|
||||
}
|
||||
{% endhighlight %}
|
||||
|
||||
<p>Обновление репозитория <code>i686</code>:</p>
|
||||
|
||||
{% highlight bash %}
|
||||
# обновление репозитория i686
|
||||
echo -e "${bwhite}[II]${cclose} Updating ${bwhite}i686${cclose} repo"
|
||||
@ -170,7 +186,9 @@ for PACKAGE in ${i686_PACKAGES}; do
|
||||
/usr/bin/repo-add --files ${DBNAME}.files.tar.gz "${PACKAGE}"
|
||||
done
|
||||
{% endhighlight %}
|
||||
|
||||
<p>Обновление репозитория <code>x86_64</code>:</p>
|
||||
|
||||
{% highlight bash %}
|
||||
# обновление репозитория x86_64
|
||||
echo -e "${bwhite}[II]${cclose} Updating ${bwhite}x86_64${cclose} repo"
|
||||
@ -188,7 +206,8 @@ for PACKAGE in ${x86_64_PACKAGES}; do
|
||||
done
|
||||
{% endhighlight %}
|
||||
|
||||
<h3><a name="clear" class="anchor" href="#clear"><span class="octicon octicon-link"></span></a>Очистка</h3>
|
||||
<h3><a href="#clear" class="anchor" name="clear"><span class="octicon octicon-link"></span></a>Очистка</h3>
|
||||
|
||||
{% highlight bash %}
|
||||
# очистка
|
||||
cd "${PREPAREDIR}"
|
||||
@ -197,8 +216,9 @@ cd "${STAGINGDIR}"
|
||||
/usr/bin/rm -rf *
|
||||
{% endhighlight %}
|
||||
|
||||
<h3><a name="symlinks" class="anchor" href="#symlinks"><span class="octicon octicon-link"></span></a>Создание симлинков</h3>
|
||||
<h3><a href="#symlinks" class="anchor" name="symlinks"><span class="octicon octicon-link"></span></a>Создание симлинков</h3>
|
||||
<p>Вы можете захотеть создать директорию, которая будет содержать симлинки на актуальные версии пакетов с именами, не содержащими версии:</p>
|
||||
|
||||
{% highlight bash %}
|
||||
# создание симлинков
|
||||
if [ ${SYMLINK} == "yes" ]; then
|
||||
@ -220,11 +240,12 @@ if [ ${SYMLINK} == "yes" ]; then
|
||||
fi
|
||||
{% endhighlight %}
|
||||
|
||||
<h3><a name="file" class="anchor" href="#file"><span class="octicon octicon-link"></span></a>Файл</h3>
|
||||
<p><a href="https://github.com/arcan1s/repo-scripts">Скрипты</a> целиком. Скачиваем исходники для пакетов, запускаем скрипт (при необходимости, редактируем переменные) и радуемся жизни.</p>
|
||||
<h3><a href="#file" class="anchor" name="file"><span class="octicon octicon-link"></span></a>Файл</h3>
|
||||
<p><a href="https://github.com/arcan1s/repo-scripts" title="GitHub">Скрипты</a> целиком. Скачиваем исходники для пакетов, запускаем скрипт (при необходимости, редактируем переменные) и радуемся жизни.</p>
|
||||
|
||||
<h2><a name="using" class="anchor" href="#using"><span class="octicon octicon-link"></span></a>Использование репозитория</h2>
|
||||
<h2><a href="#using" class="anchor" name="using"><span class="octicon octicon-link"></span></a>Использование репозитория</h2>
|
||||
<p>Просто добавляем в файл <code>/etc/pacman.conf</code> следующие строки:</p>
|
||||
|
||||
{% highlight bash %}
|
||||
[$REPONAME]
|
||||
Server = ftp://$REPOADDRESS/repo/$arch
|
||||
|
Reference in New Issue
Block a user