패키지가 서버에 설치되어 있는지 어떻게 확인합니까?


174

최근에 Ubuntu Server edition 13.10 (Saucy Salamander)을 설치했습니다. 그러나 나는 약간의 문제에 부딪쳤다.

설치가 끝나면 OpenSSH 서버 및 가상 머신 호스트와 같이 원하는지 여부에 관계없이 몇 가지 추가 패키지를 요청합니다. 내가보고있는 것은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

이제 내 문제는 "가상 컴퓨터 호스트"확인란을 선택했는지 기억할 수 없다는 것입니다. 서버에 해당 패키지가 있는지 어떻게 확인합니까?

가상 머신 호스트에는 어떤 패키지가 제공됩니까?


1
$ apt-cache policy <package-name>예 :$ apt-cache policy dillo
Daniel

답변:


230

옵션이있는 모든 dpkg 명령에 대해 알고 있습니까? 아래 링크에서 읽으십시오.

데비안 기반 Linux 서버를 관리하기위한 15 개의 dpkg 명령

설치된 모든 패키지를 나열하려면

여기서 "less"는 기존 터미널 창에서 열리는 새 버퍼에서 패키지 목록을 스크롤하는 데 사용되는 간단한 텍스트 리더입니다. 이 목록은 다른 터미널 명령 및 출력과 혼합되지 않습니다. 터미널 프롬프트로 돌아가려면 'q'를 누르십시오. 자세한 내용은 "man less"를 참조하십시오.

dpkg -l | less

패키지가 설치되어 있는지 확인하려면 :

dpkg -l {package_name}
dpkg -l vlc

패키지가 설치되지 않았거나 경우 (예를 들어 확인하려면 vlc). 설치된 경우 패키지를 시작하십시오.

dpkg -l | grep vlc

패키지가 설치된 위치를 표시하십시오. "-S"(자본 S)는 "검색"을 나타냅니다.

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

Grep을 사용하여 검색하려면 :

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

1
이것과 dpkg-query -l "packagename"
heypaleblue

4
dpkg -l packagename패키지가 완전히 설치되지 않은 경우에도 종료 코드가 0으로 리턴 될 수 있으므로 종료 코드에 의존하지 마십시오 . 다음을 참조하십시오 : github.com/bitrise-io/bitrise/issues/433
Viktor Benei

dpkg -l | cut -d " " -f 3 | grep "^vlc"로 시작하는 모든 패키지 이름 표시vlc
anatoly techtonik

참고로, 메타 패키지는 dpkg와 직접 관련이 없으므로 메타 패키지에서는 작동하지 않습니다. 당신의 응답은 그래도 질문에 대답합니다.
mtalexan

34

사용하다 dpkg

이 명령은 데비안 패키지 관리자입니다.

설치된 패키지를 모두 나열 할 수 있습니다

dpkg -l

당신은 특정 패키지에 대한 세부 정보를 볼 수 있습니다

dpkg -p packagename

설치되어 있는지 알아 보려면 사용하십시오.

dpkg -s packagename | grep Status

원하는 소프트웨어가 포함 된 패키지를 배울 수 있습니다

apt-cache search name*  

귀하의 경우이 패키지를 사용하여 원하는 패키지 이름을 검색해야합니다

apt-cache search virtual machine host 

29

apt -qq list PACKAGE PACKAGE가 설치되어 있는지 확인하는 데에도 사용할 수 있습니다.

설치되면 다음과 같이 인쇄됩니다 ( [installed]줄 끝에).

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

설치되지 않은 경우 출력은 다음과 같습니다.

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

1
와일드 카드의 패키지 이름 끝에 별표를 넣을 수 있습니다.
Brannon

3
해당 명령에 --installed 옵션을 사용하여 실제로 설치된 것과 일치하도록 제한 할 수도 있습니다.
mtalexan

2
무엇입니까 -qq? 그것 없이는 동일하게 작동하는 것 같고, 그 옵션은 매뉴얼에 없습니다man apt
Gabriel Staples

3
@GabrielStaples apt list명령이 아직 완전히 문서화되지 않은 것 같습니다 . 16.04의 일부 빠른 테스트 -q는 이것이 --quiet옵션 의 동의어 임을 나타냅니다 . 첫 번째 -q는 "완료"라는 단어가 인쇄되는 것을 방지합니다. 두 번째는 또한 "Listing ..."이 인쇄되는 것을 방지합니다.
Anthony Geoghegan

14

파이프가없는 dpkg-query 명령으로 패키지 설치를 확인하는 방법을 찾았습니다.

놀라운 플레이 북에 대한 작업을 작성하는 동안 이러한 솔루션을 검색했습니다.

따라서 다음과 같이 할 수 있습니다.

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

이것은 일을하는 또 다른 방법 일뿐입니다.


