Pamac – graficzny oraz konsolowy menedżer pakietów Manjaro


#1

Pamac to zaawansowane narzędzie umożliwiające zarządzanie oprogramowaniem za pomocą graficznego interfejsu lub pod konsolą.

Pamac jest zbudowany na podstawie biblioteki ALPM (Arch Linux Package Management), a jego graficzny interfejs jest zbudowany na podstawie biblioteki GTK, dlatego też Pamac możemy spotkać w środowiskach takich jak: XFCE, Gnome, Cinnamon, Mate, LXDE. Trwają prace nad stworzeniem interfejsu w oparciu o bibliotekę Qt – być może w niedalekiej przyszłości Pamac-a zobaczymy również domyślnie w wydaniach z Plasma oraz LXQt – i stanie się on standardowym menedżerem pakietów Manjaro.

GUI – graficzny interfejs

Pamac umożliwia wyszukiwanie pakietów (wg grup, stanu, repozytorium źródłowego), ich instalację oraz usuwanie. Aplet Pamac to program rezydujący w zasobniku systemowym, informuje o dostępności zaktualizowanych pakietów oraz pozwala w wygodny sposób przeprowadzać aktualizację.
Za pomocą Pamac możemy skonfigurować wiele aspektów działania menedżera pakietów, na przykład:

  • ustawić częstotliwość sprawdzania dostępności aktualizacji
  • wybrać najszybszy mirror i jego lokalizację
  • ustawić ilość wersji pakietów, które będą przechowywane w pamięci podręcznej na dysku (umożliwia to przeprowadzenie downgrade pakietu w rzadkich przypadkach, kiedy aktualizacja może powodować problemy)
  • włączyć obsługę AUR (Repozytorium Użytkowników Arch)

pamac cli, czyli pamac z linii komend

Od niedawna pamac posiada także możliwość pracy w terminalu tekstowym – listę poleceń wraz z pomocą otrzymamy wpisując w konsoli:

pamac -h
$ pamac --help
Dostępne działania:
  pamac --version     
  pamac --help,-h      [działanie]
  pamac checkupdates   [opcje]
  pamac search         [opcje] <pakiet(ów)>
  pamac info           [opcje] <pakiet(ów)>
  pamac list           [opcje] <pakiet(ów)>
  pamac install        [opcje] <pakiet(ów)>
  pamac reinstall      [opcje] <pakiet(ów)>
  pamac build          [opcje] <pakiet(ów)>
  pamac remove         [opcje] <pakiet(ów)>
  pamac update,upgrade [opcje] <pakiet(ów)>

Aby dowiedzieć się więcej o konkretnym działaniu (akcji) wpisujemy:

pamac -h działanie

np.

$ pamac -h build
Buduj pakiety z AUR i instaluj wraz z zależnościami

pamac build [opcje] <pakiet(ów)>

opcje:
  --builddir    : katalog budowania, jeśli katalog nie jest podany -
                           zostanie użyty katalog z pamac.conf

#2

Stan na wersję: 7.3.3-1

$ pamac --help checkupdates
Bezpiecznie sprawdź aktualizacje bez modyfikowania baz danych
(Kod zakończenia to 100, jeśli aktualizacje są dostępne)

pamac checkupdates [opcje]

opcje:
  -a, --aur            : sprawdź również aktualizacje w AUR
  --devel              : sprawdź też aktualizacje paczek deweloperskich (użycie z --aur)
  -q, --quiet          : wypisz tylko jedną linię dla każdej aktualizacji
  --builddir <katalog> : katalog budowania (użycie z --dlevel), jeśli nie podano katalogu, użyty zostanie katalog określony w pamac.conf
$ pamac --help update
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
$ pamac --help search
Szukaj pakietów lub plików, można podać wiele warunków

pamac search [opcje] <pakiet(ów),plik(ów)>

