パッケージがサーバーにインストールされているかどうかを確認するにはどうすればよいですか?


174

最近、Ubuntu Serverエディション13.10(Saucy Salamander)をインストールしました。しかし、私は少し問題に遭遇しました。

インストールの最後に、OpenSSHサーバーや仮想マシンホストなど、追加パッケージが必要かどうかを尋ねられます。私が見ているものは次のとおりです。

ここに画像の説明を入力してください

今、私の問題は、「仮想マシンホスト」チェックボックスをチェックしたかどうかを思い出せないことです。サーバーに対応するパッケージがあるかどうかを確認するにはどうすればよいですか?

仮想マシンホストにはどのパッケージが付属していますか?


1
$ apt-cache policy <package-name>、例えば$ apt-cache policy dillo
ダニエル

回答:


230

オプション付きのすべてのdpkgコマンドについて知りたいですか?以下のリンクを読んでください。

DebianベースのLinuxサーバーを管理する15のdpkgコマンド

インストール済みのすべてのパッケージを一覧表示するには

ここで、「少ない」とは、既存のターミナルウィンドウで開く新しいバッファ内のパッケージのリストをスクロールするために使用される単純なテキストリーダーです。リストは、他の端末コマンドおよび出力と混合されません。「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
このとの間diferenceは何であるのdpkg-クエリ-l「パッケージ名」
heypaleblue

4
終了コードに依存しないdpkg -l packagename、それはパッケージが完全にインストールされていない場合でも0終了コードで返すことがありますように、 -参照:github.com/bitrise-io/bitrise/issues/433
ヴィクトルBenei

dpkg -l | cut -d " " -f 3 | grep "^vlc"始まるすべてのパッケージ名表示するvlc
アナトリーtechtonik

参考までに、メタパッケージはdpkgと直接相関しないため、これは機能しません。あなたの応答は、尋ねられたように質問に答えます。
mtalexan

34

つかいます dpkg

このコマンドはdebianパッケージマネージャーです。

以下を使用して、インストールされているすべてのパッケージをリストできます。

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
ワイルドカードのパッケージ名の最後に星を付けることができます。
ブランノン

3
また、そのコマンドに--installedオプションを使用して、実際にインストールされる一致に制限することもできます。
mtalexan

2
何の-qqためですか?それがなくても同じように機能するようで、そのオプションはマニュアルにありませんman apt
ガブリエルステープルズ

3
@GabrielStaples apt listコマンドはまだ完全には文書化されていないようです。16.04のいくつかの簡単なテスト-qは、それが--quietオプションの同義語であることを示しているようです。1つ目-qは、「Done」という単語が印刷されるのを防ぎます。2番目は、「Listing ...」が印刷されないようにします。
アンソニーゲオ

14

dpkg-queryコマンドだけでパイプなしでパッケージのインストールを確認する方法を見つけました。

ansibleプレイブックのタスクを書いている間に、私はそのような解決策を探しました。

だから、あなたはこのようなことをすることができます:

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

これは別の方法です。


shellモジュールでansibleのパイプを使用できます。
sjas

4

Taskselの「タスク名」がクエリdpkgaptクエリに表示されないため、新しい回答を書いています。他の回答の意味は不完全です(または間違っています)。

「「仮想マシンホスト」チェックボックスをオンにしたかどうか思い出せません。」

再実行後、名前のアスタリスクがあるかどうかを確認しsudo taskselます。
(または、実行中の場合は「itasksel --list-tasks)。

これが表示されない場合、「tasksel メタパッケージ」がインストールされていない可能性があります。


「..サーバーに対応するパッケージがあるかどうかを確認するにはどうすればよいですか?」

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}

これにより、個々のパッケージがインストールされているかアンインストールされているかがわかります(2文字目:「i」ステータスはインストール済みを意味します)。task / metaパッケージの下にリストされているすべてのパッケージに対してこれを行います。

これで元の質問に答えるはずです。

サイドノート:/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です。

ソフトウェア選択項目は「タスク」と呼ばれます。


タスクの名前を教えてくれてありがとう。これは私の問題の1つでしたが、どのパッケージを探すべきかわかりませんでした。
D.Zou 14

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.