dpkg -iまたはaptでdebファイルをインストールする方法は?


601

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

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

両方ともソフトウェア依存関係の問題をうまく処理しますか?

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


あなたもaptitude不必要なパッケージを削除することができます。
ラメシュ14年

2
を直接使用しないことをお勧めしますdpkg。単一のdebの場合はgdebiを使用し、複数のdebの場合はAPTローカルリポジトリを使用します
パンディア

5
なぜ......... @Pandya
ティム

2
@Tim dpkgは依存関係を解決しないためです。
パンディア

1
@Tim gdebiは、欠落している依存関係を識別し、(aptを使用して)ダウンロードおよびインストールでき、(dpkgを使用して)インストールおよび構成できます。
パンディア

回答:


772

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

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

.debファイルがある場合:

  • 以下を使用してインストールできます。

    sudo dpkg -i /path/to/deb/file
    sudo apt-get install -f
    
  • sudo apt install ./name.deb(またはsudo apt install /path/to/package/name.deb)を使用してインストールできます。

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

  • gdebi.debファイルをインストールして、それを使用して開きます(右クリック ->で開く)。.debパッケージとそのすべての依存関係がインストールされます。

    :APTは、で定義されたレポで利用可能な利用可能なパッケージのデータベースであるパッケージインデックス維持/etc/apt/sources.listファイルとで/etc/apt/sources.list.dディレクトリをDEBによって必要な依存関係は、パッケージインデックスに存在しない場合、すべてのこれらのメソッドは、ソフトウェアの依存関係を満たすために失敗します。 )


sudo apt-get install -fafterを使用する理由sudo dpkg -i /path/to/deb/file(最初の方法で説明)

からman apt-get

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

場合はdpkg、パッケージをインストールし、パッケージの依存関係が満たされていない、それは「未設定」状態でパッケージを残して、そのパッケージが壊れたと考えられています。

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


2
@ Tim、apt-getはリポジトリからパッケージをインストールするように設計されています。パッケージリストとそれぞれのリポジトリアドレスを保持します。したがって、aptパッケージリストに存在しない.devファイルを/ var / cache / apt / archivesディレクトリに移動するだけでは機能しません。apt-getを使用してこのパッケージをインストールしようとするたびに、存在しないリポジトリを検索するためです。このために、私は役に立たないと思うローカルリポジトリを作成する必要があります。
g_p

1
@g_pありがとう!上記の答えで少し混乱しています。「(.debパッケージがaptパッケージリストに存在する場合は動作します)」-ここでの意味がわかりません。.debパッケージがaptパッケージリストに存在することを確認するにはどうすればよいですか?
BKSpurgeon

1
@BKSpurgeon、答えにビット情報を追加しました。パッケージがインデックスに存在するかどうかを調べるには、を実行しapt-cache search <package name>ます。apt-cache policy <package name>また、いくつかの追加情報を提供するを使用することもできます。
g_p

1
これらのメソッドは、通常aptによって通常実行される署名チェックを実行しますか?または、改ざんされた.debファイルをこの方法でインストールすることは可能ですか?
-Boann

8
最新のapt-getを使用して、パッケージを簡単にインストールできますapt-get install /path/to/package/name.deb。この回答の著者がそれを統合することを決定した場合、それはきちんとしたものになるでしょう。そうでない場合、私はここに十分な担当者を持っているとき、いつかその答えを追加して行くよ
サム・ハートマン

91

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


私はUnable to locate packageこの方法を試してみて困惑しました。アーカイブフォルダーに切り替えた後、Windowsのようにパッケージの名前だけを使用しました。./<file name>現在のフォルダーまたはフルパスにある場合は、Unix用である必要があります。がdebにあるフォルダーにない場合ですPATH
アレクセイ・マルティアノフ

60

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

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'

(ちなみに、ここにその特定の問題の解決策あります。)


すばらしいthxを働いた!ところで、削除しようとする試みは、その過渡的/一時的なパッケージに関するものでしょうか?またはあなたはそれが本当にシステムを壊すだろうと思いますか?
アクエリアスパワー

私はあなたのソリューションの問題に遭遇しました。Rstudioをインストールしようとしていました。自動的に古いバージョンのRが見つかりました。@g_pのソリューションを使用している間、Rstudioのみをインストールできました。
Dr_Hope

39

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

sudo apt install ./foo.deb

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


2
これは正解としてマークする必要があります。
ミンクーニャ

@RaelGugelminCunhaは100%正しくありません。sudo apt install libstdc ++ 6_8-20180414-1ubuntu2_amd64.deb apt:共有ライブラリのロード中にエラーが発生しました:
usr/lib/x86_64

2
@mvladk構文に注意してください。ファイルの./前に行方不明がありdebます。
ラエルグゲルミンクーニャ

絶対に最高/最も簡単な答え。
gerardw

15

dpkg -I my.debおよびapt-get installの前の依存関係を確認しdpkg -i my.debます。

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


ありがとう。あなたの最初のsentenctに、あなたが意味するかapt-get install my.debapt-get install?debファイルからインストールするのですか?dpkg -i my.debその後、なぜ必要なのですか?
ティム

私は常にlocalをインストール.debしましたdpkg -i、私の理解では、ダウンロードaptするディレクトリを除いてそれらをインストールするオプションはありません/var/cache/...(間違っている可能性があります)
アレックス14年

それはapt-get install ./my.deb多くのことを出力するため、何かをするようです。それは何をするためのものか?
ティム14年

それは多すぎる:-)が機能しない、@ Igor_Dvoretskyiの答えがちょうど完璧だと思う、私は忘れていた-f
アレックス14年

5

最も簡単な答えは、を実行してdpkgを使用することdpkg -i packagename.debです。その後、を実行してアンインストールでき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のスタンドアロンのアーカイブベースのシステムではなく、手動で追加された依存関係でインストールできます。



-3

Chromeをインストールする場合は非常に簡単です。

Chromeファイルを次のようにインストールします。

dpkg -i googlechrome.deb.

次のような依存関係エラーが発生する可能性があります。

dpkg: dependency problems prevent configuration of google-chrome-stable:
google-chrome-stable depends on libappindicator1; however:
Package libappindicator1 is not installed.

したがって、上記の問題を解決するには、依存関係を追加する必要があります。次のコマンドを与えます:

apt-get install -f

上記のコマンドを実行すると、マシンに依存関係が追加され、Debianパッケージ(.deb)ファイルがインストールされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.