massive removal of aligning (since it has been added to css)

This commit is contained in:
arcan1s
2014-06-23 04:51:32 +04:00
parent cc462bc930
commit 27fce352a2
36 changed files with 707 additions and 707 deletions

View File

@ -8,16 +8,16 @@ short: about-zshrc
description: Это моя первая статья в блоге (я думаю, мне нужно что-нибудь для тестов =)). Существует множество похожих статей и, я думаю, не буду отличаться от большинства. Я просто хочу показать мой <code>.zshrc</code> и объяснить, что в нем есть и зачем оно нужно. Также, любые комментарии или дополнения приветствуются. <a href="http://archlinux.org.ru/forum/topic/12752/">Оригинал</a> статьи.
---
<h2><a name="prepare" class="anchor" href="#prepare"><span class="octicon octicon-link"></span></a>Подготовка</h2>
<p align="justify">Сначала установите необходимый минимум:</p>
<p>Сначала установите необходимый минимум:</p>
{% highlight bash %}
pacman -Sy pkgfile zsh zsh-completions zsh-syntax-highlighting
{% endhighlight %}
<p align="justify"><a href="https://www.archlinux.org/packages/pkgfile/">pkgfile</a> очень полезная утилита. Данная команда также установит шелл, дополнения к нему и подсветку синтаксиса.</p>
<p><a href="https://www.archlinux.org/packages/pkgfile/">pkgfile</a> очень полезная утилита. Данная команда также установит шелл, дополнения к нему и подсветку синтаксиса.</p>
<h2><a name="configuration" class="anchor" href="#configuration"><span class="octicon octicon-link"></span></a>Настройка шелла</h2>
<p align="justify">Все доступные опции приведены <a href="http://zsh.sourceforge.net/Doc/Release/Options.html">здесь</a>.</p>
<p>Все доступные опции приведены <a href="http://zsh.sourceforge.net/Doc/Release/Options.html">здесь</a>.</p>
<p align="justify">Указываем файл с историей, число команд хранящихся в кэше текущего сеанса и число команд, хранящихся в файле:</p>
<p>Указываем файл с историей, число команд хранящихся в кэше текущего сеанса и число команд, хранящихся в файле:</p>
{% highlight bash %}
# history
HISTFILE=~/.zsh_history
@ -25,7 +25,7 @@ HISTSIZE=500000
SAVEHIST=500000
{% endhighlight %}
<p align="justify">Я не могу запомнить все комбинации <code>Ctrl+</code>, поэтому я назначаю клавиши на их стандартное использование:</p>
<p>Я не могу запомнить все комбинации <code>Ctrl+</code>, поэтому я назначаю клавиши на их стандартное использование:</p>
{% highlight bash %}
# bindkeys
bindkey '^[[A' up-line-or-search # up arrow for back-history-search
@ -37,9 +37,9 @@ bindkey '\e[4~' end-of-line # end
bindkey '\e[5~' up-line-or-history # page-up
bindkey '\e[6~' down-line-or-history # page-down
{% endhighlight %}
<p align="justify">Но здесь важно, что стрелки <code>вверх</code>/<code>вниз</code> служат для навигации по истории с учетом <b>уже введенной части</b> команды. А <code>PgUp</code>/<code>PgDown</code> <b>проигнорируют</b> уже введенную часть команды.</p>
<p>Но здесь важно, что стрелки <code>вверх</code>/<code>вниз</code> служат для навигации по истории с учетом <b>уже введенной части</b> команды. А <code>PgUp</code>/<code>PgDown</code> <b>проигнорируют</b> уже введенную часть команды.</p>
<p align="justify">Автодополнение команд:</p>
<p>Автодополнение команд:</p>
{% highlight bash %}
# autocomplete
autoload -U compinit
@ -47,65 +47,65 @@ compinit
zstyle ':completion:*' insert-tab false
zstyle ':completion:*' max-errors 2
{% endhighlight %}
<p align="justify">Подключается полное автодополнение команд. <code>insert-tab false</code> включит автодополнение для <b>невведенной</b> команды (не знаю, зачем). <code>max-errors</code> устанавливает максимальное число опечаток, которые могут быть исправлены.</p>
<p>Подключается полное автодополнение команд. <code>insert-tab false</code> включит автодополнение для <b>невведенной</b> команды (не знаю, зачем). <code>max-errors</code> устанавливает максимальное число опечаток, которые могут быть исправлены.</p>
<p align="justify">Приглашение:</p>
<p>Приглашение:</p>
{% highlight bash %}
# promptinit
autoload -U promptinit
promptinit
{% endhighlight %}
<p align="justify">Включим цвета:</p>
<p>Включим цвета:</p>
{% highlight bash %}
# colors
autoload -U colors
colors
{% endhighlight %}
<p align="justify">Различные опции.</p>
<p align="justify">Смена директории без ввода <code>cd</code>:</p>
<p>Различные опции.</p>
<p>Смена директории без ввода <code>cd</code>:</p>
{% highlight bash %}
# autocd
setopt autocd
{% endhighlight %}
<p align="justify">Корректировка опечаток (и шаблон вопроса):</p>
<p>Корректировка опечаток (и шаблон вопроса):</p>
{% highlight bash %}
# correct
setopt CORRECT_ALL
SPROMPT="Correct '%R' to '%r' ? ([Y]es/[N]o/[E]dit/[A]bort) "
{% endhighlight %}
<p align="justify">Отключаем е#$%ую пищалку:</p>
<p>Отключаем е#$%ую пищалку:</p>
{% highlight bash %}
# disable beeps
unsetopt beep
{% endhighlight %}
<p align="justify">Включаем калькулятор:</p>
<p>Включаем калькулятор:</p>
{% highlight bash %}
# calc
autoload zcalc
{% endhighlight %}
<p align="justify">Дополнение истории (<b>а не перезапись</b> файла):</p>
<p>Дополнение истории (<b>а не перезапись</b> файла):</p>
{% highlight bash %}
# append history
setopt APPEND_HISTORY
{% endhighlight %}
<p align="justify">Не сохранять дубликаты в историю:</p>
<p>Не сохранять дубликаты в историю:</p>
{% highlight bash %}
# ignore dups in history
setopt HIST_IGNORE_ALL_DUPS
{% endhighlight %}
<p align="justify">...и дополнительные пробелы:</p>
<p>...и дополнительные пробелы:</p>
{% highlight bash %}
# ignore spaces in history
setopt HIST_IGNORE_SPACE
{% endhighlight %}
<p align="justify">...и пустые линии тоже:</p>
<p>...и пустые линии тоже:</p>
{% highlight bash %}
# reduce blanks in history
setopt HIST_REDUCE_BLANKS
{% endhighlight %}
<p align="justify">Включаем <code>pkgfile</code>:</p>
<p>Включаем <code>pkgfile</code>:</p>
{% highlight bash %}
# pkgfile
source /usr/share/doc/pkgfile/command-not-found.zsh
@ -158,10 +158,10 @@ ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow' # конс
# root
#ZSH_HIGHLIGHT_STYLES[root]='bg=red'
{% endhighlight %}
<p align="justify">В первой строке включаем подсветку. Затем включаем основную подсветку, а также подсветку скобок и шаблонов. Шаблоны указываются ниже (<code>rm -rf *</code> в примере). Также может быть включена подсветка команд от <code>root</code> и курсора <code>cursor</code>. Синтаксис настроек понятен, <code>fg</code> цвет шрифта, <code>bg</code> цвет фона.</p>
<p>В первой строке включаем подсветку. Затем включаем основную подсветку, а также подсветку скобок и шаблонов. Шаблоны указываются ниже (<code>rm -rf *</code> в примере). Также может быть включена подсветка команд от <code>root</code> и курсора <code>cursor</code>. Синтаксис настроек понятен, <code>fg</code> цвет шрифта, <code>bg</code> цвет фона.</p>
<h2><a name="prompt" class="anchor" href="#prompt"><span class="octicon octicon-link"></span></a>$PROMPT и $RPROMPT</h2>
<p align="justify">Я хочу использовать один файл <code>.zshrc</code> для рута и обычного пользователя:</p>
<p>Я хочу использовать один файл <code>.zshrc</code> для рута и обычного пользователя:</p>
{% highlight bash %}
# PROMPT && RPROMPT
if [[ $EUID == 0 ]]; then
@ -183,7 +183,7 @@ else
fi
{% endhighlight %}
<p align="justify"><code>fg</code> цвет шрифта, <code>bg</code> цвет фона. <code>_bold</code> и <code>_no_bold</code> регулируют оттенок. Команды должны быть обрамлены в <code>%{ ... %}</code>, чтобы не показывались. Доступные цвета:</p>
<p><code>fg</code> цвет шрифта, <code>bg</code> цвет фона. <code>_bold</code> и <code>_no_bold</code> регулируют оттенок. Команды должны быть обрамлены в <code>%{ ... %}</code>, чтобы не показывались. Доступные цвета:</p>
{% highlight bash %}
black
red
@ -195,7 +195,7 @@ cyan
white
{% endhighlight %}
<p align="justify">Доступные переменные:</p>
<p>Доступные переменные:</p>
{% highlight bash %}
%n - имя пользователя
%m - хостнейм (выставляется только в начале сессии)
@ -211,7 +211,7 @@ white
%1/ - то же, но только последняя директория
{% endhighlight %}
<p align="justify">RPROMPT (необходим пакет <code>acpi</code>):</p>
<p>RPROMPT (необходим пакет <code>acpi</code>):</p>
{% highlight bash %}
precmd () {
# battery charge
@ -236,12 +236,12 @@ $(batcharge)\
$returncode\
"%{$fg_bold[white]%}]%{$reset_color%}"
{% endhighlight %}
<p align="justify">Мой RPROMPT показывает текущее время, заряд батареи и код возврата последнего приложения. <code>precmd()</code> необходимо для автоматического обновления. Конструкция <code>$(if.true.false)</code> является условным оператором в <code>zsh</code>.</p>
<p>Мой RPROMPT показывает текущее время, заряд батареи и код возврата последнего приложения. <code>precmd()</code> необходимо для автоматического обновления. Конструкция <code>$(if.true.false)</code> является условным оператором в <code>zsh</code>.</p>
<h2><a name="aliases" class="anchor" href="#aliases"><span class="octicon octicon-link"></span></a>Аллиасы</h2>
<p align="justify"><b>Копируйте только те аллиасы, которые Вам необходимы.</b> Если какой-либо аллиас использует приложение, которое не установлено, это приведет к сбою загрузки конфигурационного файла.</p>
<p><b>Копируйте только те аллиасы, которые Вам необходимы.</b> Если какой-либо аллиас использует приложение, которое не установлено, это приведет к сбою загрузки конфигурационного файла.</p>
<p align="justify">Полезная (или не очень) функция:</p>
<p>Полезная (или не очень) функция:</p>
{% highlight bash %}
show_which() {
OUTPUT=$(which $1 | cut -d " " -f7-)
@ -249,7 +249,7 @@ show_which() {
}
{% endhighlight %}
<p align="justify">Первая группа аллиасов:</p>
<p>Первая группа аллиасов:</p>
{% highlight bash %}
## alias
# цветной grep
@ -268,7 +268,7 @@ alias less='vimpager'
alias zless='vimpager'
{% endhighlight %}
<p align="justify">ls аллиасы (смотри <a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?ls">man ls</a>):</p>
<p>ls аллиасы (смотри <a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?ls">man ls</a>):</p>
{% highlight bash %}
alias ls='show_which ls && ls --color=auto --group-directories-first'
alias ll='show_which ll && ls -l --human-readable'
@ -280,7 +280,7 @@ alias lt='show_which lt && ll -t --reverse'
alias lm='show_which lm && la | more'
{% endhighlight %}
<p align="justify">Аллиасы для быстрого просмотра файлов из консоли (просто набери имя файла!):</p>
<p>Аллиасы для быстрого просмотра файлов из консоли (просто набери имя файла!):</p>
{% highlight bash %}
# alias -s
alias -s {avi,mpeg,mpg,mov,m2v,mkv}=mpv
@ -291,7 +291,7 @@ autoload -U pick-web-browser
alias -s {html,htm}=opera
{% endhighlight %}
<p align="justify">"sudo" аллиасы:</p>
<p>"sudo" аллиасы:</p>
{% highlight bash %}
# sudo alias
if [[ $EUID == 0 ]]; then
@ -314,7 +314,7 @@ else
fi
{% endhighlight %}
<p align="justify">Некоторые глобальные аллиасы. Если они включены, команда <code>cat foo g bar</code> будет эквивалентна <code>cat foo | grep bar</code>:</p>
<p>Некоторые глобальные аллиасы. Если они включены, команда <code>cat foo g bar</code> будет эквивалентна <code>cat foo | grep bar</code>:</p>
{% highlight bash %}
# global alias
alias -g g="| grep"
@ -325,7 +325,7 @@ alias -g dn="&> /dev/null &"
{% endhighlight %}
<h2><a name="functions" class="anchor" href="#functions"><span class="octicon octicon-link"></span></a>Функции</h2>
<p align="justify">Специальная функция для <code>xrandr</code>:</p>
<p>Специальная функция для <code>xrandr</code>:</p>
{% highlight bash %}
# function to contorl xrandr
@ -350,7 +350,7 @@ projctl () {
}
{% endhighlight %}
<p align="justify">К сожалению, я не могу запомнить флаги <code>tar</code>, поэтому я использую специальные функции:</p>
<p>К сожалению, я не могу запомнить флаги <code>tar</code>, поэтому я использую специальные функции:</p>
{% highlight bash %}
# function to extract archives
# EXAMPLE: unpack file
@ -403,7 +403,7 @@ pack () {
}
{% endhighlight %}
<p align="justify">Специальная функция для <code>su</code>:</p>
<p>Специальная функция для <code>su</code>:</p>
{% highlight bash %}
su () {
CHECKSU=0
@ -421,7 +421,7 @@ su () {
}
{% endhighlight %}
<p align="justify">Функция, которая заменяет оригиналькую команду <code>rm</code>. Если Вы наберете <code>rm</code>, это будет эквивалентно перемещению в корзину, также, Вы можете легко восстановить удаленный файл:</p>
<p>Функция, которая заменяет оригиналькую команду <code>rm</code>. Если Вы наберете <code>rm</code>, это будет эквивалентно перемещению в корзину, также, Вы можете легко восстановить удаленный файл:</p>
{% highlight bash %}
rm () {
# error check
@ -464,7 +464,7 @@ rm () {
}
{% endhighlight %}
<p align="justify">Функция для автоматических обновлений путей после установки пакетов:</p>
<p>Функция для автоматических обновлений путей после установки пакетов:</p>
{% highlight bash %}
pacman () {
/usr/bin/sudo /usr/bin/pacman $* && echo "$*" | grep -q "S\|R\|U" && rehash
@ -477,12 +477,12 @@ yatest () {
/usr/bin/yaourt --config /etc/pactest.conf $* && echo "$*" | grep -q "S\|R\|U" && rehash
}
{% endhighlight %}
<p align="justify">Но автодополнение для <code>yaourt -Ss</code> <a href="https://github.com/zsh-users/zsh-completions/pull/205">будет требовать</a> привилегий рута.</p>
<p>Но автодополнение для <code>yaourt -Ss</code> <a href="https://github.com/zsh-users/zsh-completions/pull/205">будет требовать</a> привилегий рута.</p>
<h2><a name="variables" class="anchor" href="#variables"><span class="octicon octicon-link"></span></a>Переменные</h2>
<p align="justify">Рекомендуется хранить свои переменные в <code>~/.zshenv</code>. Но я все храню в одном файле.</p>
<p>Рекомендуется хранить свои переменные в <code>~/.zshenv</code>. Но я все храню в одном файле.</p>
<p align="justify">Пути, маска создаваемых файлов, редактор и пейджер:</p>
<p>Пути, маска создаваемых файлов, редактор и пейджер:</p>
{% highlight bash %}
# path
export PATH="$PATH:$HOME/.local/bin"
@ -493,7 +493,7 @@ export EDITOR="vim"
export PAGER="vimpager"
{% endhighlight %}
<p align="justify">Хэши. Если они включены, команда <code>~global</code> будет эквивалентна команде <code>/mnt/global</code>:</p>
<p>Хэши. Если они включены, команда <code>~global</code> будет эквивалентна команде <code>/mnt/global</code>:</p>
{% highlight bash %}
# hash
hash -d global=/mnt/global
@ -504,7 +504,7 @@ hash -d u2=/mnt/usbdev2
{% endhighlight %}
<h2><a name="screenshot" class="anchor" href="#screenshot"><span class="octicon octicon-link"></span></a>Скриншот</h2>
<p align="justify"><a href="/resources/screenshots/zshrc_demo.png"><img src="/resources/preview/zshrc_demo_prev.jpg"></a></p>
<p><a href="/resources/screenshots/zshrc_demo.png"><img src="/resources/preview/zshrc_demo_prev.jpg"></a></p>
<h2><a name="file" class="anchor" href="#file"><span class="octicon octicon-link"></span></a>Файл</h2>
<p align="justify"><a href="https://raw.github.com/arcan1s/dotfiles/master/zshrc">Мой</a> <code>.zshrc</code>.</p>
<p><a href="https://raw.github.com/arcan1s/dotfiles/master/zshrc">Мой</a> <code>.zshrc</code>.</p>

View File

@ -8,27 +8,27 @@ short: building-qutim-using-qt5
description: Если кто-то не знает, <a href="http://qutim.org">Qutim</a> - мультипротокольный кросс-платформенный месседжер. Написан он на <code>CPP</code> с использованием библиотек Qt. Проект активно развивается. В этой статье речь пойдет о реализации сборки данного пакета в Archlinux с использованием библиотек Qt5 (а не Qt4, как это делают текущие пакеты в AUR).
---
<h2><a name="problems" class="anchor" href="#problems"><span class="octicon octicon-link"></span></a>Что не так?</h2>
<p align="justify">Да все так. Просто пакет использует для сборки систему <a href="http://qt-project.org/wiki/qbs">qbs</a>, которая, на мой взгляд, немного странная. Пакет, необходимый для сборки, <a href="https://aur.archlinux.org/packages/qbs-git/">находится в AUR</a> (рекомендую git-версию). Когда я спросил у Andrea Scarpino (который сопровождает все KDE и Qt пакеты в официальные репозитории) по поводу переноса этого пакета в репозитории, он ответил, что всему свое время. В принципе, я с ним согласен, так как проект, судя по всему, еще немного сыроват.</p>
<p>Да все так. Просто пакет использует для сборки систему <a href="http://qt-project.org/wiki/qbs">qbs</a>, которая, на мой взгляд, немного странная. Пакет, необходимый для сборки, <a href="https://aur.archlinux.org/packages/qbs-git/">находится в AUR</a> (рекомендую git-версию). Когда я спросил у Andrea Scarpino (который сопровождает все KDE и Qt пакеты в официальные репозитории) по поводу переноса этого пакета в репозитории, он ответил, что всему свое время. В принципе, я с ним согласен, так как проект, судя по всему, еще немного сыроват.</p>
<h2><a name="prepare" class="anchor" href="#prepare"><span class="octicon octicon-link"></span></a>Подготовка</h2>
<p align="justify">Установим зависимости. Что-то может быть пропустил, зависимости сканировал с использованием <code>namcap</code>:</p>
<p>Установим зависимости. Что-то может быть пропустил, зависимости сканировал с использованием <code>namcap</code>:</p>
{% highlight bash %}
pacman -Sy --asdeps clang git libc++abi qt5-quick1 qt5-x11extras
yaourt -S --asdeps jreen-git qbs-git
{% endhighlight %}
<h3><a name="qbs" class="anchor" href="#qbs"><span class="octicon octicon-link"></span></a>Настройка qbs</h3>
<p align="justify">Желающие могут почитать документацию <a href="http://qt-project.org/wiki/qbs">по ссылке</a> или посмотреть примеры (включены в пакет). Загвоздка в том, что эта штука использует файл настроек, который, во-первых, нужно сначала сгенерировать, во-вторых, хранится в домашней директории (и только там). В теории, генерация файла настроек (<code>~/.config/QtProject/qbs.conf</code>) происходит следующим образом:</p>
<p>Желающие могут почитать документацию <a href="http://qt-project.org/wiki/qbs">по ссылке</a> или посмотреть примеры (включены в пакет). Загвоздка в том, что эта штука использует файл настроек, который, во-первых, нужно сначала сгенерировать, во-вторых, хранится в домашней директории (и только там). В теории, генерация файла настроек (<code>~/.config/QtProject/qbs.conf</code>) происходит следующим образом:</p>
{% highlight bash %}
qbs-setup-qt --detect
qbs-detect-toolchains
{% endhighlight %}
<p align="justify">Сначала находим Qt для сборки, потом находим инструментарий (компиляторы, например). Дальше вставляем инструментарий (например, нам для Qutim нужен <code>clang</code>) в Qt, например, так:</p>
<p>Сначала находим Qt для сборки, потом находим инструментарий (компиляторы, например). Дальше вставляем инструментарий (например, нам для Qutim нужен <code>clang</code>) в Qt, например, так:</p>
{% highlight bash %}
sed 's/clang\\/qt-5-2-0\\/g' -i ~/.config/QtProject/qbs.conf
{% endhighlight %}
<p align="justify">Альтернативные варианты - править файл вручную или воспользоваться <code>qbs-config-ui</code> или <code>qbs-config</code> на Ваш выбор.</p>
<p align="justify">Так или иначе, нужный файл мы сгенерировали, сохраним его в будущей директории сборки:</p>
<p>Альтернативные варианты - править файл вручную или воспользоваться <code>qbs-config-ui</code> или <code>qbs-config</code> на Ваш выбор.</p>
<p>Так или иначе, нужный файл мы сгенерировали, сохраним его в будущей директории сборки:</p>
{% highlight ini %}
[General]
@ -64,10 +64,10 @@ qutim\qbs\architecture=x86_64
qutim\qbs\endianness=little
qutim\qbs\toolchain=clang, llvm, gcc
{% endhighlight %}
<p align="justify"><a href="/resources/docs/qutim-qt5-git/qbs-qutim.conf">qbs-qutim.conf</a></p>
<p><a href="/resources/docs/qutim-qt5-git/qbs-qutim.conf">qbs-qutim.conf</a></p>
<h3><a name="patch" class="anchor" href="#patch"><span class="octicon octicon-link"></span></a>Готовим патч для исходников</h3>
<p align="justify">Первая проблема - <code>clang</code> (по крайней мере, в Archlinux):</p>
<p>Первая проблема - <code>clang</code> (по крайней мере, в Archlinux):</p>
{% highlight diff %}
diff -ruN qutim.orig/core/libqutim.qbs qutim/core/libqutim.qbs
--- qutim.orig/core/libqutim.qbs 2014-01-06 15:39:56.000000000 +0400
@ -82,7 +82,7 @@ diff -ruN qutim.orig/core/libqutim.qbs qutim/core/libqutim.qbs
}
{% endhighlight %}
<p align="justify">И пофиксить сборку библиотеки для Vk:</p>
<p>И пофиксить сборку библиотеки для Vk:</p>
{% highlight diff %}
diff -ruN qutim.orig/protocols/vkontakte/vreen/vreen.qbs qutim/protocols/vkontakte/vreen/vreen.qbs
--- qutim.orig/protocols/vkontakte/vreen/vreen.qbs 2014-01-06 15:41:42.000000000 +0400
@ -96,7 +96,7 @@ diff -ruN qutim.orig/protocols/vkontakte/vreen/vreen.qbs qutim/protocols/vkontak
property string vreen_version_major: 1
property string vreen_version_minor: 9
{% endhighlight %}
<p align="justify"><a href="/resources/docs/qutim-qt5-git/qutim-qbs-1.1.patch">qutim-qbs-1.1.patch</a></p>
<p><a href="/resources/docs/qutim-qt5-git/qutim-qbs-1.1.patch">qutim-qbs-1.1.patch</a></p>
<h3><a name="sources" class="anchor" href="#sources"><span class="octicon octicon-link"></span></a>Получаем исходники</h3>
{% highlight bash %}
@ -120,13 +120,13 @@ patch -p0 -i qutim-qbs-1.1.patch
cd qutim
HOME=$(pwd) qbs -j $(nproc) -d ../build release profile:qutim
{% endhighlight %}
<p align="justify">Я пытался сделать универсальный способ сборки пакета, поэтому такое странное переназначение домашней директории. Флаг <code>-j</code> указывает число потоков сборки, флаг <code>-d</code> директорию сборки, <code>release</code> тип сборки (debug, release), <code>profile</code> используемый профиль, описанный в файле настроек.</p>
<p>Я пытался сделать универсальный способ сборки пакета, поэтому такое странное переназначение домашней директории. Флаг <code>-j</code> указывает число потоков сборки, флаг <code>-d</code> директорию сборки, <code>release</code> тип сборки (debug, release), <code>profile</code> используемый профиль, описанный в файле настроек.</p>
<h2><a name="install" class="anchor" href="#install"><span class="octicon octicon-link"></span></a>Установка</h2>
{% highlight bash %}
HOME=$(pwd) sudo qbs install -d ../build --install-root "/usr" profile:qutim
{% endhighlight %}
<p align="justify">Из нового - указание корневого каталога (<code>--install-root</code>). Без этого пакет будет установлен в <code>/</code> (<code>/bin</code> и <code>/lib</code>).</p>
<p>Из нового - указание корневого каталога (<code>--install-root</code>). Без этого пакет будет установлен в <code>/</code> (<code>/bin</code> и <code>/lib</code>).</p>
<h2><a name="pkgbuild" class="anchor" href="#pkgbuild"><span class="octicon octicon-link"></span></a>PKGBUILD</h2>
{% highlight bash %}
@ -181,4 +181,4 @@ package() {
HOME="${srcdir}" qbs install -d ../build --install-root "${pkgdir}/usr" profile:qutim
}
{% endhighlight %}
<p align="justify"><a href="/resources/docs/qutim-qt5-git/PKGBUILD">PKGBUILD</a></p>
<p><a href="/resources/docs/qutim-qt5-git/PKGBUILD">PKGBUILD</a></p>

View File

@ -8,12 +8,12 @@ short: creating-custom-repo
description: Небольшая статья, посвященная созданию собственного репозитория для Archlinux.
---
<h2><a name="prepare" class="anchor" href="#prepare"><span class="octicon octicon-link"></span></a>Подготовка</h2>
<p align="justify">Для начала находим сервер и желание с ним заниматься сексом. Для простоты, лучше, чтобы там стоял Archlinux, хотя, это и не совсем обязательно (можно создать отдельный корень под Arch). Из пакетов, пожалуй, нам понадобится только два, <code>devtools</code> и сам <code>pacman</code>:</p>
<p>Для начала находим сервер и желание с ним заниматься сексом. Для простоты, лучше, чтобы там стоял Archlinux, хотя, это и не совсем обязательно (можно создать отдельный корень под Arch). Из пакетов, пожалуй, нам понадобится только два, <code>devtools</code> и сам <code>pacman</code>:</p>
{% highlight bash %}
pacman -Sy devtools
{% endhighlight %}
<p align="justify"><a href="https://www.archlinux.org/packages/devtools/">devtools</a> - набор скриптов, предназначенный для автоматизации сборки пакетов в чистом чруте. Думаю, большинство мейнтейнеров Arch'а пользуются им.</p>
<p align="justify">Создадим рабочие директории и установим цвета:</p>
<p><a href="https://www.archlinux.org/packages/devtools/">devtools</a> - набор скриптов, предназначенный для автоматизации сборки пакетов в чистом чруте. Думаю, большинство мейнтейнеров Arch'а пользуются им.</p>
<p>Создадим рабочие директории и установим цвета:</p>
{% highlight bash %}
# цвета
if [ ${USECOLOR} == "yes" ]; then
@ -49,11 +49,11 @@ if [ ! -d "${STAGINGDIR}" ]; then
mkdir -p "${STAGINGDIR}" || error_mes "unknown"
fi
{% endhighlight %}
<p align="justify">Директории <code>${REPODIR}/{i686,x86_64}</code> для самого репозитория, <code>${PREPAREDIR}</code> - директория, где будут лежать собранные пакеты, <code>${STAGINGDIR}</code> - директория, откуда будут собираться пакеты.</p>
<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 align="justify">Создаем директорию, расшариваем ее (например, по <a href="/ru/2014/03/06/site-changes/">ftp</a>). В ней две субдиректории - <code>i686</code> и <code>x86_64</code>, для каждого типа архитектур соответственно. И наполняем их набором пакетов по Вашему усмотрению.</p>
<p align="justify">Процесс обновления репозитория можно разбить на следующие части:</p>
<p>Создаем директорию, расшариваем ее (например, по <a href="/ru/2014/03/06/site-changes/">ftp</a>). В ней две субдиректории - <code>i686</code> и <code>x86_64</code>, для каждого типа архитектур соответственно. И наполняем их набором пакетов по Вашему усмотрению.</p>
<p>Процесс обновления репозитория можно разбить на следующие части:</p>
<ol>
<li>Создание PKGBUILD'ов (обновление их из AUR'а).</li>
<li>Сборка пакетов для различных архитектур в чистом чруте.</li>
@ -66,17 +66,17 @@ fi
</li>
<li>Очистка.</li>
</ol>
<p align="justify">Теперь по шагам.</p>
<p>Теперь по шагам.</p>
<h3><a name="pkgbuild" class="anchor" href="#pkgbuild"><span class="octicon octicon-link"></span></a>Создание PKGBUILD'ов</h3>
<p align="justify">Скачаем исходники для всех нужных пакетов из AUR'а:</p>
<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>
<p align="justify">Автоматически соберем каждый пакет:</p>
<p>Автоматически соберем каждый пакет:</p>
{% highlight bash %}
func_build() {
if [ ${USECOLOR} == "yes" ]; then
@ -114,7 +114,7 @@ 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 align="justify">Для удобства рекомендую добавить в файл <code>/etc/sudoers</code> следующие строки:</p>
<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
@ -132,7 +132,7 @@ if [ ${USEGPG} == "yes" ]; then
done
fi
{% endhighlight %}
<p align="justify">Для удобства рекомендую настроить <a href="https://wiki.archlinux.org/index.php/GPG#gpg-agent">gpg-agent</a>.</p>
<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>
{% highlight bash %}
@ -145,14 +145,14 @@ echo -e "${bwhite}[II] ${bblue}=>${cclose} x86_64 packages: \n${bwhite}${x86_64_
{% endhighlight %}
<h3><a name="updating" class="anchor" href="#updating"><span class="octicon octicon-link"></span></a>Обновление репозиториев</h3>
<p align="justify">Функция для удаления пакетов из базы данных и из репозитория:</p>
<p>Функция для удаления пакетов из базы данных и из репозитория:</p>
{% highlight bash %}
func_remove() {
_PACKAGE="$1"
/usr/bin/rm -f "${_PACKAGE}"{,.sig}
}
{% endhighlight %}
<p align="justify">Обновление репозитория <code>i686</code>:</p>
<p>Обновление репозитория <code>i686</code>:</p>
{% highlight bash %}
# обновление репозитория i686
echo -e "${bwhite}[II]${cclose} Updating ${bwhite}i686${cclose} repo"
@ -169,7 +169,7 @@ for PACKAGE in ${i686_PACKAGES}; do
/usr/bin/repo-add --files ${DBNAME}.files.tar.gz "${PACKAGE}"
done
{% endhighlight %}
<p align="justify">Обновление репозитория <code>x86_64</code>:</p>
<p>Обновление репозитория <code>x86_64</code>:</p>
{% highlight bash %}
# обновление репозитория x86_64
echo -e "${bwhite}[II]${cclose} Updating ${bwhite}x86_64${cclose} repo"
@ -197,7 +197,7 @@ cd "${STAGINGDIR}"
{% endhighlight %}
<h3><a name="symlinks" class="anchor" href="#symlinks"><span class="octicon octicon-link"></span></a>Создание симлинков</h3>
<p align="justify">Вы можете захотеть создать директорию, которая будет содержать симлинки на актуальные версии пакетов с именами, не содержащими версии:</p>
<p>Вы можете захотеть создать директорию, которая будет содержать симлинки на актуальные версии пакетов с именами, не содержащими версии:</p>
{% highlight bash %}
# создание симлинков
if [ ${SYMLINK} == "yes" ]; then
@ -220,10 +220,10 @@ fi
{% endhighlight %}
<h3><a name="file" class="anchor" href="#file"><span class="octicon octicon-link"></span></a>Файл</h3>
<p align="justify"><a href="https://github.com/arcan1s/repo-scripts">Скрипты</a> целиком. Скачиваем исходники для пакетов, запускаем скрипт (при необходимости, редактируем переменные) и радуемся жизни.</p>
<p><a href="https://github.com/arcan1s/repo-scripts">Скрипты</a> целиком. Скачиваем исходники для пакетов, запускаем скрипт (при необходимости, редактируем переменные) и радуемся жизни.</p>
<h2><a name="using" class="anchor" href="#using"><span class="octicon octicon-link"></span></a>Использование репозитория</h2>
<p align="justify">Просто добавляем в файл <code>/etc/pacman.conf</code> следующие строки:</p>
<p>Просто добавляем в файл <code>/etc/pacman.conf</code> следующие строки:</p>
{% highlight bash %}
[$REPONAME]
Server = ftp://$REPOADDRESS/repo/$arch

View File

@ -8,25 +8,25 @@ short: loveless
description: На правах оффтопа, небольшая поэма из Final Fantasy VII Crisis Core.
---
<h2><a name="prologue" class="anchor" href="#prologue"><span class="octicon octicon-link"></span></a>Prologue</h2>
<p align="justify">
<p>
When the war of the beasts brings about the world's end<br>
The goddess descends from the sky<br>
Wings of light and dark spread afar<br>
She guides us to bliss, her gift everlasting.</p>
<h2><a name="acti" class="anchor" href="#acti"><span class="octicon octicon-link"></span></a>Act I</h2>
<p align="justify">Infinite in mystery is the gift of the Goddess<br>
<p>Infinite in mystery is the gift of the Goddess<br>
We seek it thus, and take to the sky<br>
Ripples form on the water's surface<br>
The wandering soul knows no rest.</p>
<h2><a name="actii" class="anchor" href="#actii"><span class="octicon octicon-link"></span></a>Act II</h2>
<p align="justify">There is no hate, only joy<br>
<p>There is no hate, only joy<br>
For you are beloved by the goddess<br>
Hero of the dawn, Healer of worlds<br>
Dreams of the morrow hath the shattered soul<br>
Pride is lost<br>
Wings stripped away, the end is nigh.</p>
<h2><a name="actiii" class="anchor" href="#actiii"><span class="octicon octicon-link"></span></a>Act III</h2>
<p align="justify">My friend, do you fly away now?<br>
<p>My friend, do you fly away now?<br>
To a world that abhors you and I?<br>
All that awaits you is a somber morrow<br>
No matter where the winds may blow<br>
@ -35,7 +35,7 @@ Is the bringer of life, the gift of the goddess<br>
Even if the morrow is barren of promises<br>
Nothing shall forestall my return.</p>
<h2><a name="activ" class="anchor" href="#activ"><span class="octicon octicon-link"></span></a>Act IV</h2>
<p align="justify">My friend, the fates are cruel<br>
<p>My friend, the fates are cruel<br>
There are no dreams, no honor remains<br>
The arrow has left, the bow of the goddess<br>
My soul, corrupted by vengeance<br>
@ -46,7 +46,7 @@ Legend shall speak<br>
Of sacrifice at world's end<br>
The wind sails over the water's surface.</p>
<h2><a name="actv" class="anchor" href="#actv"><span class="octicon octicon-link"></span></a>Act V</h2>
<p align="justify">Even if the morrow is barren of promises<br>
<p>Even if the morrow is barren of promises<br>
Nothing shall forestall my return<br>
To become the dew that quenches the land<br>
To spare the sands, the seas, the skies<br>

View File

@ -9,70 +9,70 @@ description: Небольшая статья, посвященная набор
---
<h2><a name="apps" class="anchor" href="#apps"><span class="octicon octicon-link"></span></a>Приложения</h2>
<ul>
<li><p align="justify"><b>Shell</b> - zshrc без вариантов. Некоторое описание моих настроек шелла могут быть найдены <a href="/ru/2014/01/14/about-zshrc/">тут</a>. Сами настройки хранятся <a href="https://raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc">тут</a> или <a href="https://raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc_server">тут</a>.</p></li>
<li><p><b>Shell</b> - zshrc без вариантов. Некоторое описание моих настроек шелла могут быть найдены <a href="/ru/2014/01/14/about-zshrc/">тут</a>. Сами настройки хранятся <a href="https://raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc">тут</a> или <a href="https://raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc_server">тут</a>.</p></li>
<li><p align="justify"><b>DE</b> - KDE со всеми вытекающими (поэтому набор приложений, преимущественно, Qt-based). Некоторые подробности приготовления KDE будут даны ниже.</p></li>
<li><p><b>DE</b> - KDE со всеми вытекающими (поэтому набор приложений, преимущественно, Qt-based). Некоторые подробности приготовления KDE будут даны ниже.</p></li>
<li><p align="justify"><b>Работа с изображениями</b> - <a href="http://kde.org/applications/graphics/gwenview/">gwenview</a> для просмотра и быстрого редактирования, <a href="http://kde.org/applications/graphics/kolourpaint/">kolourpaint</a> для простого редактирования стандартных форматов пиксельной графики, <a href="http://www.gimp.org/">gimp</a> (без плагинов, ибо не было необходимости) для более сурового редактирования и <a href="http://www.inkscape.org/">inkskape</a> для работы с векторной графикой.</p></li>
<li><p><b>Работа с изображениями</b> - <a href="http://kde.org/applications/graphics/gwenview/">gwenview</a> для просмотра и быстрого редактирования, <a href="http://kde.org/applications/graphics/kolourpaint/">kolourpaint</a> для простого редактирования стандартных форматов пиксельной графики, <a href="http://www.gimp.org/">gimp</a> (без плагинов, ибо не было необходимости) для более сурового редактирования и <a href="http://www.inkscape.org/">inkskape</a> для работы с векторной графикой.</p></li>
<li><p align="justify"><b>Браузер</b> - Firefox, ранее Qupzilla, еще ранее Opera. Некоторый набор настроек Firefox будет дан ниже. Дополнительный браузер - Chromium. Консольный - elinks.</p></li>
<li><p><b>Браузер</b> - Firefox, ранее Qupzilla, еще ранее Opera. Некоторый набор настроек Firefox будет дан ниже. Дополнительный браузер - Chromium. Консольный - elinks.</p></li>
<li><p align="justify"><b>IM клиент</b> - <a href="http://qutim.org">qutIM</a>. Кроссплатформенный, мультипротокольный, с необходимым набором фич. <a href="http://kde.org/applications/internet/kopete/">Kopete</a>, который использовался ранее, часто падал, работал как хотел и вообще не дружил с кодировкой. Раньше еще был какой то консольный, но сейчас его нет. Для таких случаев предпочитаю использовать клиент с планшета. Skype для скайпа, очевидно.</p></li>
<li><p><b>IM клиент</b> - <a href="http://qutim.org">qutIM</a>. Кроссплатформенный, мультипротокольный, с необходимым набором фич. <a href="http://kde.org/applications/internet/kopete/">Kopete</a>, который использовался ранее, часто падал, работал как хотел и вообще не дружил с кодировкой. Раньше еще был какой то консольный, но сейчас его нет. Для таких случаев предпочитаю использовать клиент с планшета. Skype для скайпа, очевидно.</p></li>
<li><p align="justify"><b>Почтовый клиент</b> - <a href="http://kde.org/applications/internet/kmail/">kmail</a>. Много фич, большая часть из которых мною используется, симпатично выглядит и удобный. Еще бы был DE-независимый, цены бы ему не было.</p></li>
<li><p><b>Почтовый клиент</b> - <a href="http://kde.org/applications/internet/kmail/">kmail</a>. Много фич, большая часть из которых мною используется, симпатично выглядит и удобный. Еще бы был DE-независимый, цены бы ему не было.</p></li>
<li><p align="justify"><b>IRC клиент</b> - <a href="http://konversation.kde.org/">konversation</a>. Самый обычный IRC-клиент. Хотя, если мне не изменяет память, qutIM тоже поддерживает IRC протокол, лично мне удобнее использовать отдельный клиент для этого.</p></li>
<li><p><b>IRC клиент</b> - <a href="http://konversation.kde.org/">konversation</a>. Самый обычный IRC-клиент. Хотя, если мне не изменяет память, qutIM тоже поддерживает IRC протокол, лично мне удобнее использовать отдельный клиент для этого.</p></li>
<li><p align="justify"><b>Torrent клиент</b> - <a href="http://www.transmissionbt.com/">transmission</a> с Qt5 интерфейсом (gtk тоже имеется). Для сервера он же, но без GUI.</p></li>
<li><p><b>Torrent клиент</b> - <a href="http://www.transmissionbt.com/">transmission</a> с Qt5 интерфейсом (gtk тоже имеется). Для сервера он же, но без GUI.</p></li>
<li><p align="justify"><b>Видео плеер</b> - <a href="http://mpv.io/">mpv</a>. Mplayer умер, а mplayer2 родился мертворожденным. Ах да, графические надстройки сверху ненужны.</p></li>
<li><p><b>Видео плеер</b> - <a href="http://mpv.io/">mpv</a>. Mplayer умер, а mplayer2 родился мертворожденным. Ах да, графические надстройки сверху ненужны.</p></li>
<li><p align="justify"><b>Аудио плеер</b> - <a href="http://qmmp.ylsoftware.com/">qmmp</a>. Хороший, годный плеер с закосом под winamp. Легким движением руки делаем ему человеческий интерфейс aka simpleui.</p></li>
<li><p><b>Аудио плеер</b> - <a href="http://qmmp.ylsoftware.com/">qmmp</a>. Хороший, годный плеер с закосом под winamp. Легким движением руки делаем ему человеческий интерфейс aka simpleui.</p></li>
<li><p align="justify"><b>Работа с аудио/видео</b> - <a href="http://kde-apps.org/content/show.php?content=29024">kdenlive</a> для работы с видео, <a href="http://kde-apps.org/content/show.php?content=29024">soundkonverter</a> для работы с аудио, <a href="https://wiki.gnome.org/Apps/EasyTAG">easytag</a> для работы с аудио тегами (gtk, но зато единственный, чья функциональность меня устроила). Ну и командная строка и небольшие скрипты на bash.</p></li>
<li><p><b>Работа с аудио/видео</b> - <a href="http://kde-apps.org/content/show.php?content=29024">kdenlive</a> для работы с видео, <a href="http://kde-apps.org/content/show.php?content=29024">soundkonverter</a> для работы с аудио, <a href="https://wiki.gnome.org/Apps/EasyTAG">easytag</a> для работы с аудио тегами (gtk, но зато единственный, чья функциональность меня устроила). Ну и командная строка и небольшие скрипты на bash.</p></li>
<li><p align="justify"><b>Офис</b> - <a href="http://wps-community.org/">Kingsoft Office</a> в качестве замены Microsoft Office; в общем то ничем не примечательный, разве что не так ущербно смотрится, как стандартные офисы, Qt-based и, говорят, с хорошей поддержкой стандартных форматов. Версия под линукс находится в состоянии альфы. <a href="http://kile.sourceforge.net/">Kile</a> в качестве фронтенда к LaTeX. <a href="http://kde.org/applications/graphics/okular/">Okular</a>, как просмотрщик всего. <a href="http://goldendict.org/">GoldenDict</a> в качестве словаря.</p></li>
<li><p><b>Офис</b> - <a href="http://wps-community.org/">Kingsoft Office</a> в качестве замены Microsoft Office; в общем то ничем не примечательный, разве что не так ущербно смотрится, как стандартные офисы, Qt-based и, говорят, с хорошей поддержкой стандартных форматов. Версия под линукс находится в состоянии альфы. <a href="http://kile.sourceforge.net/">Kile</a> в качестве фронтенда к LaTeX. <a href="http://kde.org/applications/graphics/okular/">Okular</a>, как просмотрщик всего. <a href="http://goldendict.org/">GoldenDict</a> в качестве словаря.</p></li>
<li><p align="justify"><b>Редакторы</b> - <a href="http://www.kde.org/applications/utilities/kwrite/">kwrite</a> в качестве легковесного редактора, <a href="http://www.kde.org/applications/utilities/kate/">kate</a> (с плагином <a href="http://zaufi.github.io/kate-cpp-helper-plugin.html">cpp-helper</a>) для более суровых вещей. Немного начал осваивать сейчас еще <a href="https://atom.io/">atom</a>. Ну и, конечно, vim для консоли.</p></li>
<li><p><b>Редакторы</b> - <a href="http://www.kde.org/applications/utilities/kwrite/">kwrite</a> в качестве легковесного редактора, <a href="http://www.kde.org/applications/utilities/kate/">kate</a> (с плагином <a href="http://zaufi.github.io/kate-cpp-helper-plugin.html">cpp-helper</a>) для более суровых вещей. Немного начал осваивать сейчас еще <a href="https://atom.io/">atom</a>. Ну и, конечно, vim для консоли.</p></li>
<li><p align="justify"><b>Научный софт</b>. Визуализаторы химические - <a href="http://www.ks.uiuc.edu/Research/vmd/">vmd</a>, <a href="http://www.cgl.ucsf.edu/chimera/">chimera</a> и <a href="http://pymol.org/">pymol</a>. Физический симулятор <a href="http://kde.org/applications/education/step/">step</a>. Калькулятор <a href="http://kde.org/applications/education/kalgebra/">kalgebra</a> и консольный <a href="http://ipython.org/">ipython</a>. Рисовалка графиков и анализ <a href="http://qtiplot.com/">qtiplot</a> (его форк scidavis, к сожалению, полумертв), только рисовалка - <a href="http://plasma-gate.weizmann.ac.il/Grace/">grace</a>. <a href="http://ruby.chemie.uni-freiburg.de/~martin/chemtool/chemtool.html">Chemtool</a> в качестве замены ChemDraw.</p></li>
<li><p><b>Научный софт</b>. Визуализаторы химические - <a href="http://www.ks.uiuc.edu/Research/vmd/">vmd</a>, <a href="http://www.cgl.ucsf.edu/chimera/">chimera</a> и <a href="http://pymol.org/">pymol</a>. Физический симулятор <a href="http://kde.org/applications/education/step/">step</a>. Калькулятор <a href="http://kde.org/applications/education/kalgebra/">kalgebra</a> и консольный <a href="http://ipython.org/">ipython</a>. Рисовалка графиков и анализ <a href="http://qtiplot.com/">qtiplot</a> (его форк scidavis, к сожалению, полумертв), только рисовалка - <a href="http://plasma-gate.weizmann.ac.il/Grace/">grace</a>. <a href="http://ruby.chemie.uni-freiburg.de/~martin/chemtool/chemtool.html">Chemtool</a> в качестве замены ChemDraw.</p></li>
<li><p align="justify"><b>Системное</b>. Файловый менеджер <a href="http://kde.org/applications/system/dolphin/">dolphin</a>, <a href="http://doublecmd.sourceforge.net/">doublecmd</a> как двухпанельный менеджер. Эмуляторы терминала - <a href="http://yakuake.kde.org/">yakuake</a> и <a href="http://software.schmorp.de/pkg/rxvt-unicode.html">urxvt</a> в качестве оконного. Графический интерфейс для архиваторов <a href="http://kde.org/applications/utilities/ark/">ark</a>.</p></li>
<li><p><b>Системное</b>. Файловый менеджер <a href="http://kde.org/applications/system/dolphin/">dolphin</a>, <a href="http://doublecmd.sourceforge.net/">doublecmd</a> как двухпанельный менеджер. Эмуляторы терминала - <a href="http://yakuake.kde.org/">yakuake</a> и <a href="http://software.schmorp.de/pkg/rxvt-unicode.html">urxvt</a> в качестве оконного. Графический интерфейс для архиваторов <a href="http://kde.org/applications/utilities/ark/">ark</a>.</p></li>
</ul>
<h2><a name="kde" class="anchor" href="#kde"><span class="octicon octicon-link"></span></a>Настройка KDE</h2>
<p align="justify">Нотариально заверенный скриншот:<br>
<p>Нотариально заверенный скриншот:<br>
<a href="/resources/screenshots/kde.png"><img src="/resources/preview/kde_prev.jpg"></a></p>
<p align="justify">В качестве стиля Qt используется QtCurve, настройки могут быть найдены <a href="https://github.com/arcan1s/dotfiles/tree/master/qtcurve">здесь</a>, оформление окон оттуда же. Курсор <a href="http://kde-look.org/content/show.php/Ecliz?content=110340">ecliz-small</a>. Тема плазмы <a href="http://kde-look.org/content/show.php/Volatile?content=128110">volatile</a>. Значки <a href="http://nitrux.in/">compass</a>. Шрифты на базе Liberation.</p>
<p>В качестве стиля Qt используется QtCurve, настройки могут быть найдены <a href="https://github.com/arcan1s/dotfiles/tree/master/qtcurve">здесь</a>, оформление окон оттуда же. Курсор <a href="http://kde-look.org/content/show.php/Ecliz?content=110340">ecliz-small</a>. Тема плазмы <a href="http://kde-look.org/content/show.php/Volatile?content=128110">volatile</a>. Значки <a href="http://nitrux.in/">compass</a>. Шрифты на базе Liberation.</p>
<p align="justify"><b>Используемые виджеты</b> (слева направо, сверху вниз): <a href="https://launchpad.net/plasma-widget-menubar">menubar</a>, <a href="http://userbase.kde.org/Homerun">homerun</a> с прозрачной иконкой, <a href="http://kde-apps.org/content/show.php?content=144808">icontask</a>, <a href="/ru/projects/netctl-gui/">netctl</a>, стандартный трей от KDE, <a href="http://agateau.com/projects/colibri/">colibri</a> в качестве уведомлений, <a href="/ru/projects/pytextmonitor">pytextmonitor</a>.</p>
<p><b>Используемые виджеты</b> (слева направо, сверху вниз): <a href="https://launchpad.net/plasma-widget-menubar">menubar</a>, <a href="http://userbase.kde.org/Homerun">homerun</a> с прозрачной иконкой, <a href="http://kde-apps.org/content/show.php?content=144808">icontask</a>, <a href="/ru/projects/netctl-gui/">netctl</a>, стандартный трей от KDE, <a href="http://agateau.com/projects/colibri/">colibri</a> в качестве уведомлений, <a href="/ru/projects/pytextmonitor">pytextmonitor</a>.</p>
<p align="justify">В качестве бонусного материала - яркие цвета в консоли (для <a href="https://github.com/arcan1s/dotfiles/blob/master/themes/yakuake/My%20color.colorscheme">konsole</a>):<br>
<p>В качестве бонусного материала - яркие цвета в консоли (для <a href="https://github.com/arcan1s/dotfiles/blob/master/themes/yakuake/My%20color.colorscheme">konsole</a>):<br>
<a href="/resources/screenshots/zshrc_demo.png"><img src="/resources/preview/zshrc_demo_prev.jpg"></a></p>
<h2><a name="firefox" class="anchor" href="#firefox"><span class="octicon octicon-link"></span></a>Настройка Firefox</h2>
<p align="justify">В самих настройках ничего интересного нет, я просто напишу список аддонов. Дико радует, что для того, чтобы интерфейс был минималистичным (и удобным), нужно поставить кучу плагинов.</p>
<p>В самих настройках ничего интересного нет, я просто напишу список аддонов. Дико радует, что для того, чтобы интерфейс был минималистичным (и удобным), нужно поставить кучу плагинов.</p>
<ul>
<li><p align="justify"><b>Adblock plus</b> - куда же без него.</p></li>
<li><p align="justify"><b>Add to search bar</b> - для кастомных поисков.</p></li>
<li><p align="justify"><b>Auto Refresh</b> - автоматическое обновление страниц.</p></li>
<li><p align="justify"><b>Clone tab</b> - добавляет функцию "Дублировать вкладку".</p></li>
<li><p align="justify"><b>Close tab by double click</b> - понятно, короче.</p></li>
<li><p align="justify"><b>New scrollbars</b> используется для кастомизации скроллбаров, потому что оригинальные смотрятся ущербно в Qt окружении.</p></li>
<li><p align="justify"><b>NoScript</b> используется, например, для I2P и Tor.</p></li>
<li><p align="justify"><b>PrivateTab</b> - добавляет приватную вкладку (а не окно).</p></li>
<li><p align="justify"><b>Proxy Selector</b> добавляет возможность использовать несколько прокси-серверов.</p></li>
<li><p align="justify"><b>QuickJava</b> используется примерно с той же целью, что и NoScript.</p></li>
<li><p align="justify"><b>RSS иконка в строке адреса</b> - очевидно.</p></li>
<li><p align="justify"><b>Словари для проверки орфографии</b> (eng/rus).</p></li>
<li><p align="justify"><b>Space Next</b> - на нажатие на пробел внизу страницы реагирует, как на нажатие кнопки "Далее".</p></li>
<li><p align="justify"><b>Speed Dial</b> - простая экспресс-панель.</p></li>
<li><p align="justify"><b>Status-4-Evar</b> - нормальная строка состояния.</p></li>
<li><p align="justify"><b>tab delabelifier</b> - сворачивает неиспользуемые вкладки.</p></li>
<li><p align="justify"><b>Tab Scope + Tab Scope Tweaker</b> - всплывающая подсказка у вкладок.</p></li>
<li><p align="justify"><b>accessKey</b> - пока не работает. Вообще служит для удобной навигации (opera-like) с клавиатуры.</p></li>
<li><p align="justify"><b>FXOpera</b> - нормальный минималистичный вид.</p></li>
<li><p><b>Adblock plus</b> - куда же без него.</p></li>
<li><p><b>Add to search bar</b> - для кастомных поисков.</p></li>
<li><p><b>Auto Refresh</b> - автоматическое обновление страниц.</p></li>
<li><p><b>Clone tab</b> - добавляет функцию "Дублировать вкладку".</p></li>
<li><p><b>Close tab by double click</b> - понятно, короче.</p></li>
<li><p><b>New scrollbars</b> используется для кастомизации скроллбаров, потому что оригинальные смотрятся ущербно в Qt окружении.</p></li>
<li><p><b>NoScript</b> используется, например, для I2P и Tor.</p></li>
<li><p><b>PrivateTab</b> - добавляет приватную вкладку (а не окно).</p></li>
<li><p><b>Proxy Selector</b> добавляет возможность использовать несколько прокси-серверов.</p></li>
<li><p><b>QuickJava</b> используется примерно с той же целью, что и NoScript.</p></li>
<li><p><b>RSS иконка в строке адреса</b> - очевидно.</p></li>
<li><p><b>Словари для проверки орфографии</b> (eng/rus).</p></li>
<li><p><b>Space Next</b> - на нажатие на пробел внизу страницы реагирует, как на нажатие кнопки "Далее".</p></li>
<li><p><b>Speed Dial</b> - простая экспресс-панель.</p></li>
<li><p><b>Status-4-Evar</b> - нормальная строка состояния.</p></li>
<li><p><b>tab delabelifier</b> - сворачивает неиспользуемые вкладки.</p></li>
<li><p><b>Tab Scope + Tab Scope Tweaker</b> - всплывающая подсказка у вкладок.</p></li>
<li><p><b>accessKey</b> - пока не работает. Вообще служит для удобной навигации (opera-like) с клавиатуры.</p></li>
<li><p><b>FXOpera</b> - нормальный минималистичный вид.</p></li>
</ul>

View File

@ -8,20 +8,20 @@ short: disabling-baloo
description: Пока ононимные онолитеги ЛОР'а ноют на тему baloo, я предпочел потратить 15 минут на то, чтобы отвязать приложения от этого чуда человеческой мысли.
---
<h2><a name="disclaimer" class="anchor" href="#disclaimer"><span class="octicon octicon-link"></span></a>Дисклеймер</h2>
<p align="justify">Сам этим я не пользуюсь, поскольку предпочитаю менее деструктивные методы. Однако, судя по всему, все работает без проблем, поскольку жалоб нет. Так как патч делался действительно за несколько минут, то он просто выкорчевывает все вызовы baloo из исходников (возможно, когда-нибудь я сделаю нормальный патч).</p>
<p>Сам этим я не пользуюсь, поскольку предпочитаю менее деструктивные методы. Однако, судя по всему, все работает без проблем, поскольку жалоб нет. Так как патч делался действительно за несколько минут, то он просто выкорчевывает все вызовы baloo из исходников (возможно, когда-нибудь я сделаю нормальный патч).</p>
<p align="justify">С другой стороны, я настоятельно рекомендую людям, которым по каким-либо причинам baloo не нужен, отключить его из меню настроек (добавили пункт в 4.13.1), либо воспользоваться этой <a href="http://blog.andreascarpino.it/disabling-baloo-the-arch-way/">статьей</a>.</p>
<p>С другой стороны, я настоятельно рекомендую людям, которым по каким-либо причинам baloo не нужен, отключить его из меню настроек (добавили пункт в 4.13.1), либо воспользоваться этой <a href="http://blog.andreascarpino.it/disabling-baloo-the-arch-way/">статьей</a>.</p>
<h2><a name="intro" class="anchor" href="#intro"><span class="octicon octicon-link"></span></a>Введение</h2>
<p align="justify">В Archlinux, на текущий момент (2014-05-18) от baloo, помимо <b>baloo-widgets</b>, зависит <b>gwenview</b> и <b>kdepim</b>. В версии 4.13.0, почему то, <b>kactivities</b> тоже зависел от baloo, однако, эта зависимость не требовалась явно (таким образом, достаточно было просто пересобрать его, удалив baloo из списка зависимостей).</p>
<p>В Archlinux, на текущий момент (2014-05-18) от baloo, помимо <b>baloo-widgets</b>, зависит <b>gwenview</b> и <b>kdepim</b>. В версии 4.13.0, почему то, <b>kactivities</b> тоже зависел от baloo, однако, эта зависимость не требовалась явно (таким образом, достаточно было просто пересобрать его, удалив baloo из списка зависимостей).</p>
<h2><a name="gwenview" class="anchor" href="#gwenview"><span class="octicon octicon-link"></span></a>gwenview</h2>
<p align="justify">Тут все довольно просто. Разработчики сами позаботились за нас о возможных пожеланиях простых пользователей и добавили специальный флаг:</p>
<p>Тут все довольно просто. Разработчики сами позаботились за нас о возможных пожеланиях простых пользователей и добавили специальный флаг:</p>
{% highlight cmake %}
//Semantic info backend for Gwenview (Baloo/Fake/None)
GWENVIEW_SEMANTICINFO_BACKEND:STRING=Baloo
{% endhighlight %}
<p align="justify">Таким образом, в сценарий сборки к cmake добавляем нужный флаг:</p>
<p>Таким образом, в сценарий сборки к cmake добавляем нужный флаг:</p>
{% highlight bash %}
cmake ../gwenview-${pkgver} \
-DCMAKE_BUILD_TYPE=Release \
@ -31,7 +31,7 @@ cmake ../gwenview-${pkgver} \
{% endhighlight %}
<h2><a name="kdepim" class="anchor" href="#kdepim"><span class="octicon octicon-link"></span></a>kdepim</h2>
<p align="justify">Так как делалось все на скорую руку, то я предпочел пробежаться по исходникам с помощью grep и найти все упоминания baloo. Нужные строки (а это указания на baloo в файлах CMakeLists.txt, вызовы функций из его библиотек, объявления заголовочных файлов) просто закомментировал (в исходном коде местами пришлось добавить фейковые вызовы). Патч полностью здесь приводить не буду (он, к тому же, немного большой), а дам <a href="https://gist.github.com/arcan1s/b698bb586faef627b3bb">ссылку на него</a> (4.13.2). Далее просто требуется применить этот патч к исходникам и пересобрать kdepim.</p>
<p>Так как делалось все на скорую руку, то я предпочел пробежаться по исходникам с помощью grep и найти все упоминания baloo. Нужные строки (а это указания на baloo в файлах CMakeLists.txt, вызовы функций из его библиотек, объявления заголовочных файлов) просто закомментировал (в исходном коде местами пришлось добавить фейковые вызовы). Патч полностью здесь приводить не буду (он, к тому же, немного большой), а дам <a href="https://gist.github.com/arcan1s/b698bb586faef627b3bb">ссылку на него</a> (4.13.2). Далее просто требуется применить этот патч к исходникам и пересобрать kdepim.</p>
<h2><a name="packages" class="anchor" href="#packages"><span class="octicon octicon-link"></span></a>Пакеты</h2>
<p align="justify">Все пакеты для Archlinux для обеих архитектур доступны <a href="https://wiki.archlinux.org/index.php/Unofficial_user_repositories#arcanisrepo">в моем репозитории</a>.</p>
<p>Все пакеты для Archlinux для обеих архитектур доступны <a href="https://wiki.archlinux.org/index.php/Unofficial_user_repositories#arcanisrepo">в моем репозитории</a>.</p>

View File

@ -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