shell모듈 과 함께 파이프를 사용할 수 있습니다 .
sjas

4

Tasksel '작업 이름'이 표시되지 dpkg않거나 apt쿼리 로 새 답변을 작성하고 있습니다. 다른 답변이 불완전하다는 것을 의미합니다.

" '가상 컴퓨터 호스트'확인란을 선택한 경우 기억이 나지 않습니다."

다시 실행 한 후 이름 옆에 별표가 있는지 확인하십시오 sudo tasksel.
(또는 실행중인 경우 ' i ' tasksel --list-tasks).

이 메시지가 표시되지 않으면 'tasksel meta-package '가 설치되어 있지 않은 것입니다 .


".. 서버에 해당 패키지가 있는지 어떻게 확인합니까?"

Virtual Machine Host tasksel 메타 패키지 아래에 설치된 내용을 찾으려면 다음을 수행하십시오.

tasksel --list-tasks

(당신의 경우 tasksel --list-tasks | grep virt충분합니다)

적절한 작업 이름 과 설치 여부를 나타냅니다.

귀하의 경우이 tasksel 이름은 virt-host입니다.


"가상 머신 호스트에는 어떤 패키지가 제공됩니까?"

마지막 명령에서 tasksel 태스크 이름을 찾으십시오.
다음 명령에 필요합니다.

tasksel --task-packages virt-host

여기에는 이름을 구성하는 개별 Tasksel 메타 패키지 ( '^'로 표시)가 나열됩니다.
귀하의 경우에는 virt-host^입니다.

적절한 메타 이름을 찾으면 apt를 사용할 수 있습니다.

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

(또는 apt-cache show ...작동 apt show하지 않는 경우 )

주어진 메타 패키지를 구성하는 모든 패키지가 표시됩니다.

그때:

 dpkg -l {each individual pkg name listed above}

개별 패키지의 설치 / 제거 여부를 알려줍니다 (두 번째 문자 : 'i'상태는 설치됨을 나타냄). 작업 / 메타 패키지 아래에 나열된 모든 패키지에 대해이 작업을 수행하십시오.

원래 질문에 답해야합니다.

참고 : /usr/share/tasksel/descs/ubuntu-tasks.desc에는 Tasksel 메타 패키지에 대한 설명도 포함되어 있습니다. 그렇다면 : grep "virt" /usr/share/tasksel/descs/ubuntu-tasks.desc적절한 APT 메타 패키지 이름이 표시됩니다. (귀하의 경우 이것은입니다 ubuntu-virt-server). apt이 메타 이름과 함께 명령을 사용할 수도 있습니다 .

tasksel 패키지를 제거하려면 잡초에 약간 들어가게됩니다. https://askubuntu.com/a/88897/169878 또는 다른 많은 답변을 참조 하십시오 .

"meta"apt 패키지는 Tasksel 패키지 이름과 일치하지 않습니다. 자세한 내용은 Tasksel 커뮤니티 페이지 를 참조하십시오.


1
두 가지 질문에 모두 올바르게 대답했습니다. 공감할 경우 이유를 밝히거나 왜 그렇지 않은지 말해주십시오.
bshea

3

tasksel을 사용하고 ( sudo apt-get install tasksel아직없는 경우) 실행하십시오 tasksel --list-tasks.

tasksel은 작업 목록을 인쇄하며, i설치된 u각 작업 옆에 설치되지 않은 각 작업 옆에 다음이 있습니다.

작업을 설치하려면을 사용하십시오 tasksel install <task>. 찾고있는 작업의 이름은입니다 virt-host.

소프트웨어 선택 항목을 "작업"이라고합니다.


내 문제 중 하나 인 작업 이름을 알려 주셔서 감사합니다. 어떤 패키지를 찾아야할지 확실하지 않았습니다.
D.Zou

2

누군가 관심이 있다면 패키지 나 응용 프로그램 목록에서 자동으로 설치하거나 이미 설치되어 있는지 확인할 수있는 작은 스크립트를 만들었습니다.

#!/bin/bash
apt -qq list YOUR_LIST_GOES_HERE | grep -v "installed" | awk -F/ '{print $1}' > /root/list.txt
packages=$(cat /root/list.txt)
grep -q '[^[:space:]]' < /root/list.txt
CHECK_LIST=$?
if [[ $CHECK_LIST -eq 1 ]]; then
echo "Your packages are already installed"
else
echo "Installing packages"
apt-get  install -y $packages
fi

그것이 누군가를 돕기를 바랍니다.


2

더 간단한 해결책 :

apt list설치된 패키지를 나열 하는 명령이 있습니다. 당신은 또한 특정 패키지를 검색 할 수 있습니다

apt list <package>

자세한 내용 man apt은 참조하십시오. 정확한 패키지 이름을 모르면 그 apt search뒤에 일부를 사용 하여 관련 패키지 목록을 볼 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.