opcje:
  -a, --aur   : wyszukaj również w AUR-ze
  -f, --files : szukaj pakietów, które posiadają podane nazwy plików (nazwy plików mogą być częściowe)
$ pamac --help info
Wyświetl szczegóły pakietu, można podać wiele pakietów

pamac info [opcje] <pakiet(ów)>

opcje:
  -a, --aur : wyszukaj również w AUR-ze
$ pamac --help list
Wyświetl pakiety, grupy, repozytoria lub pliki

pamac list [opcje]

opcje:
  -i, --installed                : lista zainstalowanych pakietów
  -o, --orphans                  : lista pakietów, które zostały zainstalowane jako zależności, ale nie są już wymagane przez żaden zainstalowany pakiet
  -m, --foreign                  : lista pakietów, które nie zostały znalezione w repozytoriach
  -g, --groups [grup(y)]         : pokaż wszystkie pakiety będące członkami danej grupy, jeśli nie podano żadnej grupy to pokaż wszystkie grupy
  -r, --repos [repozytorium(ów)] : pokaż wszystkie pakiety dostępne w repozytorium, jeśli nie podano repozytorium, pokaż wszystkie repozytoria 
  -f, --files <pakiet(ów)>       : pokaż pliki należące do podanych pakietów
$ pamac --help install
Instaluj pakiety z repozytoriów, ścieżki lub url

pamac install [opcje] <pakiet(ów),grup(y)>

opcje:
  --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
$ pamac --help reinstall
Przeinstaluj pakiety

pamac reinstall <pakiet(ów),grup(y)>
$ pamac --help clone
Sklonuj lub zsynchronizuj pliki budowanych pakietów z AUR

pamac clone [opcje] <pakiet(ów)>

opcje:
  --builddir <katalog> : katalog budowania, jeśli nie podano katalogu, użyty zostanie katalog określony w pamac.conf
  -r,--recurse         : pobierz także potrzebne zależności
  --overwrite          : nadpisz istniejące pliki
$ pamac --help build
Buduj pakiety z AUR i instaluj wraz z zależnościami
Jeśli nie podano nazwy pakietu, użyty zostanie plik PKGBUILD w obecnym katalogu
Katalog budowania będzie katalogiem nadrzędnym, opcja --builddir będzie ignorowana

pamac build [opcje] [pakiet(ów)]

opcje:
  --builddir <katalog> : katalog budowania, jeśli nie podano katalogu, użyty zostanie katalog określony w pamac.conf
  --no-clone           : nie klonuj plików budowania z AUR, tylko użyj lokalnych plików
$ pamac --help remove
Usuń pakiety

pamac remove [opcje] [pakiet(ów),grup(y)]

opcje:
  -o, --orphans : usuń zależności, które nie są wymagane przez inne pakiety, jeśli ta opcja jest używana bez nazwy pakietu, usuń wszystkie osierocone pakiety

#3

Gdzie pamac zapisuje obecnie informacje o tym, że było sprawdzane, czy system jest aktualny?

Mam obecnie testowo ustawione sprawdzanie aktualizacji co 2 godziny, jednak nie ma w pliku /var/log/pacman.log żadnych informacji na ten temat (są tu jedynie informacje po dodaniu/usunięciu pakietu).


#4
  1. /var/log/pacman.log jest log’iem pacman’a, a nie pamac’a.
  2. Jeżeli aktualizacje sprawdza automat, to zapewne jest, to applet, który trzyma informacje na ten temat … w pamięci? Tak podejrzewam. Możesz również zajrzeć do /home/mnjr/.config/xfce4/panel/ (dla Xfce), ale tam - prawdopodobnie - będzie tylko konfiguracja applet’u (prawdopodobnie, bo od jakiegoś czasu nie używam automatycznego sprawdzania, więc nie mogę tego zweryfikować).
  3. pamac, na potrzeby sprawdzenia aktualizacji, ściąga bazy do /tmp/pamac/dbs-nazwausera/. W ten sposób nie musi blokować oryginalnych baz w systemie i nie musi mieć do nich uprawnień. Dopiero gdy rozpoczyna aktualizację, żąda uprawnień root’a.

