Vraag Hoe controleer ik of een pakket op mijn server is geïnstalleerd?


Ik heb onlangs Ubuntu Server editie 13.10 (Saucy Salamander) geïnstalleerd. Maar ik ben een beetje een probleem tegengekomen.

Aan het einde van de installatie vraagt ​​het u om verschillende extra pakketten, of u deze nu wilt of niet, zoals de OpenSSH-server en de host van de virtuele machine. Dit is waar ik naar kijk:

Enter image description here

Nu is mijn probleem dat ik me niet kan herinneren of ik het selectievakje "virtuele machushost" heb aangevinkt. Hoe controleer ik of mijn server de bijbehorende pakketten heeft?

Welke pakketten worden geleverd bij de host van de virtuele machine?


126
2018-02-19 21:12


oorsprong




antwoorden:


Om alle geïnstalleerde pakketten te tonen

Hier is "minder" een eenvoudige tekstlezer die wordt gebruikt om door de lijst met pakketten te bladeren in een nieuwe buffer die wordt geopend in het bestaande terminalvenster. De lijst zal niet worden gemengd met andere terminalopdrachten en uitvoer. Druk op 'q' om terug te keren naar terminal prompt. Zie "man less" voor meer info.

dpkg -l | less

Om te controleren of een pakket is geïnstalleerd of niet:

dpkg -l {package_name}
dpkg -l vlc

Controleren of het pakket is geïnstalleerd of niet (bijvoorbeeld vlc). Installeer het pakket als het is geïnstalleerd:

dpkg -l | grep vlc

Toon de locatie waar het pakket is geïnstalleerd. De "-S" (hoofdletter S) staat voor "zoeken"

sudo dpkg -S {package_name}
sudo dpkg -S skype

Grep gebruiken om te zoeken:

dpkg -l | grep {keywords}
dpkg -l | grep pdf

176
2018-02-20 09:12



Wat is het verschil tussen dit en dpkg-query -l "packagename" - heypaleblue
Niet afhankelijk van de afsluitcode van dpkg -l packagename, zoals het zou kunnen terugkeren met een 0 exit-code, zelfs als het pakket niet volledig is geïnstalleerd - zie: github.com/bitrise-io/bitrise/issues/433 - Viktor Benei
dpkg -l | cut -d " " -f 3 | grep "^vlc" om alle pakketnamen te tonen die beginnen met vlc - anatoly techtonik
Ter info: dit werkt niet voor metapakketten, omdat ze niet rechtstreeks correleren met een dpkg. Uw antwoord beantwoordt de vraag zoals gevraagd. - mtalexan


Gebruik dpkg

Dit commando is de debian pakketbeheerder.

U kunt alle geïnstalleerde pakketten weergeven met

dpkg -l

U kunt details voor een specifiek pakket bekijken met

dpkg -p packagename

En gebruik om te leren of het is geïnstalleerd

dpkg -s packagename | grep Status

U kunt leren welk pakket de gewenste software bevat

apt-cache search name*  

In uw geval zou u deze opdracht moeten gebruiken om de gewenste pakketnaam te doorzoeken

apt-cache search virtual machine host 

24
2018-02-20 09:10





apt -qq list PACKAGE kan ook worden gebruikt om te controleren of het PAKKET is geïnstalleerd.

Als deze is geïnstalleerd, wordt er iets afgedrukt als (met [installed] aan het einde van de regel):

$ apt -qq list awscli
awscli/stable,now 1.4.2-1 all [installed]

Indien niet geïnstalleerd, zal de uitvoer zijn:

$ apt -qq list awscli
awscli/stable 1.4.2-1 all

20
2017-09-11 13:54



U kunt een ster aan het einde van de pakketnaam voor een jokerteken plaatsen. - Brannon
U kunt ook de - geïnstalleerde optie voor die opdracht gebruiken om te beperken tot overeenkomsten die daadwerkelijk zijn geïnstalleerd. - mtalexan
Wat is het -qq voor? Het lijkt identiek te werken zonder het, en die optie staat niet in de handleiding man apt - Gabriel Staples
@GabrielStaples Het lijkt op de apt list opdracht is nog niet volledig gedocumenteerd. Sommige snelle tests op 16.04 lijken erop te wijzen -q is een synoniem voor --quiet keuze. De eerste -q voorkomt dat het woord "Klaar" wordt afgedrukt. De tweede voorkomt ook dat "Listing ..." wordt afgedrukt. - Anthony Geoghegan


