Debian 9, kodenavnet 'Stretch', har et enormt lager med 68 000+ pakker. Enten det er spill, skrift, redaktører, databaser eller utviklingsverktøy, er sjansen for at du finner den der. Nøkkelen er imidlertid å finne den. Med mindre du vet det eksakte pakkenavnet, er det å finne en bestemt pakke i et så stort depot som å lete etter en nål i en høystak. Noen ganger er pakkenavnet forskjellig fra navnet på programmet. For eksempel er iostat, et nyttig program for rapportering av CPU- og disk I / O-statistikk, pakket under navnet sysstat. Andre ganger kjenner du verken pakkenavnet eller kommandonavnet. I stedet vet du bare dens funksjon, hva den skal gjøre.
For å se etter pakker finnes det flere metoder med varierende nivåer av kraft og brukervennlighet. Debian-nettstedet har en liste over alle Debian-pakker. Så du kan bruke nettleserens søkefunksjon, eller laste ned listen som en komprimert tekstfil og bruke grep. Uansett kreves det mye manuelt arbeid for å filtrere listen. Den gode nyheten er at kraftige automatiserte verktøy er tilgjengelige for å øke hastigheten på filtreringen.
Debian tilbyr både grafiske og kommandolinjepakkeforvaltere for å søke og filtrere pakker. GUI-baserte verktøy, som Synaptic, utmerker seg generelt i brukervennlighet. Imidlertid har ikke alle maskiner, spesielt produksjonsservere, det grafiske skrivebordet installert. For disse maskinene er Synaptic rett og slett ikke et alternativ. I dette innlegget fokuserer vi på kommandolinjeverktøy for å søke etter Debian-pakker.
Bakgrunnsinformasjon
Debian-systemadministratorer definerer kildene til pakker i filen / etc / apt / sources.liste. Blant annet spesifiserer filen at bare pakker fra en bestemt Debian-utgivelse (f.eks.g., Stretch vs Buster), og fra visse komponentkategorier (f.eks.g., main, contrib og non-free) kan lastes ned. Metadata for alle kvalifiserte pakker lastes ned til den lokale pakkecachen via kommandoen apt-get update.
Oppstrøms pakkeholdere kan legge til og fjerne pakker når som helst. For å sikre at den lokale pakkebufferen har den nyeste metadatainformasjonen, bør du oppdatere hurtigbufferen ('apt-get update') før du gjør et søk.
Nå som du er klar til å søke, kan du gjøre det som en vanlig bruker. Det er ikke nødvendig å bli rot for å utføre et søk. Dette er fordi et søk bare gjør spørsmål, ikke endringer, i pakkebufferen. I tillegg trenger maskinen ikke engang å være online fordi søkekommandoer bare har tilgang til den lokale hurtigbufferen, ikke eksterne lagringssteder.
Omfanget av et søk er begrenset til det som er spesifisert i kildene.listefil. For eksempel, hvis filen bare tillater hoved- og bidragskomponentpakker, vil ikke søkene dine returnere ikke-gratis pakker.
Å oppsummere:
- Før du utfører et søk, kjør 'apt-get update' for å oppdatere pakkebufferen.
- Du kan kjøre en søkekommando som en vanlig bruker (ingen root-rettigheter kreves).
- Ingen Internett-tilkobling er nødvendig for å kjøre en søkekommando.
- Søkeresultater er begrenset til omfanget som er definert av kildene.listefil.
apt-cache
Hvis du vet pakkenavnet, om enn delvis, kan du sende delnavnet som et vanlig uttrykksargument til apt-cache. For eksempel vet du at pakkenavnet er en variant av temaet dos til unix, for eksempel dostounix, dos2unix, dos-to-unix, etc. Søkekommandoen og utgangen er som følger:
$ apt-cache-søk - kun navn.+unixdos2unix - konverter tekstfilens endinger mellom CRLF og LF
Merknader:
- -bare navn (eller kort sagt -n) spesifiserer at bare pakkenavn, ikke beskrivelser, samsvarer. (Standard er både navn og beskrivelse.)
- dos.+unix er et vanlig uttrykk som samsvarer med pakkenavnet dos2unix. Se regex (7) for syntakshjelp.
Hva gjør du hvis du bare vet hva pakken gjør, jeg.e., funksjonen, men ikke navnet? I dette tilfellet leter du etter et program for å konvertere tekstfiler fra DOS-format til UNIX. Søkekommandoen som skal brukes og utdataene er følgende:
$ Apt-cache søk konverterer dos unixdos2unix - konverter tekstlinjeendelser mellom CRLF og LF
flip - konverter tekstfillinjeendelser mellom Unix og DOS-formater
fondu - konverter mellom Mac og UNIX skriftformater
tofrodos - Konverterer DOS <-> Unix tekstfiler, alias tofromdos
Som standard prøver apt-cache å matche søkeordene mot både pakkenavnet og pakkens lange beskrivelse. Håpet her er at de funksjonelle nøkkelordene vil matche ordene som pakkeholderen bruker i den lange beskrivelsen. Vær oppmerksom på at flere nøkkelord (konvertere, dosere, unix) blir AND-ed sammen.
apt
Apt-kommandoen er et nyere verktøy for pakkehåndtering som slår sammen de grunnleggende funksjonene til apt-get og apt-cache. Den er designet for å brukes interaktivt, i stedet for i et skript. For eksempel er apt-utgang fargelagt for å forbedre lesbarheten. Estetikk til side, apt- og apt-cache-kommandoene deler en lignende syntaks inkludert kommandoalternativer.
Eksemplet nedenfor søker etter en pakke ved å matche doseringsreguleringsuttrykket.+unix, kun mot pakkenavn (som standard, både mot navn og beskrivelse).
$ Apt søk - kun navn.+unixSortering… Ferdig
Fulltektssøk ... Ferdig
dos2unix / stabil, nå 7.3.4-3 amd64 [installert]
konvertere tekstfillinjeendelser mellom CRLF og LF
apt-fil
Selv om apt-cache (og apt) kan hjelpe deg med å lete etter en pakke ved å matche funksjonelle nøkkelord, blir søket ofte rammet. Suksess avhenger for mye av hvordan pakkeholderen skriver pakkens lange beskrivelse. I virkeligheten kan du imidlertid vite ytterligere informasjon om pakken, for eksempel navnet på kommandoen eller en fil som er inkludert i pakken. Verktøyet som skal brukes da er apt-file.
Apt-file-kommandoen er ikke installert som standard på et Debian-system. For å installere, kjør som root:
$ apt-get install apt-fileFør du kjører apt-file for første gang, oppdaterer du pakkebufferen ved å oppdatere den lokale pakkebufferen ('apt-get update').
Anta at du vil finne pakken som inneholder kommandoen iostat. Kommandoen for bruk og forkortet utgang er som følger:
$ apt-filsøk iostat.. <12 lines snipped>..
linux-manual-4.9: / usr / share / man / man9 / rpc_count_iostats_metrics.9.gz
linux-manual-4.9: / usr / share / man / man9 / rpc_free_iostats.9.gz
manpages-fr-extra: / usr / share / man / fr / man8 / nfsiostat.8.gz
munin-plugins-ekstra: / usr / share / munin / plugins / iostat
munin-plugins-ekstra: / usr / share / munin / plugins / iostat_ios
nagios-plugin-check-multi: / usr / share / doc / nagios-plugin-check-multi / eksempler / nagiostats.cmd
nfs-common: / usr / sbin / nfsiostat
nfs-common: / usr / share / man / man8 / nfsiostat.8.gz
nixstatsagent: / usr / lib / python2.7 / dist-packages / nixstatsagent / plugins / iostat.py
sysstat: / usr / bin / cifsiostat
sysstat: / usr / bin / iostat
sysstat: / usr / share / man / man1 / cifsiostat.1.gz
sysstat: / usr / share / man / man1 / iostat.1.gz
zsh-common: / usr / share / zsh / functions / Completion / Unix / _iostat
apt-file fungerer ved å matche argumentet iostat som en substring mot banenavnene til alle filene i en pakke. Ovennevnte søk returnerer 46 treff, dvs.e., Totalt 46 filer i den lokale hurtigbufferen inneholder iostat i banenavnene sine, noe som er mye å undersøke manuelt.
For å begrense søket, gjør argumentet om til et vanlig uttrykk ved å bruke -x-flagget.
$ Apt-file -x search '/ iostat $'munin-plugins-ekstra: / usr / share / munin / plugins / iostat
sysstat: / usr / bin / iostat
Regulært uttrykk, / iostat $, samsvarer bare med stienavn som slutter nøyaktig med iostat. For syntaks for vanlig uttrykk, se perlreref (1).
Den nye utgangen har bare 2 treff, og du kan raskt lese av navnet på pakken (sysstat) som inneholder iostat-kommandoen.
Konklusjon
Linux-distribusjoner generelt og Debian, spesielt, er kjent for sine enorme offisielle pakkelager. Men å finne den du vil ha blant titusenvis av pakker, kan være ganske utfordrende. Vær trygg på at du ikke trenger å vite det nøyaktige pakkenavnet. Kommandoene apt-cache og apt kan filtrere pakker basert på nøkkelord i pakkebeskrivelsen. Alternativt, hvis du vet navnet på programmets binære fil, kan apt-file-kommandoen bruke den til å identifisere pakker som inneholder en fil med samme navn.