Pamac - aktualizacja pakietów z AUR z listy ignorowanych

Mam w Pamac, na liście ignorowanych, pakiet z AUR, który co jakiś czas chciałbym aktualizować ręcznie.
Niestety, nie można tego zrobić z poziomu Pamac, gdyż w zakładce “Szczegóły”, dla tego ignorowanego pakietu, nie ma zwyczajowego przycisku “Buduj” “Przeinstaluj”.
Komenda pamac build pakiet_z_AUR też tu nie działa i generuje komunikat Przygotowanie operacji nie powiodło się.

Czy i ew. jak mogę ręcznie zaktualizować pakiet z AUR, który jest na liście ignorowanych?

Nie ma przeinstaluj, bo nie instalujesz, tylko budujesz - jest przycisk Buduj. Próbowałeś? Może zareaguje inaczej niż w terminalu.
Chciałem również zaproponować $ pamac reinstall nazwa_pakietu_aur, ale wygląda na to, że wtedy chce przeinstalować aktualny pakiet, szukając go w cache’u (/var/cache/pacman/pkg), więc odpada.

Jeżeli nie zadziała, to wyrzuć pakiet z ignorowanych i spróbuj wtedy, aby sprawdzić, czy w ogóle buduje się.

OK. Dzięki za zwrócenie uwagi. Zmieniłem na poprawną nazwę przycisku: “Buduj”.
Problem jednak polega na tym, że gdy pakiet z AUR jest na liście ignorowanych, to w Pamac nie ma w ogóle żadnego przycisku (, w miejscu w którym dla pozostałych pakietów z AUR, znajduje się przycisk “Buduj”).

Wyrzucenie pakietu z ignorowanych oczywiście rozwiązałoby problem, bo wtedy po prostu można zrobić aktualizację. Jednak chciałbym uniknąć trochę czasochłonnego procesu usuwania a potem ponownego dodawania pakietu do listy ignorowanych.

W takim razie działa jak trzeba: skoro wprowadziłem jakąś pozycję na listę ignorowanych, to jest ona ignorowana, zawsze i wszędzie. To ma sens.

Jeżeli konsekwencja jest 100%, to przychodzi mi jedno rozwiązanie do głowy:

  • czyścisz listę ignorowanych;
  • tworzysz skrypt:
#!/bin/sh
pamac update --ignore <pakiet_1>,<pakiet_2>,<pakiet_3>
  • uzupełniasz go, potencjalnie, o inne parametry:
$ pamac update --help
Zaktualizuj system
pamac upgrade,update [opcje]
opcje:
  -a, --aur             : aktualizuj również pakiety zainstalowane z AUR
  --builddir <katalog>  : katalog budowania (użyj --aur), jeśli nie podano katalogu, użyty zostanie katalog określony w pamac.conf
  --force-refresh       : wymuś odświeżenie baz danych
  --enable-downgrade    : możliwe obniżenie wersji pakietu
  --ignore <pakiet(ów)> : ignoruj aktualizację pakietu, można określić wiele pakietów, oddzielając je przecinkiem
  --overwrite <glob>    : zastąp pliki będące w konflikcie, można określić wiele wzorców, oddzielając je przecinkiem
  --no-confirm          : bypass any and all confirmation messages

Co zyskujesz:

  • możesz ręcznie aktualizować, w dowolnym czasie, z dowolnego miejsca, dowolne pakiety (formalna lista ignorowanych jest pusta);
  • aktualizacja systemu przebiega z pominięciem pakietów ignorowanych, o których nie musisz pamiętać, bo masz w skrypcie (modyfikujesz go, jeżeli lista ulega zmianie).

Nowy wpis, ponieważ w międzyczasie nastąpiła wymiana informacji, więc postanowiłem, to zaznaczyć.

@majo napisał:
@azja […] Koncepcja ze skryptem miałaby sens, gdyby się nie miało ustawionego w Pamac automatycznego sprawdzania aktualizacji co X godzin (a ja tak mam).

A ja odpowiadam:
Automatyczne sprawdzanie aktualizacji nie przeszkadza w użyciu rozwiązania, które zaproponowałem. To tylko automatyczne sprawdzenie, a nie automatyczna instalacja.
Zdaję sobie sprawę, że mój patent może być niesatysfakcjonujący (z różnych powodów), ale to jedyna rzecz, jaka przychodzi mi w tej chwili do głowy.

