Arch-Like - nietypowy blog, nietypowe forum.

Poradniki => Software => Wątek zaczęty przez: pavbaranov w Marzec 25, 2015, 05:08:22

Tytuł: Yaourt, czyli ułatwiamy sobie życie na złość deweloperom Archa
Wiadomość wysłana przez: pavbaranov w Marzec 25, 2015, 05:08:22
Mimo tego, że na stronie wiki Archa, jak zresztą na jego oficjalnym forum, yaourt jest odsądzany od czci i wiary, to jest to jednak bardzo przydatne narzędzie. Moim zdaniem, nawet w zakresie, w jakim rozszerza ono możliwości pacmana jedynie wobec obsługi repozytoriów z wyłączeniem AUR, jest ono tym, czym pacman winien być, gdyby jego twórca nieco bardziej się otworzył na potrzeby codziennych użytkowników Archa (i pochodnych dystrybucji). Yaourt nie tylko bowiem umożliwia łatwy dostęp do AUR, ale również powoduje, że obsługa repozytoriów staje się wygodniejsza i łatwiejsza.
Przede wszystkim zatem należy zapamiętać: yaourt ma wszystkie możliwości zarządzania pakietami, które oferuje pacman, a oprócz tego oferuje jeszcze inne, w tym obsługę AUR. Nie tylko, że posiada także dokładnie te funkcje, które ma pacman, to jeszcze jego składnia jest dokładnie taka sama.
Podstawowa różnica w posługiwaniu się obu narzędziami jest taka, że yaourt zawsze wywołujemy z poziomu użytkownika, zaś pacman - przynajmniej w niektórym zakresie musi być uruchamiany z poziomu roota.
Jeśli zatem chcemy dokonać aktualizacji systemu, równie dobrze możemy wykonać:
# pacman -Syujak i:
yaourt -SyuTak składnia, jak i efekt taki sam.
Możemy jednak chcieć jeszcze dokonać aktualizacji paczek, jakie znajdują się w AUR. Wówczas wykonamy:
yaourt -Syuaco zaktualizuje nam bazy pacmana, w następnej kolejności dokona aktualizacji systemu z repozytoriów, a na końcu umożliwi zaktualizowanie paczek zainstalowanych z AUR.
Tu jednak jedna uwaga. Jeśli z AUR mamy zainstalowane paczki z GIT, SVN itp., to zgodnie z przyjętymi w Archu zasadami, najczęściej będą one nosić numer wersji paczki z chwili jej utworzenia. Z uwagi na to, że często w PKGBUILD jest również przewidziana sekcja pkgver, to paczka zbudowana lokalnie, będzie nosić numer odpowiadający (m.in.) commitowi, który był ostatnim w chwili jej tworzenia. Może się zatem zdarzyć, że w AUR będzie widnieć paczka o numerze wersji niższym od tego, który zainstalowany jest w naszym systemie. I może tak być przez długi czas, albo... wiecznie, a przynajmniej do czasu, gdy z jakichś powodów przepis w AUR nie będzie musiał zostać zmieniony. Po prostu programy budowane z GIT aktualizujemy co jakiś czas, wówczas, gdy stwierdzimy przeglądając źródła, że warto jest to uczynić.

Oczywiście należy pamiętać, że do "instalacji" czegokolwiek z AUR konieczna jest instalacja grupy base-devel. Nie ma jej w zależnościach żadnego praktycznie przepisu, wobec powyższego nie zostanie ona zainstalowana automatycznie.

Pozostałe funkcje yaourta są zbliżone do pacmana. Jedynie wynik działania będzie bardziej kolorowy. Stąd też, możemy dokonać operacji na pakietach używając przełącznika -S, odpytać bazę lokalną za pomocą przełącznika -Q itd. Nic nowego. Jeśli operacja ma dotyczyć AUR, wówczas dodajemy operator "a". Np.:
yaourt -Sa nazwa_programuspowoduje instalację tego programu z AUR (nawet jeśli jest wersja w repozytoriach).
yaourt -Suadokona instalacji wszelkich paczek, które są możliwe do aktualizacji na podstawie informacji znajdujących się w bazie lokalnej. Itd. itp.

