Pacman
Z Arch Linux Wiki
Spis treści |
Ogólne
Menedżer pakietów Pacman to jedna z głównych atrakcji Arch Linuksa. Łączy w sobie prosty format pakietów binarnych z łatwym w używaniu ABS. Pacman umożliwia łatwe zarządzanie i dostosowywanie pakietów, a pakiety te brane są z oficjalnego repozytorium Archa oraz repozytorium tworzonego przez użytkowników. Repozytorium użytkowników pozwala na budowanie i opiekowanie się własnymi pakietami (zobacz AUR).
Pacman pozwala na utrzymanie aktualności systemu przez synchronizację listy pakietów z głównym serwerem, tym samym powodując, że utrzymanie systemu dla znającego się na bezpieczeństwie administratora jest trywialne. Poza tym pozwala ci na ściągnięcie/zainstalowanie kompletnego pakietu z zależnościami prostym poleceniem (podobnie do debianowego apt-get).
Menedżer został napisany i jest rozwijany przez Judda Vineta - autora Arch Linuksa, ale jest używany z powodzeniem także w innych dystrybucjach, takich jak FrugalWare (zobacz także [1]), Rubix, UfficioZero i oczywiście w dystrybucjach archopochodnych - Archie oraz AEGIS.
W maju 2007 roku ukazał się Pacman 3.0, z kilkunastoma istotnymi zmianami. Nowa wersja to ułatwienie dla programistów, którzy mają do dyspozycji odpowiednią bibliotekę do zarządzania pakietami, lecz zmiany dotknęły także użytkowników. Zmieniono sposób rozpoznawania plików konfiguracyjnych, eliminując dyrektywę NoUpgrade, zaś sam program porozumiewa się z użytkownikiem w języku polskim.
Używanie
Pacman jest zarówno menedżerem pakietów binarnych, jak i źródłowych. To połączenie pomysłów z Gentoo, Debiana i Slackware, stworzone, by być jednym z najbardziej rozbudowanych menedżerów pakietów, który jednocześnie pozostaje łatwy w użyciu. Pacman potrafi pobierać, instalować i uaktualniać pakiety ze zdalnych oraz lokalnych repozytoriów, z pełną obsługą zależności. Ponadto ma łatwe do opanowania narzędzia do tworzenia własnych pakietów. Zalecane jest także zapoznanie się z artykułem "Przyspieszanie Pacmana".
Instalowanie pakietów
Przed instalacją i aktualizacją pakietów dobrze jest zsynchronizować lokalną bazę pakietów z repozytorium.
pacman -Sy
Aby zainstalować/zaktualizować jeden bądź kilka pakietów (razem z zależnościami), użyj następującej komendy:
pacman -S nazwa_pakietu1 nazwa_pakietu2
Czasem jest więcej niż jedna wersja pakietu w różnych repozytoriach (np. extra i testing). Możesz określić, którą chcesz zainstalować:
pacman -S extra/nazwa_pakietu pacman -S testing/nazwa_pakietu
Możesz wyświetlić listę pakietów w danym repo np:
pacman -Sl extra
W ten sposób wymusisz zastąpienie konfliktujących plików tymi z pakietu:
pacman -Sf nazwa_pakietu
Możesz także łączyć parametry, dla przykładu to spowoduje zarówno synchronizację bazy, jak i zainstalowanie pakietu:
pacman -Sy nazwa_pakietu
Tak wyświetlisz grupy:
pacman -Sg
Tak zaś wyświetlisz pakiety należące do danej grupy:
pacman -Sg grupa
Trochę więcej info o operacji:
pacman -Sv pakiet
Usuwanie pakietów
Aby usunąć pojedynczy pakiet, zostawiając wszystkie jego zależności:
pacman -R nazwa_pakietu
Żeby usunąć pakiet wraz z wszystkimi zależnościami, które nie są wymagane przez inne pakiety:
pacman -Rs nazwa_pakietu
Żeby usunąć zależność razem z pakietami które jej wymagają:
pacman -Rc nazwa_zależności
Żeby usunąć pakiet oraz konfigurację która normalnie by została:
pacman -Rn nazwa_pakietu
Żeby wyświetlić więcej informacji podczas usuwania pakietu:
pacman -Rv nazwa_pakietu
Pomija sprawdzanie zależności usuwanego pakietu:
pacman -Rd nazwa_pakietu
Aktualizowanie systemu
Pacman potrafi uaktualnić wszystkie pakiety w systemie zaledwie jedną komendą. To może zająć chwilę, w zależności od tego jak bardzo stary masz system:
pacman -Su
Możesz zsynchronizować bazę pakietów ORAZ zaktualizować swój system wykorzystując łączenie parametrów:
pacman -Syu
Dobrym nawykiem jest uruchamianie tej komendy co kilka dni.
Zapytania do bazy danych
Pacman potrafi przeszukiwać bazę pakietów dla podanego słowa kluczowego. Możesz wpisać część nazwy pakietu, a pacman wyświetli wszystkie pakiety, które zawierają podany ciąg znaków.
pacman -Ss pakiet
Aby przeszukać tylko zainstalowane pakiety:
pacman -Qs pakiet
Jeśli znasz nazwę pakietu, którego szukasz, możesz wyświetlić o nim informacje:
pacman -Si pakiet pacman -Qi pakiet
Aby wylistować pliki, które są częścią pakietu:
pacman -Ql pakiet
Możesz także dowiedzieć się z jakiego pakietu pochodzi interesujący cię plik:
pacman -Qo /ścieżka/do/pliku
Albo sprawdzić które pakiety przestały być zależnościami innych:
pacman -Qdt
Równoczesne szukanie w repozytoriach oraz zainstalowanych pakietach
Możesz używać poniższego bashowego skryptu do porównywania wyników komend pacman -Ss foo i pacman -Qs foo, aby zobaczyć które z wylistowanych pakietów już są zainstalowane. Będą one oznaczone gwiazdką.
#!/bin/bash if [ -z "$1" ]; then echo "usage: pacsearch [regex pattern]" echo "usage: pacsearch -h|--help" exit 0 fi if [ "$1" = "-h" -o "$1" = "--help" ]; then echo "usage: pacsearch [regex pattern]" echo " Like pacman -Ss [regex pattern] but installed packages are flagged with a *" echo "usage: pacsearch -h|--help" echo " Prints this message. No other options allowed" exit 0 fi firstchar=`echo "$1" | cut -c1` if [ $firstchar = "-" ]; then echo "Sorry, $1 is not a valid option!" echo "usage: pacsearch [regex pattern]" echo "usage: pacsearch -h|--help" exit 0 fi instpkg=`pacman -Qs $1 | egrep '^[^ ]' | sed 's|^local/||' | sed 's/ .\+$//'` syncdump=`mktemp` pacman -Ss $1 > $syncdump for pkg in $instpkg; do sed -i "s@^\(.\+/$pkg\) @\*\1 @" $syncdump done cat $syncdump
Zapisz skrypt gdziekolwiek w miejscu do tego przeznaczonym (np. ~/bin/) i nazwij go pacsearch. Nadaj mu prawa wykonywalności:
chmod a+x pacsearch
Teraz gdy wpiszesz:
pacsearch ^qt
powinieneś ujrzeć coś w rodzaju:
extra/qca 1.0-1 QT Cryptography Architecture extra/qsynth 0.2.5-1 Qt GUI for fluidsynth *extra/qt 3.3.5-8 The QT gui toolkit. extra/qt-doc 3.3.5-1 The QT gui toolkit documentation. extra/qtella 0.6.5-1 Qtella is a Gnutella client for Linux using QT extra/qtiplot 0.7.7-1 Data analysis and scientific plotting - free clone of Origin extra/qtparted 0.4.5-3 A Partition Magic clone written in C++ using the Qt toolkit extra/qwt 4.2.0-3 Qt Widgets for Technical Applications extra/qwtplot3d 0.2.6-2 Qt/OpenGL-based C++ programming library containing 3d-widgets
Zatem dowiedziałeś się, że żaden z szukanych przez ciebie pakietów poza qt nie jest zainstalowany.
Inne użycie
Pacman jest rozbudowanym narzędziem, dlatego daje ci jeszcze inne możliwości.
- Pobranie pakietu bez instalowania go:
pacman -Sw package_name
- Instalowanie pakietu, który jest na dysku (już pobrany):
pacman -U /path/to/package/package_name-version.pkg.tar.gz
- Czyszczenie przeterminowanych pakietów z pamięci podręcznej pacmana (/var/cache/pacman/pkg):
pacman -Sc
- Czyszczenie wszystkich pakietów z pamięci podręcznej pacmana (/var/cache/pacman/pkg):
pacman -Scc
Jeśli chcesz dowiedzieć się więcej, wpisz w swoim terminalu man pacman.
Pacmanie 3.0 jest po polsku, główna pomoc pacman --help, pomoc dla np. -S - pacman -S --help.
Konfiguracja
Plik konfiguracyjny pacmana to /etc/pacman.conf. Są tam dwie główne sekcje:
Podstawowe opcje
Podstawowe opcje są w sekcji [options]. Możesz określić, które pliki nie powinny być aktualizowane. Bardzo przydatne dla ważnych plików systemowych. Składnia jest bardzo prosta:
NoUpgrade = etc/passwd etc/group etc/shadow etc/sudoers NoUpgrade = etc/fstab etc/raidtab etc/ld.so.conf NoUpgrade = etc/rc.conf etc/rc.local NoUpgrade = etc/modprobe.conf etc/modules.conf NoUpgrade = etc/lilo.conf boot/grub/menu.lst
UWAGA: W Pacmanie 3.0 dyrektywa NoUpgrade została usunięta!
Inną przydatną opcją jest IgnorePkg. Dla przykładu - jeśli zmodyfikowałeś lub załatałeś pewny pakiet, dodajesz go do linijki IgnorePkg, aby pacman nie zaktualizował go, gdy wyjdzie nowa wersja ów pakietu. Mimo to pacman będzie informował cię o najnowszej wersji, dlatego będziesz mógł zdecydować, czy aktualizować przerobiony przez Ciebie pakiet.
Przykład dla pakietu:
IgnorePkg = kernel26
Oprócz tego, ta opcja przydaje się przy WIELKICH pakietach, jak openoffice-base czy gnome, gdy chcesz unikać ściągania i aktualizowania tego pakietu za każdym razem, gdy w repozytorium pojawi się jego nowa wersja.
Przykład dla całej grupy:
IgnoreGroup = gnome
Repozytoria
W tej sekcji decydujesz, których repozytoriów chcesz używać. Ich konfiguracja może być zawarta w samym pacman.conf albo dołączana z odrębnych plików. To drugie rozwiązanie jest dobre dla oficjalnych repozytoriów, gdzie serwerów lustrzanych jest dużo.
[repository-name] Server = ftp://server.net/repo
[core] ## tutaj dodaj swoje ulubione serwery, będą używane jako pierwsze Include = /etc/pacman.d/mirrorlist
Po więcej informacji odsyłam do man pacman.
Rankmirrors
Od wersji 3.0.0 możliwe jest posegregowanie listy repozytorium od najszybszego do najwolniejszego. Jest to bardzo przydatne ponieważ oficjalne repo bywa czasem bardzo przeciążone i transfer spada do 0kb/s.
Wpierw wchodzimy do /etc/pacman.d, a następnie wybieramy plik z listą serwerów:
rankmirrors mirrorlist
W tym wypadku posegreguje nam listę mirrorów. Po zakończeniu całego procesu program wydrukuje nam w konsoli posegregowaną listę repozytoriów, którą na przykład możemy zapisać do pliku mirrorlist-rankmirrors. Zostaje nam tylko zmiana w pacman.conf z:
[core] Include = /etc/pacman.d/mirrorlist
na
[core] Include = /etc/pacman.d/mirrorlist-rankmirrors
i możemy cieszyć się szybkimi (albo i nie) mirrorami.
Downgrade pakietów
Jeżeli zauktualizaowałeś pakiet X i uważasz, że skutek tego jest niekorzystny dla twojego Archa, możesz powrócić do starszej wersji wspomnianego pakietu X. Jeżeli nie użyłeś polecenia pacman -Scc, paczkę X w starszej wersji powinieneś mieć w katalogu /var/cache/pacman/pkg.
Jeżeli jednak katalog masz czysty, ściągasz starszą wersję pakietu z podanych serwerów:
Możesz także dodać serwer do swoich mirrorów w pliku /etc/pacman.d/mirrorlist:
Server = http://www.schlunix.org/archlinux/$repo/os/i686
Lub
Server = http://www.schlunix.org/archlinux/$repo/os/x86_64
Gdy już poosiadasz wybraną wersję pakietu, możesz już usunąć najnowszą wersję pakietu X za pomocą polecenia:
# pacman -Rd nazwa_pakietu
a następnie zainstalać starszą paczkę używając polecenia:
# pacman -U nazwa_pakietu.pkg.tar.gz
Pacman GUI
Najpopularniejszym GUI dla Pacmana w przypadku GNOME jest GtkPacman. Jego zalety to prostota i stabilność.
Można go pobrać z AUR:
# yaourt -S gtkpacman
W przypadku KDE zalecany jest Shaman, którego znaleźć możemy w [Community]:
# pacman -S shaman
Narzędzia Pacmana
Innymi narzędziami [nieobowiązkowymi] do obsługi Pacmana są: