Debian

Pakket zoeken in Debian

Pakket zoeken in Debian

Debian 9, met de codenaam 'Stretch', heeft maar liefst 68.000+ pakketten. Of het nu gaat om games, lettertypen, editors, databases of ontwikkeltools, de kans is groot dat je het daar vindt. De sleutel is echter om vind het. Tenzij je de exacte pakketnaam weet, is het vinden van een bepaald pakket in zo'n grote repository als zoeken naar een speld in een hooiberg. Soms is de pakketnaam anders dan de naam van het programma. Zo is iostat, een handig programma voor het rapporteren van CPU- en schijf-I/O-statistieken, verpakt onder de naam sysstat. Andere keren weet u noch de pakketnaam, noch de opdrachtnaam. In plaats daarvan weet je alleen de functie ervan, wat het zou moeten doen.

Om naar pakketten te zoeken, bestaan ​​er verschillende methoden met verschillende niveaus van kracht en bruikbaarheid. De Debian-website heeft een lijst van alle Debian-pakketten. U kunt dus de zoekfunctie van uw browser gebruiken of de lijst downloaden als een gecomprimeerd tekstbestand en grep . gebruiken. Hoe dan ook, er is veel handmatig werk nodig om de lijst te filteren. Het goede nieuws is dat er krachtige geautomatiseerde tools beschikbaar zijn om het filteren te versnellen.

Debian biedt zowel grafische als opdrachtregelpakketbeheerders om pakketten te zoeken en te filteren. Op GUI gebaseerde tools, zoals Synaptic, blinken over het algemeen uit in bruikbaarheid. Niet alle machines, vooral productieservers, hebben echter de grafische desktop geïnstalleerd. Voor die machines is Synaptic gewoon geen optie. In dit bericht richten we ons op opdrachtregelprogramma's om te zoeken naar Debian-pakketten.


Achtergrond informatie

Systeembeheerders van Debian definiëren de bronnen van pakketten in het bestand /etc/apt/sources.lijst. Het bestand specificeert onder andere dat alleen pakketten van een bepaalde Debian-release (e.g., Stretch vs Buster), en van bepaalde componentcategorieën (e.g., main, contrib en non-free) kunnen worden gedownload. Metadata van alle in aanmerking komende pakketten worden gedownload naar de lokale pakketcache, via het commando apt-get update.

Upstream-pakketbeheerders kunnen op elk moment pakketten toevoegen en verwijderen. Om ervoor te zorgen dat uw lokale pakketcache de nieuwste metadata-informatie heeft, moet u de cache bijwerken ('apt-get update') voordat u een zoekopdracht uitvoert.

Nu u klaar bent om te zoeken, kunt u dit als gewone gebruiker doen. Het is niet nodig om root te worden om een ​​zoekopdracht uit te voeren. Dit komt omdat een zoekopdracht alleen query's maakt, geen wijzigingen, in de pakketcache. Bovendien hoeft de machine niet eens online te zijn omdat de zoekopdrachten alleen toegang hebben tot de lokale cache, niet tot externe opslagplaatsen.

De reikwijdte van een zoekopdracht is beperkt tot wat is gespecificeerd in de bronnen.lijst bestand. Als het bestand bijvoorbeeld alleen hoofd- en contrib-componentpakketten toestaat, zullen uw zoekopdrachten geen niet-vrije pakketten opleveren.

Samenvatten:

  1. Voordat u een zoekopdracht uitvoert, voert u 'apt-get update' uit om de pakketcache te vernieuwen.
  2. U kunt een zoekopdracht uitvoeren als een gewone gebruiker (geen root-privilege vereist).
  3. Er is geen internetverbinding nodig om een ​​zoekopdracht uit te voeren.
  4. Zoekresultaten zijn beperkt tot het bereik gedefinieerd door de bronnen.lijst bestand.

apt-cache

Als u de pakketnaam kent, zij het gedeeltelijk, kunt u de gedeeltelijke naam als een argument voor reguliere expressies doorgeven aan apt-cache. U weet bijvoorbeeld dat de pakketnaam een ​​variatie is op het thema dos naar unix, zoals dostounix, dos2unix, dos-to-unix, enz. Het zoekcommando en de uitvoer zijn als volgt:

$ apt-cache zoeken --names-only dos.+unix
dos2unix - converteer regeleinden van tekstbestanden tussen CRLF en LF

Opmerkingen:

  1. -alleen namen (of -n in het kort) geeft aan dat alleen pakketnamen, geen beschrijvingen, overeenkomen. (De standaard is zowel naam als beschrijving).)
  2. do's.+unix is ​​een reguliere expressie die overeenkomt met de pakketnaam dos2unix. Raadpleeg regex(7) voor hulp bij syntaxis.

Wat doe je als je alleen weet wat het pakket doet, i.e., zijn functie, maar niet zijn naam? In dit geval bent u op zoek naar een programma om tekstbestanden van het DOS-formaat naar UNIX te converteren. De te gebruiken zoekopdracht en de uitvoer zijn de volgende:

$  apt-cache search convert dos unix
dos2unix - converteer regeleinden van tekstbestanden tussen CRLF en LF
flip - converteer regeleinden van tekstbestanden tussen Unix- en DOS-formaten
fondu - converteren tussen Mac- en UNIX-lettertypeformaten
tofrodos - Converteert DOS <-> Unix-tekstbestanden, alias tofromdos

Standaard probeert apt-cache de zoektermen te matchen met zowel de pakketnaam als de lange beschrijving van het pakket. De hoop hier is dat de functionele trefwoorden overeenkomen met de woorden die de pakketbeheerder gebruikt in zijn lange beschrijving. Merk op dat meerdere trefwoorden (convert, dos, unix) samen AND-ed zijn.

geschikt

De opdracht apt is een nieuwere tool voor pakketbeheer die de basisfunctionaliteiten van apt-get en apt-cache samenvoegt. Het is ontworpen om interactief te worden gebruikt, in plaats van in een script. De uitvoer van apt is bijvoorbeeld gekleurd om de leesbaarheid te verbeteren. Afgezien van de esthetiek, delen de apt- en apt-cache-opdrachten een vergelijkbare syntaxis, inclusief opdrachtopties.

Het onderstaande voorbeeld zoekt naar een pakket door te matchen met de reguliere expressie dos.+unix, alleen tegen pakketnamen (standaard, tegen zowel naam als beschrijving).

$  apt search --names-only dos.+unix
Sorteren... Klaar
Zoeken in volledige tekst... Klaar
dos2unix/stable, nu 7.3.4-3 amd64 [geïnstalleerd]
converteer regeleinden van tekstbestanden tussen CRLF en LF

apt-bestand

Hoewel apt-cache (en apt) u kunnen helpen bij het zoeken naar een pakket door functionele trefwoorden te matchen, is de zoekopdracht vaak wisselvallig. Succes hangt te veel af van hoe de pakketbeheerder de lange beschrijving van het pakket schrijft. In werkelijkheid kunt u echter aanvullende informatie over het pakket kennen, zoals de naam van de opdracht of een bestand dat in het pakket is opgenomen. De tool die je dan moet gebruiken is apt-file.

De opdracht apt-file is niet standaard geïnstalleerd op een Debian-systeem. Om te installeren, voer het uit als root:

$ apt-get install apt-bestand

Voordat u apt-file voor de eerste keer uitvoert, moet u de pakketcache bijwerken door de lokale pakketcache bij te werken ('apt-get update').

Stel dat u het pakket wilt vinden dat het iostat-commando bevat:. De te gebruiken opdracht en de verkorte uitvoer zijn als volgt:

$ apt-bestand zoeken iostat
…   <12 lines snipped>…
linux-handleiding-4.9: /usr/share/man/man9/rpc_count_iostats_metrics.9.gz
linux-handleiding-4.9: /usr/share/man/man9/rpc_free_iostats.9.gz
manpages-fr-extra: /usr/share/man/fr/man8/nfsiostat.8.gz
munin-plugins-extra: /usr/share/munin/plugins/iostat
munin-plugins-extra: /usr/share/munin/plugins/iostat_ios
nagios-plugin-check-multi: /usr/share/doc/nagios-plugin-check-multi/examples/nagiostats.cmd
nfs-common: /usr/sbin/nfsiostat
nfs-common: /usr/share/man/man8/nfsiostat.8.gz
nixstatsagent: /usr/lib/python2.7/dist-pakketten/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-bestand werkt door het argument iostat als een subtekenreeks te vergelijken met de padnamen van alle bestanden in een pakket. De bovenstaande zoekopdracht levert 46 hits op, i.e., in totaal 46 bestanden in de lokale cache bevatten iostat in hun padnamen, wat veel is om handmatig te onderzoeken.

Om de zoekopdracht te verfijnen, verandert u het argument in een reguliere expressie met behulp van de vlag -x.

$  apt-file -x  search   '/iostat$'
munin-plugins-extra: /usr/share/munin/plugins/iostat
sysstat: /usr/bin/iostat

De reguliere expressie, /iostat$, komt alleen overeen met padnamen die precies eindigen op iostat. Raadpleeg perlreref(1) voor de syntaxis van reguliere expressies.

De nieuwe uitvoer heeft slechts 2 treffers en je kunt snel de naam van het pakket (sysstat) aflezen dat het iostat-commando bevat.


Conclusie

Linux-distributies in het algemeen en Debian in het bijzonder staan ​​bekend om hun enorme officiële pakketopslagplaatsen. Maar het kan een hele uitdaging zijn om degene te vinden die je zoekt tussen tienduizenden pakketten. U kunt er zeker van zijn dat u de exacte pakketnaam niet hoeft te weten. De opdrachten apt-cache en apt kunnen pakketten filteren op basis van trefwoorden in de pakketbeschrijving. Als u de naam van het binaire programmabestand weet, kan de opdracht apt-file het ook gebruiken om pakketten te identificeren die een bestand met dezelfde naam bevatten.

AppyMouse trackpad en muisaanwijzer op het scherm voor Windows-tablets
Tabletgebruikers missen vaak de muisaanwijzer, vooral wanneer ze gewend zijn om de laptop te gebruiken. Het touchscreen Smartphones en tablets hebben ...
Middelste muisknop werkt niet in Windows 10
De middelste muis knop helpt u door lange webpagina's en schermen met veel gegevens te bladeren. Als dat stopt, zul je uiteindelijk het toetsenbord ge...
Hoe de linker- en rechtermuisknop op Windows 10 pc te veranderen
Het is nogal een norm dat alle computermuisapparaten ergonomisch zijn ontworpen voor rechtshandige gebruikers. Maar er zijn muisapparaten beschikbaar ...