Ciekawym rozszerzeniem yaourta w stosunku do możliwości pacmana jest przeszukanie wszelkich programów pod kątem określonego ciągu. Jeśli zatem zadamy pytanie:
yaourt nazwato w wyniku otrzymamy ponumerowaną listę wszelkich programów, które bądź to w nazwie, bądź to w opisie zawierają ciąg "nazwa". Instalacji wówczas dokonamy wprowadzając jedną, bądź więcej cyfr, które zostały przyporządkowane danej paczce.
Przykład
Chcemy zainstalować sobie np. SMPlayer. Nie wiemy jaką nazwę nosi paczka, nie wiemy czy istnieje ona w repozytoriach. Wydajemy zatem polecenie:
yaourt smplayerW odpowiedzi uzyskamy: yaourt smplayer
1 extra/smplayer 14.9.0.6690-1 [installed]
    A complete front-end for MPlayer
2 extra/smplayer-themes 1:14.9.0-1 [installed]
    Themes for SMPlayer
3 community/smplayer-skins 1:14.9.0-1 [installed]
    Skins for SMPlayer
4 aurpb/umplayer-svn 181-4
    Multimedia player based on SMPlayer
5 aur/deepin-media-player 1.1+20140703161214-1 (20)
    New multimedia player with brilliant and tweakful UI. PyGtk and
    Deepin-ui Mplayer2 front-end, with features likes smplayer, but has
    a brilliant and tweakful UI.
6 aur/rosa-media-player 1.6.9-2 [installed] (57)
    The new multimedia player(based on SMPlayer) with clean and elegant
    UI.
7 aur/rosa-media-player-develop-git 1.6.15.g72c92f1-1 (2)
    The new multimedia player(based on SMPlayer) with clean and elegant
    UI.
8 aur/rosa-media-player-git 1.6.25.g6972688-1 (Out of Date) (3)
    The new multimedia player(based on SMPlayer) with clean and elegant
    UI.
9 aur/rosa-media-player-plugin 1.0-2 (51)
    The new multimedia player(based on SMPlayer) with clean and elegant
    UI (mozilla plugin only).
10 aur/smplayer-ekimov-git 20110305-1 (2)
    Clone of SMPlayer for bug fixing
11 aur/smplayer-qt4 14.9.0.6690-1 (8)
    Complete front-end for MPlayer
12 aur/smplayer-qt5-svn 6556-1 (7)
    A complete front-end for media players
13 aur/smplayer-skins-svn r6664-1 (0)
    Skins for SMPlayer
14 aur/smplayer-svn 6004-1 (124)
    A complete front-end for MPlayer
15 aur/smplayer-theme-faenza 2-1 (25)
    Normal, dark and silver faenza theme for smplayer.
16 aur/smplayer-themes-svn r6664-1 (19)
    Themes for SMPlayer
17 aur/smplayer-tray-options 14.9.0-1 (1)
    A complete front-end for MPlayer
18 aur/smplayer2 0.8.0-2 (25)
    A fork of SMPlayer, targeted at mplayer2 users
19 aur/smplayer2-git v0.8.0.6.g70d9ba3-1 (72)
    A fork of SMPlayer, targeted at mplayer2 users
20 aur/umplayer-svn 181-4 (44)
    Multimedia player based on SMPlayer
==> Enter n° of packages to be installed (ex: 1 2 3 or 1-3)
==> -------------------------------------------------------
Jak widzimy otrzymaliśmy ponumerowaną listę wszystkich paczek, które yaourt znalazł po ciągu "smplayer". Paczki pochodzą zarówno z repozytorów, jak i z AUR. Widać to po nazwie paczki, albowiem jest ona w następującym schemacie:
nazwa_repozytorium/nazwa_paczki
jeśli nazwa_repozytorium to aur, to paczka jest budowana z AUR, pozostałe wpisy w tym miejscu to repozytoria, które udostępniliśmy w systemie.
Jak widzimy, yaourt zwrócił nie tylko informacje o paczkach, które nazywają się smplayer, ale także o paczkach, które zawierają to słowo w nazwie, jak również o paczkach, które w opisie odnoszą się do tej nazwy.
Teraz yaourt czeka na naszą reakcję. Odszukujemy z listy interesującą nas paczkę i wpisujemy np: 1-3 15 dla zainstalowania smplayera, zbioru tematów i skórek dla niego oraz dodatkowo dla zbudowania z AUR tematu faenza.
Jeśli lista nas nie satysfakcjonuje i nie chcemy niczego instalować - wciskamy enter.

Ciekawą funkcją yaourta, pomocną do budowania paczek lokalnie, jest możliwość ściągnięcia przepisów na ich budowę i to zarówno z AUR, jak i przepisów o oficjalnych paczkach. Trochę to zastępuje ABS i ułatwia wg mnie posługiwanie się nim. Chcąc zatem ściągnąć taki przepis, wydajemy polecenie:
yaourt -G nazwa_paczkico spowoduje utworzenie katalogu nazwa_paczki, który zawierał będzie wszystkie pliki, niezbędne do samodzielnej jej kompilacji.