#5

ad 1:
Kiedyś pamac wpisywał info o swoim działaniu do /var/log/pacman.log . Przykładowo, tak wyglądał wpis z dnia bez aktualizacji, przy sprawdzaniu co 6 godzin:

[2017-03-10 09:03] [PAMAC] synchronizing package lists
[2017-03-10 15:03] [PAMAC] synchronizing package lists
[2017-03-10 21:03] [PAMAC] synchronizing package lists

ad 2:
w ~/.config/xfce4/panel/ nic nie znalazłem powiązanego z Pamac.

ad 3:
/tmp/pamac/dbs-nazwausera/ to dobry trop. Jest tu katalog sync/ i link symboliczny z datą uruchomienia komputera ( = startu Pamac) w dniu dzisiejszym.
Sprawdzę jak to będzie wyglądać za chwilę, gdy powinno być kolejne sprawdzanie.

Edit:
To działa :slight_smile: Przy obecnym ustawieniu sprawdzania co 2 godziny, data katalogu sync/ zwiększyła się odpowiednio o 2 godziny.

Co natomiast jest dla mnie niezrozumiałe, to że w katalogu sync/ jest 39MB plików, natomiast router, po uruchomieniu systemu, pokazywał transfer kilkuset kB, a, o ile mi wiadomo, cały /tmp/jest czyszczony po zakończeniu sesji.


#6

Sprawdź daty i wielkości plików bazy danych w /var/lib/pacman/sync .
U mnie są takie same jak w /tmp/pamac/dbs-xxx/sync , co mówi, że pamac podczas sprawdzenia aktualizacji kopiuje pliki pacmana do /tmp . Możesz to bardzo prosto sprawdzić, wykasuj katalog /tmp/pamac , a następnie sprawdź czy są aktualizacje
pamac update
U mnie pojawił się wykasowany katalog.


#7

Będę sprawdzał dalej, ale obecnie (przy zaktualizowanym systemie) wygląda, to tak:

  • $ checkupdates ściągnął (z net’u) bazy (*.db) do katalogu /tmp/checkup-db-nazwausera/sync/ i nic nie powiedział, co równa się komunikatowi: system aktualny;
  • $ pamac checkupdates skopiował zawartość (*.db, *.files) katalogu /var/lib/pacman/sync/ do katalogu /tmp/pamac/dbs-nazwausera/sync/ i powiedział: Twój system jest aktualny.

Zwracam uwagę, że $ pamac checkupdates różni się od $ pamac update, ponieważ ta pierwsza komenda nie operuje na bazach w systemie, tylko na kopiach, dlatego nie potrzebuje root’a. Następny test zrobię wtedy, gdy będę miał pod ręką niezaktualizowany system (produkcyjny lub live).


EDIT-20190120-0040 … Uzupełnienie - sytuacja odmienna niż wyżej, jest kilka aktualizacji do zainstalowania:

  • $ checkupdates ściągnął (z net’u) bazy (*.db) do katalogu /tmp/checkup-db-nazwausera/sync/ (czyli bez zmian) i wylistował pakiety do aktualizacji;
  • $ pamac checkupdates ściągnął z net’u te bazy (*.db), które dotyczyły repozytoriów zawierających pakiety do aktualizacji. Lokalizacja j.w.
    W konkretnym przypadku, który przed momentem testowałem, są cztery pakiety do aktualizacji, z dwóch repozytoriów: core i multilib. Pamac ściągnął z server’ów tylko dwa pliki (sądząc po ilości materiału jaki został pobrany): core.db i multilib.db
    Wygląda więc na to, że porównuje bazy w systemie i na server’ze, po czym ściąga tylko nowsze, a resztę kopiuje z /var/lib/pacman/sync/