web-dev-qa-db-ja.com

dpkg -iまたはaptによってdebファイルをインストールする方法

インストール用のdebパッケージがあります。

dpkg -i my.debまたはaptでイ​​ンストールしますか?

どちらもソフトウェア依存関係の問題をうまく処理できますか?

Aptの場合、aptからdebからどのようにインストールできますか?

728
Tim

aptを使用してパッケージをインストールする場合、 内部dpkgを使用します。 aptを使用してパッケージをインストールすると、最初にすべての依存関係のリストが作成され、リポジトリからダウンロードされます。

ダウンロードが完了すると、dpkgを呼び出してすべてのファイルをインストールし、すべての依存関係を満たします。

したがって、.debファイルがある場合は、次の方法でインストールできます。

  1. 使用:

    Sudo dpkg -i /path/to/deb/file
    Sudo apt-get install -f
    
  2. 使用:

    Sudo apt install ./name.deb
    

    または

    Sudo apt install /path/to/package/name.deb
    

    古いapt-getバージョンでは、最初にdebファイルを/var/cache/apt/archives/ディレクトリに移動する必要があります。どちらの場合も、このコマンドを実行すると、依存関係が自動的にダウンロードされます。

  3. 最初にgdebiをインストールしてから、それを使用して.debファイルを開きます(右クリック->Open with) 。依存関係のある.debパッケージをインストールします。

    :APTは、/etc/apt/sources.listファイルおよび/etc/apt/sources.list.dディレクトリ。debが必要とする依存関係がパッケージインデックスに存在しない場合、これらのメソッドはすべてソフトウェアの依存関係を満たすことができません。


なぜSudo apt-get install -fの後にSudo dpkg -i /path/to/deb/fileを使用するのですか(方法1で述べたように)?

man apt-getから:

 -f, --fix-broken
           Fix; attempt to correct a system with broken dependencies in place.

dpkgがパッケージをインストールし、パッケージの依存関係が満たされない場合、パッケージは「未構成」の状態のままになり、そのパッケージは壊れていると見なされます。

Sudo apt-get install -fコマンドは、欠落している依存関係をインストールすることにより、この壊れたパッケージを修正しようとします。

939
g_p

foo.debを使用してdpkg -i foo.debファイルをインストールします。未解決の依存関係でエラーが発生した場合は、後でapt-get install -fを実行してください。

95
ihor_dvoretskyi

コマンドラインでUbuntuに.debファイルをインストールする最良の方法は次のとおりです。

Sudo gdebi skype.deb

gdebiをまだインストールしていない場合は、Sudo apt install gdebi-coreを使用してインストールしてください。

なぜgdebiなのか?

gdebiは、.debファイルのすべての依存関係を探し、.debファイルをインストールする前にそれらをインストールします。これはSudo dpkg -i skype.deb && Sudo apt install -fよりもはるかに好ましいと思います。後者は、特定の状況で依存関係を削除するにはあまりにも熱心です。たとえば、Skypeをインストールしようとすると、compizunity!などのパッケージを含む96個の(!)パッケージを削除しようとしました。 gdebiは、より明確なエラーメッセージを提供しました。

 $ Sudo gdebi skype.deb
 Cannot install 'libqtgui:i386'

(ちなみに その特定の問題の解決策 です)

66
Flimm

次の方法でローカルの.debパッケージをインストールできます。

Sudo apt install ./foo.deb

ローカルの相対パスまたは絶対パス(現在のディレクトリにある場合は./)を指定してください。指定しない場合、リモートリポジトリでfoo.debを検索して失敗します。

60
wisbucky

dpkg -I my.debの前にapt-get installおよびdpkg -i my.deb依存関係を使用して依存関係を確認してください。

my.deb/var/cache/apt/archivesにコピーして、apt-getで直接インストールできるかもしれませんが、試したことはありません。 動作しません。apt-getdpkgはアーカイブにリストされているパッケージを探しています。

15
Alex

最も簡単な答えは、_dpkg -i packagename.deb_を実行してdpkgを使用することです。その後、_dpkg -r packagename.deb_を実行してアンインストールできます。
_apt-get_はdpkgをベースにしたより高いレベルのインストーラーであり、したがって_apt-get install packagename.deb_を使用できます。
それをapt-getアーカイブディレクトリ(_/var/cache/apt/archives_)に追加すると、スタンドアロンの.debアーカイブではなく、依存関係のあるパッケージとして参照できるため、有益です。
また、apt-getアーカイブディレクトリに追加することにより、_apt-get install packagename_で依存関係を使用する機会があります。これにより、dpkgのスタンドアロンのアーカイブベースのシステムの代わりに、手動で追加された依存関係を使用してインストールできます。

6
Interesting...

最新のapt-getを使用すると、apt-get install /path/to/package/name.deb

(上部の回答の編集として行う必要がありますが、拒否されました-参照 https://unix.stackexchange.com/posts/159114/edit

5