diff --git a/_posts/2014-03-23-creating-custom-repo.html b/_posts/2014-03-23-creating-custom-repo.html
index dadf01d..1532087 100644
--- a/_posts/2014-03-23-creating-custom-repo.html
+++ b/_posts/2014-03-23-creating-custom-repo.html
@@ -29,7 +29,7 @@ mkdir -p ~/arch/{prepare,root,staging}
Packages signing.
Creating the list of packages.
Repository update:
- - Removal old packages from database and repository.
+ - Removal old packages from repository.
- Copying new packages
- Repository update.
@@ -49,15 +49,21 @@ yaourt -G package-name
func_build() {
PREPARE="$1"
ROOT="$2"
- if grep "arch=('any')" PKGBUILD -q; then
- /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}"
+ eval $(/usr/bin/grep 'arch=' PKGBUILD)
+ if echo ${arch} | /usr/bin/grep any -q; then
+ /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}" -c
else
- if grep "lib32" PKGBUILD -q; then
- /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}"
- /usr/bin/sudo /usr/bin/multilib-staging-build -r "${ROOT}"
+ eval $(/usr/bin/grep 'pkgname=' PKGBUILD)
+ if echo ${pkgname} | /usr/bin/grep lib32 -q; then
+ /usr/bin/sudo /usr/bin/multilib-staging-build -r "${ROOT}" -c
else
- /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}"
- /usr/bin/sudo /usr/bin/staging-x86_64-build -r "${ROOT}"
+ if /usr/bin/grep "lib32" PKGBUILD -q; then
+ /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}" -c
+ /usr/bin/sudo /usr/bin/multilib-staging-build -r "${ROOT}" -c
+ else
+ /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}" -c
+ /usr/bin/sudo /usr/bin/staging-x86_64-build -r "${ROOT}" -c
+ fi
fi
fi
/usr/bin/cp *.pkg.tar.xz "${PREPARE}"
@@ -78,10 +84,13 @@ username ALL=NOPASSWD: /usr/bin/multilib-staging-build
Packages signing
{% highlight bash %}
# signing
-cd "${PREPAREDIR}"
-for PACKAGE in $(/usr/bin/ls *.pkg.tar.xz); do
- /usr/bin/gpg -b ${PACKAGE}
-done
+if [ ${USEGPG} == "yes" ]; then
+ echo "[II] Signing"
+ cd "${PREPAREDIR}"
+ for PACKAGE in $(/usr/bin/find . -name '*.pkg.tar.xz'); do
+ /usr/bin/gpg -b ${PACKAGE}
+ done
+fi
{% endhighlight %}
It is recommended to configure gpg-agent.
@@ -89,47 +98,48 @@ done
{% highlight bash %}
# creating packages list
cd "${PREPAREDIR}"
-i686_PACKAGES=$(/usr/bin/find * -name "*-i686.pkg.tar.xz" -o -name "*-any.pkg.tar.xz")
-x86_64_PACKAGES=$(/usr/bin/find * -name "*-x86_64.pkg.tar.xz" -o -name "*-any.pkg.tar.xz")
-echo "=> i686 packages: \n${i686_PACKAGES}"
-echo "=> x86_64 packages: \n${x86_64_PACKAGES}"
+i686_PACKAGES=$(/usr/bin/find * -name '*-i686.pkg.tar.xz' -o -name '*-any.pkg.tar.xz')
+x86_64_PACKAGES=$(/usr/bin/find * -name '*-x86_64.pkg.tar.xz' -o -name '*-any.pkg.tar.xz')
+echo -e "[II] => i686 packages: \n${i686_PACKAGES}"
+echo -e "[II] => x86_64 packages: \n${x86_64_PACKAGES}"
{% endhighlight %}
Repository update
Here is a function for removal packages from database and repository:
{% highlight bash %}
func_remove() {
- DBNAME="$1"
- PKGNAME="$2"
- /usr/bin/repo-remove ${DBNAME}.db.tar.gz ${PKGNAME}
- /usr/bin/repo-remove ${DBNAME}.files.tar.gz ${PKGNAME}
- /usr/bin/rm -f ${PKGNAME}*
+ PKGNAME="$1"
+ /usr/bin/rm -f ${PKGNAME}-[0-9]*
}
export -f func_remove
{% endhighlight %}
i686
repository update:
{% highlight bash %}
# updating i686 repo
+echo "[II] Updating i686 repo"
cd "${REPODIR}/i686"
for PACKAGE in ${i686_PACKAGES}; do
PKGNAME=$(echo ${PACKAGE} | /usr/bin/awk -F '-' '{for(i=1; i<=NF-3;i++) {printf("%s-", $i);}}' | /usr/bin/sed 's/.$//')
- /usr/bin/find -name "${PKGNAME}*.pkg.tar.xz" -type f -exec /usr/bin/bash -c "func_remove "${DBNAME}" "${PKGNAME}"" \;
- /usr/bin/cp "${PREPAREDIR}/${PACKAGE}"{,.sig} .
+ /usr/bin/find -name "${PKGNAME}*.pkg.tar.xz" -type f -exec /usr/bin/bash -c "func_remove "${PKGNAME}"" \;
+ /usr/bin/cp "${PREPAREDIR}/${PACKAGE}" .
+ [ ${USEGPG} == "yes" ] && /usr/bin/cp "${PREPAREDIR}/${PACKAGE}.sig" .
+ /usr/bin/repo-add --new ${DBNAME}.db.tar.gz "${PACKAGE}"
+ /usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz "${PACKAGE}"
done
-/usr/bin/repo-add --new ${DBNAME}.db.tar.gz *.pkg.tar.xz
-/usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz *.pkg.tar.xz
{% endhighlight %}
x86_64
repository update:
{% highlight bash %}
# updating x86_64 repo
+echo "[II] Updating x86_64 repo"
cd "${REPODIR}/x86_64"
for PACKAGE in ${x86_64_PACKAGES}; do
PKGNAME=$(echo ${PACKAGE} | /usr/bin/awk -F '-' '{for(i=1; i<=NF-3;i++) {printf("%s-", $i);}}' | /usr/bin/sed 's/.$//')
- /usr/bin/find -name "${PKGNAME}*.pkg.tar.xz" -type f -exec /usr/bin/bash -c "func_remove "${DBNAME}" "${PKGNAME}"" \;
- /usr/bin/cp "${PREPAREDIR}/${PACKAGE}"{,.sig} .
+ /usr/bin/find -name "${PKGNAME}"'*.pkg.tar.xz' -type f -exec /usr/bin/bash -c "func_remove "${PKGNAME}"" \;
+ /usr/bin/cp "${PREPAREDIR}/${PACKAGE}" .
+ [ ${USEGPG} == "yes" ] && /usr/bin/cp "${PREPAREDIR}/${PACKAGE}.sig" .
+ /usr/bin/repo-add --new ${DBNAME}.db.tar.gz "${PACKAGE}"
+ /usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz "${PACKAGE}"
done
-/usr/bin/repo-add --new ${DBNAME}.db.tar.gz *.pkg.tar.xz
-/usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz *.pkg.tar.xz
{% endhighlight %}
Cleaning
diff --git a/ru/_posts/2014-03-23-creating-custom-repo.html b/ru/_posts/2014-03-23-creating-custom-repo.html
index 634da78..4f6b3ec 100644
--- a/ru/_posts/2014-03-23-creating-custom-repo.html
+++ b/ru/_posts/2014-03-23-creating-custom-repo.html
@@ -29,7 +29,7 @@ mkdir -p ~/arch/{prepare,root,staging}
Подписывание пакетов.
Создание списка пакетов.
Обновление репозиториев:
- - Удаление старых пакетов из базы и репозитория.
+ - Удаление старых пакетов из репозитория.
- Копирование новых пакетов.
- Обновление базы.
@@ -50,15 +50,21 @@ yaourt -G package-name
func_build() {
PREPARE="$1"
ROOT="$2"
- if grep "arch=('any')" PKGBUILD -q; then
- /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}"
+ eval $(/usr/bin/grep 'arch=' PKGBUILD)
+ if echo ${arch} | /usr/bin/grep any -q; then
+ /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}" -c
else
- if grep "lib32" PKGBUILD -q; then
- /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}"
- /usr/bin/sudo /usr/bin/multilib-staging-build -r "${ROOT}"
+ eval $(/usr/bin/grep 'pkgname=' PKGBUILD)
+ if echo ${pkgname} | /usr/bin/grep lib32 -q; then
+ /usr/bin/sudo /usr/bin/multilib-staging-build -r "${ROOT}" -c
else
- /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}"
- /usr/bin/sudo /usr/bin/staging-x86_64-build -r "${ROOT}"
+ if /usr/bin/grep "lib32" PKGBUILD -q; then
+ /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}" -c
+ /usr/bin/sudo /usr/bin/multilib-staging-build -r "${ROOT}" -c
+ else
+ /usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}" -c
+ /usr/bin/sudo /usr/bin/staging-x86_64-build -r "${ROOT}" -c
+ fi
fi
fi
/usr/bin/cp *.pkg.tar.xz "${PREPARE}"
@@ -79,10 +85,13 @@ username ALL=NOPASSWD: /usr/bin/multilib-staging-build
Подпись пакетов
{% highlight bash %}
# signing
-cd "${PREPAREDIR}"
-for PACKAGE in $(/usr/bin/ls *.pkg.tar.xz); do
- /usr/bin/gpg -b ${PACKAGE}
-done
+if [ ${USEGPG} == "yes" ]; then
+ echo "[II] Signing"
+ cd "${PREPAREDIR}"
+ for PACKAGE in $(/usr/bin/find . -name '*.pkg.tar.xz'); do
+ /usr/bin/gpg -b ${PACKAGE}
+ done
+fi
{% endhighlight %}
Для удобства рекомендую настроить gpg-agent.
@@ -90,20 +99,17 @@ done
{% highlight bash %}
# creating packages list
cd "${PREPAREDIR}"
-i686_PACKAGES=$(/usr/bin/find * -name "*-i686.pkg.tar.xz" -o -name "*-any.pkg.tar.xz")
-x86_64_PACKAGES=$(/usr/bin/find * -name "*-x86_64.pkg.tar.xz" -o -name "*-any.pkg.tar.xz")
-echo "=> i686 packages: \n${i686_PACKAGES}"
-echo "=> x86_64 packages: \n${x86_64_PACKAGES}"
+i686_PACKAGES=$(/usr/bin/find * -name '*-i686.pkg.tar.xz' -o -name '*-any.pkg.tar.xz')
+x86_64_PACKAGES=$(/usr/bin/find * -name '*-x86_64.pkg.tar.xz' -o -name '*-any.pkg.tar.xz')
+echo -e "[II] => i686 packages: \n${i686_PACKAGES}"
+echo -e "[II] => x86_64 packages: \n${x86_64_PACKAGES}"
{% endhighlight %}
Обновление репозиториев
Функция для удаления пакетов из базы данных и из репозитория:
{% highlight bash %}
func_remove() {
- DBNAME="$1"
- PKGNAME="$2"
- /usr/bin/repo-remove ${DBNAME}.db.tar.gz ${PKGNAME}
- /usr/bin/repo-remove ${DBNAME}.files.tar.gz ${PKGNAME}
+ PKGNAME="$1"
/usr/bin/rm -f ${PKGNAME}*
}
export -f func_remove
@@ -111,26 +117,30 @@ export -f func_remove
Обновление репозитория i686
:
{% highlight bash %}
# updating i686 repo
+echo "[II] Updating i686 repo"
cd "${REPODIR}/i686"
for PACKAGE in ${i686_PACKAGES}; do
PKGNAME=$(echo ${PACKAGE} | /usr/bin/awk -F '-' '{for(i=1; i<=NF-3;i++) {printf("%s-", $i);}}' | /usr/bin/sed 's/.$//')
- /usr/bin/find -name "${PKGNAME}*.pkg.tar.xz" -type f -exec /usr/bin/bash -c "func_remove "${DBNAME}" "${PKGNAME}"" \;
- /usr/bin/cp "${PREPAREDIR}/${PACKAGE}"{,.sig} .
+ /usr/bin/find -name "${PKGNAME}*.pkg.tar.xz" -type f -exec /usr/bin/bash -c "func_remove "${PKGNAME}"" \;
+ /usr/bin/cp "${PREPAREDIR}/${PACKAGE}" .
+ [ ${USEGPG} == "yes" ] && /usr/bin/cp "${PREPAREDIR}/${PACKAGE}.sig" .
+ /usr/bin/repo-add --new ${DBNAME}.db.tar.gz "${PACKAGE}"
+ /usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz "${PACKAGE}"
done
-/usr/bin/repo-add --new ${DBNAME}.db.tar.gz *.pkg.tar.xz
-/usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz *.pkg.tar.xz
{% endhighlight %}
Обновление репозитория x86_64
:
{% highlight bash %}
# updating x86_64 repo
+echo "[II] Updating x86_64 repo"
cd "${REPODIR}/x86_64"
for PACKAGE in ${x86_64_PACKAGES}; do
PKGNAME=$(echo ${PACKAGE} | /usr/bin/awk -F '-' '{for(i=1; i<=NF-3;i++) {printf("%s-", $i);}}' | /usr/bin/sed 's/.$//')
- /usr/bin/find -name "${PKGNAME}*.pkg.tar.xz" -type f -exec /usr/bin/bash -c "func_remove "${DBNAME}" "${PKGNAME}"" \;
- /usr/bin/cp "${PREPAREDIR}/${PACKAGE}"{,.sig} .
+ /usr/bin/find -name "${PKGNAME}"'*.pkg.tar.xz' -type f -exec /usr/bin/bash -c "func_remove "${PKGNAME}"" \;
+ /usr/bin/cp "${PREPAREDIR}/${PACKAGE}" .
+ [ ${USEGPG} == "yes" ] && /usr/bin/cp "${PREPAREDIR}/${PACKAGE}.sig" .
+ /usr/bin/repo-add --new ${DBNAME}.db.tar.gz "${PACKAGE}"
+ /usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz "${PACKAGE}"
done
-/usr/bin/repo-add --new ${DBNAME}.db.tar.gz *.pkg.tar.xz
-/usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz *.pkg.tar.xz
{% endhighlight %}
Очистка