@azja
Może czegoś nie rozumiem…
Jeśli nie dopiszemy tego pakietu do listy pakietów ignorowanych, to ikonka powiadomień w Pamac, będzie prawie non stop sygnalizować (na czerwono), że jest coś do zaktualizowania, tj. co najmniej nasz pakiet z AUR, którego nie chcemy aktualizować.
Więc przy każdej aktualizacji, musimy pamiętać, aby sprawdzić, czy ten pakiet jest akurat czekający na aktualizację, a gdy jest, to go odhaczyć z listy aktualnie wyznaczonej przez Pamac do aktualizacji.
To trochę skomplikowane - a chcę sobie uprościć życie :slight_smile:

Właśnie przyszło mi do głowy następujące rozwiązanie (choć też wymaga trochę pracy).
Pakiet jest dopisany do listy pakietów ignorowanych. Gdy chcemy ręcznie go zaktualizować, to:

  • roboczo edytujemy plik /etc/pacman.conf dodając znak # w linii: IgnorePkg =
  • wykonujemy aktualizację w Pamac (zaktualizuje się wszystko)
  • przywracamy pierwotny stan w /etc/pacman.conf (usuwając znak #)

A może ktoś ma jeszcze sprytniejszy/łatwiejszy pomysł?

No, fakt - nie pomyślałem o tym, ale:

  • jeżeli jest, to pakiet z repo systemowego, to rutynowe i długotrwałe jego ignorowanie nie wchodzi w grę. Wiadomo dlaczego. Jeżeli jest, to chwilowy wyjątek (do przyjęcia), to i tak, moim zdaniem, należy go obsłużyć ręcznie;
  • jeżeli jest, to pakiet z AUR, to aktualizacje będą nieczęste, a sam pakiet będzie rzucał się w oczy, więc jest łatwy do wychwycenia.

Co do nowego pomysłu z komentowaniem wiersza, to:

  • można, to uprościć i zpółautomatyzować za pomocą skryptu, a dokładniej dwóch - w jedna stronę i z powrotem:
    – w skrypcie umieszczasz wyszukiwanie konkretnego ciągu znaków i zamieniasz go na inny. W jaki sposób? Zapytaj w innym wątku, bo ja nie potrafię Ci odpowiedzieć na to pytanie, ale dla tych, którzy wiedzą jest to banalne;
    – można również zastosować metodę, którą w paru sytuacjach wykorzystuję, czyli wrzucenie do skryptu zamiany całych plików. Jej wadą jest, to że ogranicza się do plików, które nie ulegają zmianie (z automatu) lub zmiany nie, są istotne i można je zignorować.

W tym wątku pisałem tylko o pakietach z AUR ( w analogicznym przypadku dla pakietu z repo systemowego rozwiązanie jest proste: sudo pacman -S nazwa_pakietu_z_repo ).

Z tym skryptem, to dobry pomysł. W zarysie skrypt do ręcznego aktualizowania ignorowanych pakietów z AUR widzę tak:

  • w pliku /etc/pacman.conf dodać znak # w linii: IgnorePkg =
    (chyba komenda sed będzie tu najlepsza, o ile się uda)
  • pamac update (aktualizacja całego systemu)
  • w pliku /etc/pacman.conf usunąć znak # z linii: #IgnorePkg =

Co do skryptu, to dokładnie tak. Możesz tylko, dla pewności:

/etc/pacman.conf
--------------------------------------------
#IgnorePkg   = TenPakiet          # Komentarz unikalny, EneDueRabe

i operować na całym wierszu, po to aby nie modyfikować jakiegoś innego, w którym ‘IgnorePkg’ może wystąpić jako komentarz.

Przyszło mi jeszcze do głowy, że warto spróbować z jakimś AUR-helper’em (np. trizen), bo być może w ten sposób da radę obejść listę ignorowanych i zaktualizować pakiety, mimo to.

Ostatecznie, z ostrożności, nie zdecydowałem na zrobienie automatu do edytowania /etc/pacman.conf .
Postawiłem na yay, którym bezproblemowo można robić wszelkie aktualizacje:
yay -S nazwa_pakietu_z_AUR