Instalace balíčků Arch Linux z repozitáře AUR

Linux package buildRepozitář AUR (Arch User Repository) obsahuje softwarové balíčky operačního systému Arch Linux, které jsou dodávány komunitou uživatelů. Tyto balíčky nejsou zpravidla součástí oficiálních repozitářů Core, Extra ani Community a mohou obsahovat nestabilní a částečně nefunkční kód. Pokud ale takový software potřebujeme, jedná se o nejsnazší cestu, jak jej do systému nainstalovat.
Velká většina balíčků se bude překládat ze zdrojových kódů. Musíme brát v úvahu, že budeme muset nainstalovat nástroje pro vývoj a překlad těchto kódů. Tyto nástroje zaberou na pevném disku cca 300 MB. Pro ulehčení práce s repozitářem AUR nainstalujeme balíček Yaourt a jeho závislosti.

Vytvoření uživatele

Z důvodu bezpečnosti a oddělení procesu překladu a vytváření nových balíčků z AUR nemůžeme pracovat pod privilegovaným uživatelem root. Přihlásíme se jiným lokálním uživatelským kontem nebo vytvoříme nové. Tím bude v našem případě builder:

[root@localhost ~]# useradd --create-home --groups wheel builder

Tento uživatel bude součástí skupiny wheel, která slouží pro eskalaci oprávnění:

[root@localhost ~]# id -a builder
uid=1000(builder) gid=1000(builder) groups=1000(builder),10(wheel)

Nastavíme heslo pro nový účet:

[root@localhost ~]# passwd builder
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Instalace vývojářských nástrojů

Nyní se dostáváme k instalaci základních vývojářských nástrojů:

[root@localhost ~]# pacman -S --needed base-devel
:: There are 25 members in group base-devel:
:: Repository core
   1) autoconf  2) automake  3) binutils  4) bison  5) fakeroot  6) file  7) findutils  8) flex  9) gawk  10) gcc
   11) gettext  12) grep  13) groff  14) gzip  15) libtool  16) m4  17) make  18) pacman  19) patch  20) pkg-config
   21) sed  22) sudo  23) texinfo  24) util-linux  25) which

Enter a selection (default=all):
…
…

Po instalaci povolíme skupině wheel možnost eskalace oprávnění. Tuto změnu provedeme v souboru /etc/sudoers, změnou sekce ## Uncomment to allow members of group wheel to execute any command, odkomentováním příslušného řádku:

%wheel ALL=(ALL) NOPASSWD: ALL

V tomto případě nebude pro eskalaci oprávnění potřeba zadávat heslo uživatele.

Přihlásíme/přepneme se do prostředí uživatele builder:

[root@localhost ~]# su - builder
[builder@localhost ~]$

V domovském adresáři vytvoříme adresář work a změníme svůj pracovní adresář:

[builder@localhost ~]$ mkdir ~/work
[builder@localhost ~]$ cd ~/work
[builder@localhost work]$

Instalace yaourt

Instalace závislostí pro yaourt:

[builder@localhost work]$ curl -o PKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=package-query"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   730  100   730    0     0   2952      0 --:--:-- --:--:-- --:--:--  2955

[builder@localhost work]$ makepkg -si
==> Making package: package-query 1.6.2-1 (Fri Jul 31 16:24:15 CEST 2015)
==> Checking runtime dependencies...
==> Installing missing dependencies...
resolving dependencies...
looking for conflicting packages...

Packages (1) yajl-2.1.0-1
…
…

Instalace yaourt:

[builder@localhost work]$ curl -o PKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=yaourt"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   928  100   928    0     0   6030      0 --:--:-- --:--:-- --:--:--  6065

[builder@localhost work]$ makepkg -si
==> Making package: yaourt 1.6-1 (Fri Jul 31 16:25:26 CEST 2015)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Downloading yaourt-1.6.tar.gz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  113k  100  113k    0     0   292k      0 --:--:-- --:--:-- --:--:--  292k
==> Validating source files with md5sums...
    yaourt-1.6.tar.gz ... Passed
==> Extracting sources...
  -> Extracting yaourt-1.6.tar.gz with bsdtar
==> Removing existing $pkgdir/ directory...
==> Starting build()...
        GEN yaourt.sh
…
…

Test yaourt

Pokud proběhlo sestavení a instalace bez problému, můžeme vyzkoušet, zda máme operační systém aktuální:

[builder@localhost work]$ yaourt -Syua --devel
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community                  2.7 MiB   586K/s 00:05 [#######################] 100%
 Foreign packages: \ 3 / 3

==> Software upgrade (new version) :
core/dbus               1.8.18-1 -> 1.8.20-1
core/libdbus            1.8.18-1 -> 1.8.20-1
core/libsystemd         222-1    -> 223-1
core/systemd            222-1    -> 223-1
core/systemd-sysvcompat 222-1    -> 223-1
extra/syslog-ng         3.6.2-1  -> 3.6.3-1

==> Continue upgrade ? [Y/n]
==> [V]iew package detail   [M]anually select packages
==> --------------------------------------------------
==> ^C

Příkazem yaourt -Syua můžeme v budoucnu kontrolovat a instalovat softwarové balíčky ze všech repozitářů, včetně AUR. Standardní nástroj pacman nebere repozitář AUR v úvahu.

Hint

Proces kompilace balíčků probíhá v adresáři, který je definován proměnnou prostředí TMPDIR. Standardně je to v adresáři /tmp, který bývá umístěn v operační paměti a může dosahovat až 50 % její velikosti (dle nastavení systému). V některých případech nám tato velikost nemusí vyhovovat, případně při kompilaci dochází k nebezpečnému vyčerpání operační paměti. Pokud se dostaneme do takové situace, změníme proměnnou TMPDIR, nebo upravíme soubor /etc/yaourtrc, a tento adresář nastavíme na adresář nacházející se na našem pevném disku.

Používání yaourt

Nepřeberné možnosti aplikace yaourt jsou popsány na webu projektu.

Instalace balíčku:
Linux package build - yaourt install

Statistika nainstalovaných balíčků:
Linux package build - yaourt stats

Update systému Arch Linux s předefinovanou proměnnou prostředí TMPDIR:
Linux package build - yaourt update

Napsat komentář