Ero sivun ”Pacman” versioiden välillä
p (korjaus) |
p (→Listaa asennetut paketit: - korjailua) |
||
Rivi 98: | Rivi 98: | ||
case $1 in | case $1 in | ||
-a) expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort -n; printf "\n | -a) expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort -n; printf "\n Vanhin päivittämättä oleva paketti: %s\n\n" $vanhin_paivitys; ;; | ||
-h) pachis_help; ;; | -h) pachis_help; ;; | ||
''|*[!0-9]*) expac --timefmt='%Y-%m-%d %T' '%l\t%n'| sort -n | grep "$viimeisin_paivitys"; printf "\n Päivitetty viimeksi %s\n\n" $viimeisin_paivitys; ;; | ''|*[!0-9]*) expac --timefmt='%Y-%m-%d %T' '%l\t%n'| sort -n | grep "$viimeisin_paivitys"; printf "\n Päivitetty viimeksi %s\n\n" $viimeisin_paivitys; ;; | ||
Rivi 109: | Rivi 109: | ||
cat >&2 << EOF | cat >&2 << EOF | ||
pachis() - pacman | pachis() - pacman historia 2022-02-27 | ||
Oletuksena tulostaa kaikki päivitysten viimeisimmän päivitysten asennuspäivän aikana asennetut päivitykset. | Oletuksena tulostaa kaikki päivitysten viimeisimmän päivitysten asennuspäivän aikana asennetut päivitykset. |
Versio 22. marraskuuta 2022 kello 09.08
pacman | |
---|---|
Käyttöliittymä | teksti |
Lisenssi | GPLv2+ |
Kotisivu | archlinux.org/pacman |
Lähdekoodi | git.archlinux.org/pacman.git |
pacman on Arch Linuxin sekä siihen pohjautuvien jakeluiden kuten Manjaron ja Parabola GNU/Linux-libren kuten myös Slackware:n sukulaisjakelu Frugalwaren käyttämä paketinhallintaohjelma, jolla hallitaan järjestelmään asennettuja ohjelmapaketteja. Siinä on tuki riippuvuuksien hallintaan sekä kyky ottaa yhteys etäpalvelimeen ja automaattisesti päivittää, asentaa tai poistaa paketteja. Myös paikallisten pakettien asentaminen on mahdollista. Koska valitsimet ovat yhden kirjaimen mittaisia, pacmanilla on verrattaen nopea kirjoittaa, jopa monimutkaisia komentoja verrattuna esimerkiksi Debian-pohjaisten jakeluiden käyttämin Apt-paketinhallintaohjelmiin.
Arch Linuxin paketit ovat gzipattuja tarballeja ja Frugalwaren paketit bzip2-pakattuja tarballeja. Tiedostopäätteenä Arch Linuxin paketeissa on .pkg.tar.gz ja Frugalwaren paketeissa .fpm. pacmanin asetustiedosto on /etc/pacman.conf.
Frugalware on nykyisin siirtynyt käyttämään alkuperäisen Arch Linuxin pacmanin sijaan uudelleenkirjoitettua pacman-versiota nimeltä pacman-G2. pacman-G2 on syntaksiltaan käytännössä samanlainen kuin alkuperäinen pacman [1].
Historia
- Versiossa 2.0 lisättiin mahdollisuus synkronoida paketteja (--sync valitsemilla) pääpalvelimen kanssa pakettitietokantojen kautta. Tätä aiemmin paketit piti manuaalisesti asentaa käyttämällä --add ja -upgrade toimintoja.
- Versiossa 3.0 siirryttiin kaksiosaiseen pacmaniin — taustaprosessiin nimeltä libalpm (Arch Linux paketinhallintakirjasto) ja tutumpaan pacman-käyttöliittymään. Nopeus parantui monissa tapauksissa, samalla kun riippuvuus ja ristiriitojen ratkaiseminen pystyi käsittelemään yhä suuremman määrän tapauksia. Siirros kirjastopohjaiseen ohjelmaan helpottaisi tulevaisuudessa vaihtoehtoisten käyttöliittymien kehittämistä.
- Versiossa 4.0 lisättiin paketin allekirjoitus ja varmennus mahdollisuudet koko makepgk/repo-add/pacman-työkaluketjuun GnuPGn ja GPGME:n avulla.
- Versio 5.0 toi tuen tapahtumia edeltäville sekä niiden jälkeisille koukuille ja tietokantatiedostoluettelon toimintojen synkronisoinnille.
Käyttö
Päivittäminen
Päivitetään koko järjestelmä (valitsin -u) pakettitietokanta samalla kertaa synkronoiden:
# pacman -Syu
Päivitetään/asennetaan ennestään olemassaoleva, esimerkiksi vanhempi versio sovelluksesta tai itsetehty ohjelmapaketti:
# pacman -U foobar-0.1.4-2.pkg.tar.gz
Asentaminen
Paketit asennetaan valitsemalla -s . Asennetaan paketti zsh :
# pacman -S zsh
Näytetään paketin nginx ja sen riippuvaisuuksien suorat osoitteet. Tällöin käyttäjä voi kopioida paketit käsin vaikkapa hakemistoon /var/cache/pacman/pkg/ ja käyttää tämän jälkeen normaalia pacman-syntaksia niiden asentamiseen.
$ pacman -Sp nginx
Etsiminen
Etsitään hakusanan "chess" sisältävät paketit pakettitietokannasta:
$ pacman -Ss chess
Etsitään kaikki koneelle asennetut paketit, jotka sisältävät hakusanan "alsa":
$ pacman -Qs alsa
Tietojen näyttäminen
Näytetään asentamattoman (pakettitietokannasta löytyvän) paketin termite tiedot:
$ pacman -Si termite
Näytetään koneelle asennetun paketin byobu tiedot:
$ pacman -Qi byobu
Näytetään mihin pakettiin tiedosto /usr/bin/ag kuuluu:
$ pacman -Qo /usr/bin/ag
Poistaminen
Poistetaan paketti cmus :
# pacman -R cmus
Poistetaan vain ja ainoastaan paketti xorg-server .
# pacman -Rdd xorg-server
Poistetaan paketti cantata
riippuvuuksineen päivineen.
# pacman -Rns cantata
Poistetaan paketti cmus ja sen riippuvuudet, joita ei tarvita:
# pacman -Rs cmus
Pakettien aiheuttama tallennustilan täyttyminen ja sen puhdistaminen
Poistetaan kaikki pacmanin lataamat paketit hakemistosta /var/cache/pacman/pkg. Mikäli valitsin annetaan muodossa -Sc, poistetaan vain vain vanhentuneet paketit. Mikäli paketteja ei poisteta tarpeeksi usein, kertyy niitä helposti useiden gigatavujen verran ja voi pahimmillaan täyttää /var
-osion, oli sitten erillinen oma osionsa tai osa /
juuri-osiota, joka johtaa siihen, että uusien päivitysten asentaminen ei onnistu ennen kuin ylimääräiset paketit poistetaan.
# pacman -Scc
AUR-sovellus pacleanerAUR avulla on tosin mahdollista siivota pacman välimuistia niin, että kaikki muu, tarpeettomat paketit mukaanlukien poistetaan paitsi viimeksi ladatut, jolloin palaaminen aiempiin versioihin on mahdollista, mikäli viimeisimmät versiot omaavat esimerkiksi ohjelmavirheitä.
$ pacleaner -um --delete
Listaa asennetut paketit
Muokkaamalla käytössä olevan komentotulkin asetustiedostoa, voidaan lisätä funktio, joka oletuksena listaa saman päivän aikana asennetut paketit aikajärjestyksessä, valitsin -a listaa kaikki asennetut paketit aikajärjestyksessä, tai pelkän kokonaisluvun lisäämällä lukua vastaavan määrän asennettuja paketteja. Esim. bash-komentotulkin .bashrc-tiedostoon:
Vaatimukset: expac
# pacman updates history
# requirements: expac
pachis() {
printf "\n"
local vanhin_paivitys=$(expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort -r | tail -1 | awk '{print $1}');
local viimeisin_paivitys=$(expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort -n | tail -1 | awk '{print $1}');
case $1 in
-a) expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort -n; printf "\n Vanhin päivittämättä oleva paketti: %s\n\n" $vanhin_paivitys; ;;
-h) pachis_help; ;;
''|*[!0-9]*) expac --timefmt='%Y-%m-%d %T' '%l\t%n'| sort -n | grep "$viimeisin_paivitys"; printf "\n Päivitetty viimeksi %s\n\n" $viimeisin_paivitys; ;;
''|*[0-9]*) expac --timefmt='%Y-%m-%d %T' '%l\t%n'| sort -n | tail -n"$1"; printf "\n $1 viimeisintä päivitystä lueteltuna.\n\n"; ;;
*) printf "\n pachis\n\n Tulostaa päivitykset aikajärjestyksessä.\n" ;;
esac
}
pachis_help(){
cat >&2 << EOF
pachis() - pacman historia 2022-02-27
Oletuksena tulostaa kaikki päivitysten viimeisimmän päivitysten asennuspäivän aikana asennetut päivitykset.
-h
Näyttää tämän viestin.
-a
Tulostaa kaikki asennetut paketit päivitysjärjestyksessä.
[0-9]+
Tulostaa määritellyn määrän viimeisempinä asennettuja/päivitettyjä paketteja.
EOF
}
Katso myös
- Rosetta, eri jakeluiden paketinhallintaohjelmistojen käskyjen tulkinta ja käyttö.