Ik heb een manier gevonden om te controleren of het pakket is geïnstalleerd met de opdracht dpkg-query en geen leidingen.

Ik zocht naar een dergelijke oplossing tijdens het schrijven van een taak voor ansible playbook.

Dus je kunt zoiets als dit doen:

/usr/bin/dpkg-query --show --showformat='${db:Status-Status}\n' '<your package name>'

Dit is gewoon een andere manier om het ding te doen.


12
2017-09-01 19:47



pijpen in ansible kunnen worden gebruikt met de shell module. - sjas


Ik schrijf een nieuw antwoord als tasksel 'Taaknamen' NIET verschijnen in dpkg of apt queries. Dit betekent dat de andere antwoorden onvolledig (of fout) zijn.

"Ik kan het me niet herinneren Als ik het selectievakje 'virtuele machushost' heb aangevinkt .."

Controleer of er een sterretje bij de naam staat na opnieuw te worden uitgevoerd sudo tasksel.
(of een ' ik 'als het loopt tasksel --list-tasks).

Als je dit niet ziet, dan jij waarschijnlijk heb niet de taak meta-pakket'geïnstalleerd.


"Hoe controleer ik of mijn server de bijbehorende pakketten heeft?"

Als je wilt weten wat er is geïnstalleerd onder het taskspakket metapakket Virtual Machine Host:

tasksel --list-tasks

(in jouw geval tasksel --list-tasks | grep virt is genoeg)

Dit geeft de juiste taak naam en een indicatie of het is geïnstalleerd.

In uw geval is deze taaknaam virt-host.


"Welke pakketten worden geleverd bij de host van de virtuele machine?"

Zoek de taskseltaaknaam uit de laatste opdracht.
Dit is nodig voor het volgende commando:

tasksel --task-packages virt-host

Dit geeft een opsomming van het individuele Tasksel-metapakket (aangeduid met de toegevoegde '^') waaruit de naam bestaat.
In jouw geval is dat zo virt-host^.

Zodra u de juiste meta-naam hebt gevonden, kunt u apt gebruiken:

 apt show virt-host^ | grep "Package:"

(of apt-cache show  ... als apt show werkt niet.)

Dit toont alle pakketten die deel uitmaken van het gegeven metapakket.

Dan:

 dpkg -l {each individual pkg name listed above}

Dit zal u vertellen of het individuele pakket is geïnstalleerd / gedeïnstalleerd (genoteerd bij 2e letter: 'i' status betekent geïnstalleerd). Doe dit voor alle pakketten die worden vermeld onder het taak / metapakket.

Dit zou de oorspronkelijke vragen moeten beantwoorden.

Kanttekening: /usr/share/tasksel/descs/ubuntu-tasks.desc bevat ook beschrijvingen van Tasksel-metapakketten. Als jij: grep "virt" /usr/share/tasksel/descs/ubuntu-tasks.desc het toont de juiste naam van het APT-metapakket. (In jouw geval is dit zo ubuntu-virt-server). Je kan ook gebruiken apt opdrachten met deze meta-naam.

Als je taakpakketten wilt verwijderen, komt dit een beetje in het onkruid. Raadpleeg https://askubuntu.com/a/88897/169878 of een aantal andere antwoorden die er zijn.

Let op: "meta" apt-pakketten komen niet overeen met Tasksel-pakketnamen. Raadpleeg Tasksel Community-pagina voor meer informatie.


4
2017-10-19 15:17



Beide vragen worden correct beantwoord. Als je een downmoot geeft, een reden geeft, of vertelt me ​​waarom dat niet zo is. - bshea


Gebruik tasksel (sudo apt-get install tasksel als je dit nog niet hebt) en uitvoeren tasksel --list-tasks.

tasksel zal een lijst met taken afdrukken, en er zal een i naast elke taak die is geïnstalleerd, en een u naast elke taak die niet is geïnstalleerd.

Als u de taak wilt installeren, gebruikt u tasksel install <task>. De naam van de taak waarnaar u op zoek bent virt-host.

De items voor softwareselectie worden "taken" genoemd.


2
2018-02-19 21:31



bedankt dat je mij de naam van de taak hebt verteld, dat was een van mijn problemen, ik wist niet zeker welk pakket ik moest zoeken. - D.Zou