Introduksjon
Porter vs. pakker
FreeBSD-pakkebehandleren, pkg
Installerer pkg
Konfigurerer pkg
Finne pakker
Installerer pakker
Innhenting av informasjon om installerte pakker
Fjerning av pakker
Låse pakker
Pakkelager
Eksempel på pkg-underkommandoer
Viktige filer og kataloger
Sammendrag
Introduksjon
FreeBSD er et åpen kildekode Unix-lignende operativsystem som brukes til å drive moderne servere, skrivebord og innebygde plattformer. Giganter som Netflix, Yahoo!, WhatsApp, BBC og Sony bruker FreeBSD i en eller annen form. FreeBSD-systemet er ikke så kjent som Linux, hovedsakelig fordi Linux i mange år har fokusert på skrivebordet og FreeBSD-prosjektet har hatt en tendens til å være mer serverbasert.
I denne veiledningen vil du lære om pakkehåndtering på FreeBSD 12.
Porter vs. pakker
På FreeBSD har vi to forskjellige måter å installere tilleggsprogramvare på: via Ports Collection , eller Ports , og via forhåndskonfigurerte pakker for å installere og administrere programvare.
Ports er et system for å bygge tilleggsprogramvare på FreeBSD. Med Ports starter du med den rå kildekoden levert av programvareleverandøren og bygger programvaren på akkurat den måten du trenger, aktiverer og deaktiverer funksjoner etter behov.
Pakker er forhåndskompilert programvare, og de er et resultat av å bygge porter, ved å bruke alternativene portvedlikeholderen tror vil være mest nyttige for det bredeste utvalget av mennesker og samle dem sammen i en pakke for å gjøre dem enkle å installere. Pakker lar deg raskt installere, avinstallere og oppgradere tilleggsprogramvare. FreeBSDs pakkesystem kalles pakke , eller pkg. Pakkeinformasjon blir lagret i en SQLite-database som du kan spørre om pakkedata.
En annen viktig ting med FreeBSD-pakkehåndtering er plasseringen av pakkebinærfiler. Pakker installerer binærfiler under /usr/local, og de fleste konfigurasjonsfiler ender i /usr/local/etcstedet for /etc. Hvis du kommer fra Linux-verdenen, kan det hende du finner dette svært uvanlig.
FreeBSD-pakkebehandleren, pkg
Neste generasjons erstatning for de tradisjonelle FreeBSD-pakkehåndteringsverktøyene er pkg. Å tilby mange funksjoner som gjør håndtering av binære pakker raskere og enklere, pkger den enkleste måten å installere programvare som ikke allerede er inkludert i basissystemet til FreeBSD. Det er et enkelt program med mange underkommandoer som du vil bruke for omtrent alle operasjoner på pakker som å installere, fjerne og undersøke pakker. Alle pakkeoperasjoner og endringer må kjøres som rooteller via sudo.
Slik vil du installere curlpakken på FreeBSD:
pkg install curl
Du kan mate kommandoen med for -yå unngå Proceed with this action? [y/N]:spørsmålet når du installerer programvare, eller du kan konfigurere pkgtil alltid å anta -yi en konfigurasjonsfil.
For å fjerne pakken, bruker du delete:
pkg delete curl
Som du kan se, er det veldig enkelt og intuitivt.
Bruk pkg helpfor en hurtigreferanse på de tilgjengelige underkommandoene, eller for pkg help <subcommand>å vise manualsiden for en bestemt underkommando:
pkg help
pkg help install
pkg help delete
Installerer pkg
Lagerversjonen av FreeBSD leveres ikke med pkgpakkebehandlingen installert. Første gang du prøver å installere en pakke, blir du pkgbedt om å installere pakkebehandlingsverktøyet. La oss for eksempel si at den første pakken du vil installere på din ferske FreeBSD er wget, og du vil se følgende ledetekst i terminalen din:
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Du vil trykke Yog ENTERog installasjonen av pakkeadministrasjonsverktøyet starter. Etter at den er på plass, vil den første programvarepakken du ønsket å installere ( wget) bli installert.
Du kan også installere pakkesystemet på egen hånd, uten å legge til andre pakker, ved å kjøre pkg bootstrap. I tillegg pkgvet hvordan du installerer og oppdaterer seg selv og andre pakker.
MERK: Vultr-forekomster er pkginstallert som standard, så du trenger ikke å installere det.
Konfigurerer pkg
Den pkger utviklet for å være svært fleksibel, med hver -delkommandoen ha mange alternativer. Du kan etablere tilpasset, men konsistent oppførsel for de fleste programmer med den systemomfattende konfigurasjonsfilen for pkg, som ligger i /usr/local/etc/pkg.conf.
Filen inneholder kommenterte standardinnstillinger for pkg. Bare ved å lese den filen, kan du lære mye om hvordan pkgoppfører seg. Konfigurasjonen er skrevet i universal configuration language (UCL) og det er mange kommenterte konfigurasjonsalternativer og ganske mange aliaser. Variabler kan settes til et heltall, en streng eller en boolsk verdi:
#PKG_DBDIR = "/var/db/pkg";
#PKG_CACHEDIR = "/var/cache/pkg";
#PORTSDIR = "/usr/ports";
#INDEXDIR = "";
#INDEXFILE = "INDEX-10"; # Autogenerated
#HANDLE_RC_SCRIPTS = false;
#DEFAULT_ALWAYS_YES = false;
#ASSUME_ALWAYS_YES = false;
. . .
Du kan definere aliaser for pkgunderkommandoer i pkg.conf. Nederst i pkg.conffinner du en seksjon merket ALIAS. Når du finner deg selv gjentatte ganger kjører komplekse kommandoer, bør du legge til aliaser.
For mer informasjon om filformatet og alternativene, kan du se pkg.conf(5)man-siden:
man pkg.conf
Finne pakker
Nå som du har installert en pakkebehandling, kan du installere pakker. Hvis du er en sys-admin, er du kjent med det faktum at forskjellige operativsystemer tildeler forskjellige navn til pakkede versjoner av samme programvare. En pakke for Apache webserver på FreeBSD, for eksempel, vil ha et helt annet navn enn den pakkede Apache på forskjellige Linux-distribusjoner. Så før du kan installere noe, må du finne ut hva navnet på pakken du vil installere er.
FreeBSD-prosjektet tilbyr flere sett med pakker i et offentlig depot, og de oppdateres med noen få dagers mellomrom. Det er for tiden over 25 000 pakker.
La oss for eksempel prøve å søke etter Apache-nettserver:
pkg search apache
# apache24-2.4.38 Version 2.4.x of Apache web server
Den vil finne alle pakker med apachei navnene deres. Dette vil returnere en lang liste, men det du ser etter er apache24pakken. Det er en kort beskrivelse av hver pakke. Dette bør hjelpe deg når du bestemmer deg for hvilken pakke du skal installere, men det er ikke alltid enkelt.
Noen søk kan generere hundrevis av resultater. Du må bruke forskjellige kommandolinjealternativer for å trimme eller justere søkeresultatene. Se pkg-searchman-siden eller hjelpesiden for pkg help searchå lære mer om vanlige søkealternativer.
Hvis du ikke er sikker på om en pakke er det du virkelig vil ha, kan du bruke følgende kommando for å finne detaljer om pakken:
pkg search -R apache24
# name: "apache24"
# origin: "www/apache24"
# version: "2.4.38"
# comment: "Version 2.4.x of Apache web server"
# maintainer: "apache@FreeBSD.org"
# www: "https://httpd.apache.org/"
# abi: "FreeBSD:12:amd64"
# arch: "freebsd:12:x86:64"
# prefix: "/usr/local"
# . . .
# . . .
Denne kommandoen vil gi deg mye nyttig informasjon om pakken.
Installerer pakker
For å installere programvare, bruk installunderkommandoen og navnet på en pakke for å installere:
pkg install apache24
Når du installerer pakker med pkg install, pkgkonsulterer du den lokale pakkekatalogen og laster deretter ned den forespurte pakken fra depotet på pkg.FreeBSD.org. Når pakken er installert, blir den registrert i en SQLite-database som holdes i /var/db/pkg/local.sqlite. Pass på at du ikke sletter denne filen, ellers vil systemet ditt miste oversikten over hvilke pakker som er installert. Hvis programvaren har avhengigheter, pkgvil finne dem ut og installere dem sammen med basispakken. Pakker installert som avhengigheter kalles automatiske pakker.
Pakkebehandlingen har muligheten til å bare laste ned pakker over internett og lagre dem på ett sted på disken. Dette lar deg installere dem på et annet tidspunkt. Du kan bruke pkg fetchkommandoen til å laste ned pakken uten å installere den:
pkg fetch nginx
Denne kommandoen henter bare Nginx uten dens avhengigheter. Du kan bruke -dflagget til å fange alle avhengighetene i tillegg til den navngitte pakken:
pkg fetch -d nginx
Pakkene lastes ned til pakkebufferkatalogen /var/cache/pkg. Etter at du har hentet pakker, pkglegger du dem til i denne katalogen. Du kan liste filer for å se hva den inneholder:
ls /var/cache/pkg
Nå, for å installere en nedlastet pakke etter en henting, kjør pkg installnormalt. Installasjonsprosessen bruker de hurtigbufrede filene i stedet for de nedlastede.
Over tid kan pakkebufferkatalogen vokse seg stor. Den pkg cleankommandoen fjerner alle bufrede pakker som har blitt erstattet av nyere versjoner, samt eventuelle pakkefiler som ikke lenger er i depotet:
pkg clean
Hvis du vil fjerne alle bufrede pakker, bruk -aflagget:
pkg clean -a
Hvis du vil rense pakkebufferen automatisk etter hver pakkeinstallasjon eller -oppgradering, sett pkg.confalternativet AUTOCLEANtil true.
Hvis du glemmer hvilke pakker du har installert på et system, kan du bruke for pkg infoå få en komplett liste over installert programvare:
pkg info
# atk-2.28.1 GNOME accessibility toolkit (ATK)
# avahi-app-0.7_2 Service discovery on a local network
# ca_root_nss-3.42.1 Root certificate bundle from the Mozilla Project
# . . .
# . . .
Hvis du vil ha mer informasjon om en installert pakke, bruk pkg infoog pakkenavnet. Dette viser pakkeinstallasjonsdetaljene i en menneskevennlig rapport:
pkg info nginx
# nginx-1.14.2_3,2
# Name : nginx
# Version : 1.14.2_3,2
# . . .
# . . .
You can see a lot of useful information like the version of the software, the time of software installation, software license, compile-time flags and more. Check the pkg-info man page for the complete details.
Removing packages
To uninstall binary packages use the pkg delete subcommand. It’s also available as pkg remove:
pkg delete nginx
# or
pkg remove nginx
You will get a list of packages to be removed and how much space this will free up.
If you remove a package that other packages depend on, pkg removes the depending packages as well.
Locking packages
There may be a time when you want a package on your server to never upgrade. When you lock a package, pkg won’t upgrade, downgrade, uninstall or reinstall it. It applies the same rules to the package’s dependencies and the programs it depends on.
Bruk for pkg lockå låse en pakke:
pkg lock openssl
Denne opensslpakken er nå låst.
For å liste opp alle låste pakker på systemet, bruk -lflagget:
pkg lock -l
For å fjerne låsen, bruk pkg unlockkommandoen:
pkg unlock openssl
For å låse eller låse opp alle pakker på systemet samtidig, bruk -aflagget:
pkg lock -a
pkg unlock -a
Pakkelager
Pakkelager støttes av pkg, som kalles samlinger av pakker. Du kan legge til, fjerne, aktivere og deaktivere depoter. Du bør konfigurere hvert depot i sin egen fil ved å bruke UCL-format. Offisielle FreeBSD-depoter hører hjemme i /etc/pkgkatalogen. FreeBSD sendes med repoen "FreeBSD" aktivert. Du finner konfigurasjonsfilen i /etc/pkg/FreeBSD.conf:
FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
Du kan legge til og fjerne depoter etter behov. Som /etc/pkger reservert for offisielle FreeBSD-depoter, trenger du en annen katalog. Den tradisjonelle plasseringen er /usr/local/etc/pkg/repos. Hvis du vil bruke en annen katalog, må du angi en plassering pkg.confmed REPO_DIRSalternativet. Den lokale depotkatalogen eksisterer ikke som standard, så du må opprette den med mkdir -p /usr/local/etc/pkg/repos. Sett dine egne depotkonfigurasjoner i den katalogen.
Eksempel på pkgunderkommandoer
Denne delen vil liste noen av de mest brukte underkommandoene som du mest sannsynlig vil bruke når du administrerer en FreeBSD-server:
# Installs a package without asking any questions
pkg install -y package
# Makes a backup of the local package database
pkg backup
# Lists all installed packages
pkg info
# Shows extended information for a package
pkg info package
# Searches package repository
pkg search -i package
# Shows packages with known security vulnerabilities
pkg audit -F
# Shows which package owns the named file
pkg which file
# Removes unused packages
pkg autoremove
# Uninstalls a package
pkg delete package
# Removes cached packages from /var/cache/pkg
pkg clean -ay
# Updates local copy of the package catalog
pkg update
# Upgrades installed packages to their latest version
pkg upgrade
# Checks the integrity of all your packages
pkg check -saq
# Verifies that a package's files are unaltered
pkg check -s nginx
# Shows what files came with the package
pkg info -l nginx
# Lists non-automatic packages
pkg prime-list
Viktige filer og kataloger
- Den
pkgkonfigurasjonsfil -/usr/local/etc/pkg.conf
- Katalog reservert for offisielle FreeBSD-depoter -
/etc/pkg
- FreeBSD arkivfil -
/etc/pkg/FreeBSD.conf
- Tradisjonell plassering for tilpassede depoter -
/usr/local/etc/pkg/repos
- Pakkebufferkatalog -
/var/cache/pkg
- SQLite database -
/var/db/pkg/local.sqlite
Sammendrag
FreeBSD tilbyr to komplementære teknologier for å installere tredjepartsprogramvare: FreeBSD Ports Collection, for installasjon fra kilde og pakker, for installasjon fra forhåndsbygde binærfiler. Ettersom FreeBSD flytter systemet mer avgjørende mot universell pakkeadministrasjon, prøv å administrere tredjepartsprogramvare med så langt pkgdet er mulig. Unngå å bruke porter med mindre programvaren du ønsker ikke har noen pakket versjon eller du må tilpasse kompileringstidsalternativer.