Yaourt potrafi też dwie rzeczy, których nie potrafi zrobić "tradycyjne" budowanie pakietów z użyciem makepkg. Otóż zarówno makepkg, jak i yaourt potrafią dociągnąć zależności niezbędne dla budowy i/lub funkcjonowania zbudowanego programu. O ile jednakże makepkg potrafi znaleźć i zainstalować zależności wyłącznie z repozytoriów, to yaourt uczyni to zarówno z repozytoriów, jak i z AUR jeśli jej nie znajdzie w repozytoriach.
Druga funkcja, to budowanie grupy paczek. Zdarza się, że w AUR (czy w ABS) istnieją tzw. meta paczki. Są to paczki, które same w sobie nie dostarczają żadnych programów, a jedynie listę paczek, jakie pacmana winien zainstalować. Niekiedy zdarza się, że taka lista paczek winna być zbudowana w określonej kolejności (np. kf5-git), albowiem któryś z programów zależy od programu znajdującego się na tej liście, który winien zostać zbudowany uprzednio. Budowa przez yaourt spowoduje, że programy te będą budowane w prawidłowej kolejności. W przypadku posługiwania się makepkg sami musimy zadbać, by dokonać ich budowy i instalacji w prawidłowej kolejności, albo narazimy się na nieudaną budowę paczek.

Pamiętajcie o jednym, że yaourt buduje swe paczki w tempfs, gdzie przestrzeń może być ograniczona, co może spowodować brak możliwości zbudowania jakiejś dużej aplikacji (bądź takiej, której źródła są duże). Typowym przykładem kernel, firefox, czy takie programy jak np. libreoffice. Warto wcześniej zadbać o stosowne miejsce, wskazując je w pliku /etc/yaourtrc wpisując je w:
TMPDIR=gdzie po znaku "=" wskazujemy miejsce, gdzie chcemy by pakiety były budowane i o którym wiemy, że ma dość sporą przestrzeń.

"Sterowanie" ustawieniami yaourta odbywa się właśnie przez plik /etc/yaourtrc. Ustawienia tam istniejące - z wyjątkiem owego TMPDIR - co do zasady są odpowiadające w większości przypadkach. Sugeruję zatem nie ruszać, a jeśli zajdzie taka potrzeba, to pytać w oddzielnym wątku.

Cóż, skoro już możecie sobie ocenić czy i dlaczego chcecie posługiwać się yaourtem, to informacja jak go zainstalować. W Manjaro dostępny jest w repozytoriach. W Archu - niestety nie. Tutaj zatem możemy zainstalować go albo budując ze źródeł, albo używając któregoś repozytorium, w którym się on znajduje, najlepiej "źródłowego", czyli repozytorium francuskiej społeczności Archa, która narzędzie to stworzyła.
Instalacja ze źródeł, to pobranie dwu przepisów: package-query i samego yaourt:
curl -O https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz
tar zxvf package-query.tar.gz
cd package-query
makepkg -sirc
cd ..
curl -O https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz
tar zxvf yaourt.tar.gz
cd yaourt
makepkg -sirc
cd ..
Instalację z repozytorium archlinuxfr możemy dokonać na 2 sposoby:
- instalacja jedynie yaourta (i package-query) poprzez pacman -U, adres repozytorium to: http://repo.archlinux.fr/ (http://repo.archlinux.fr/), gdzie sam yaourt znajduje się w katalogu /any, zaś package-query w katalogu właściwym dla architektury naszego systemu. Paczki musimy zainstalować albo łącznie, albo wpierw package-query.
- dodanie repozytorium i instalacja przez pacmana; ta opcja ma tę zaletę, że yaourt będzie zawsze dostarczany w najnowszej wersji:
Dokonujemy zatem edycji /etc/pacman.conf i dodajemy:
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
oraz instalujemy samego yaourta:
# pacman -Sy yaourt
Aha - używanie yaourta powoduje ekskomunikę przez Twórców Archa oraz Niektóre Osoby, które Uważają, że są w Archu Najważniejsze :)

Więcej o yaourt:
https://archlinux.fr/yaourt-en (https://archlinux.fr/yaourt-en)
https://wiki.archlinux.org/index.php/Yaourt (https://wiki.archlinux.org/index.php/Yaourt)