「dpkg -i」に依存関係をインストールさせるにはどうすればよいですか?


325

私が持っている、と言うfoo-1.2.3.debに依存するperlpython、しかし、コマンドを実行しています:

dpkg -i ./foo-1.2.3.deb

これらの依存関係はインストールされません。だから私はapt-get install perl python手でしなければなりません。

dpkg -iこれらの依存関係を自動的にインストールする方法は?



5
@ pd12:循環参照に万歳!:-D
デビッド・フェルスター

へえ、私は両方をリンクし、MODがどちらを選択するかを見ることにしました。
pd12

回答:


417

を使用した後dpkg、次のコマンドを実行すると、必要な依存関係をインストールできました。

sudo apt-get -f install

全体として、端末は次のようになります。

$ sudo dpkg -i package_with_unsatisfied_dependencies.deb
dpkg: dependency problems prevent ... 
[additional messages]

$ sudo apt-get -f install
[apt messages]
Setting up [dependency]...
Setting up package_with_unsatisfied_dependencies...

についての行に注目してくださいSetting up package_with_unsatisfied_dependencies。これにより、のインストールが修正(および完了)されますpackage_with_unsatisfied_dependencies.deb


8
sudo dpkg -i mypackage.debもう一度走るべきですか?
ムハンマドゲルバナ

23
sudo apt-get -f installパッケージを実行すると、依存関係がすべてインストールされました。実行sudo dpkg -i my_package.debは不要で、パッケージを再度インストールするだけです。
ガスE

5
Ubuntu 14.04での動作は次のとおりsudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.debです。最初のdpkg -i実行では依存関係にマークが付けapt-get -f installられ、必要な依存関係がインストールされ、2回目の実行でdpkg -iはパッケージが正常にインストールされます。これapt-get install -fはまったく異なるコマンドであることに注意してください。
ミッコランタライネン

1
@ysthいいえ、しないでくださいdpkg -i --force。壊れたパッケージが強制的にインストールされます!dpkg/ without / --forceを実行すると、パッケージデータベースに必要なエントリが作成され、適切に処理されますapt-get -f install
ブライアンA.ヘニング

@Lotharyx:今すぐ試すことはできませんが、dpkgが無力で(依存関係がないために失敗する)dpkgがパッケージデータベースにエントリを作成するとは思いませんでした
ysth

111

gdebi-core10.04以前のGDebiパッケージインストーラーのコマンドラインバージョンであるをインストールできます。Ubuntuの新しいバージョンでは、ソフトウェアセンターを使用してdebsをインストールします。debsにはコマンドラインに相当するものがありません。

gdebiを使用してdebパッケージをインストールするには、次を実行します。

sudo gdebi my_package_1.0.deb

64

apt 1.1(Xenial(16.04)で利用可能、stretch)からapt installはローカルファイルも許可されます:

sudo apt install ./foo-1.2.3.deb

とてもシンプルでクリーン。

リリースのお知らせをご覧ください


4
Mike

このソリューションは機能しませんでした。起こったのはエラーのリストだけでした。
ビリーS

@BillySが機能しなかったと聞いて申し訳ありませんが、使用しているディストリビューションバージョンがなければ、どのようなエラーが発生したかは、まったく解決できません。
テキストシェル

コマンドは私にとっては機能しませんでしたが、apt ./install foo-1.2.3.deb機能しました。
Cenk Alti

1
上記のコメントが必要逃した回答の以前のバージョンと呼ばれる、コマンドを修正./またはパスを
Zanna

38

グデビ

gdebidebパッケージとその依存関係をインストールします。使用するには、次を実行します。

sudo gdebi package.deb

Ubuntuの新しいバージョンでは、これはデフォルトではインストールされないため、リポジトリからインストールする必要があります。

man gdebiオプションの完全なリストを参照してください。

gdebiUbuntuにデフォルトで含まれていたのと同じ名前のグラフィカルツールに相当するコマンドラインです。グラフィカルツールのコマンドは、次のgdebi-gtkような機能を備えています。

gdebi-gtk


gdebi-gtkは必要なdepsを表示しません(少なくともここにはバージョンがあり、バグのように見えます)が、コマンドラインは表示されます!パッケージを備えた別のマシンがある場合dpkg-repack、そのようなdepsリストに基づいて使用できます:)
Aquarius Power

21

ランニング

sudo apt-get install -f

dpkgを使用してパッケージをインストールすると、壊れた依存関係が解決される可能性があります(少なくともman apt-get say so ...)。確認したら更新します。


sudo dpkg -i mypackage.debもう一度走るべきですか?
ムハンマドゲルバナ

3
apt-get -f install動作しますがapt-get install -f、同じではありません。
200_success

9

dpkgは依存関係をサポートしていません。回避方法はありますが、ローカルデータベースを作成する必要があり(したがって、依存関係を既に知っているはずです)、廃止されたと見なされます(...)。

コマンドラインにする必要がありますか?(サーバーのインストール?)もしそうなら、apt-get -f注意してください:インストール後に依存関係を解決すると、システムが壊れる可能性があります。

gdebi(guiフロントエンド)はこれを行うことができましたが、USCに置き換えられました。

.debをどのようにダウンロードしましたか。新しい11.04機能の一部は、Webサイトからダウンロードされた.debの処理です。USCで開かれるため、インストーラーによって依存関係が解決されます。

アンドリューによるコメントに基づいて編集: sudo gdebi foo-1.2.3.deb トリックを行います!!


これにはgdebiを引き続き使用できます。Software Centerは現在、単なるデフォルトのアプリです。また、Chen Xiao-Longが指摘しているように、gdebiはコマンドラインでも使用できます。
-andrewsomething

クール!gdebiはコマンドラインでも使用できるため、質問には答えがあります。
リンツウィンド

これは受け入れられた答えでなければなりません。
-prosti

3

代わりに、gdebi-gtkUbuntu Software Centerを使用できます。

パッケージをダブルクリックすると、インストールボタンが使用可能になります。


3

dpkg-dep-inst次の内容のファイルを作成できます。

#!/bin/bash

DEBIAN_FILE1=$1
dpkg -i $DEBIAN_FILE1 || apt-get --fix-broken install

ホームフォルダーにファイルを作成したと仮定します。で実行可能にしchmod +x dpkg-dep-inst、で移動/usr/local/binsudo cp dpkg-dep-inst /usr/local/binます。

これで、依存関係を持つdebianパッケージを自動的にインストールできます:

sudo dpkg-dep-inst foo-1.2.3.deb

1
apt-get --yes --fix-broken install固定を使用して自動化します。
ルーカス14年

@ysthいいえ、一般的ではありません。
BuZZ-dEE

1

私はちょうどこの問題に出くわしました。ただし、呼び出しでapt-get install -f推奨される依存関係インストールされません。この場合の唯一の回避策は、ローカルリポジトリを作成してに追加することです。/etc/apt/sources.list

apt-ftparchive packages . > Packages && gzip < Packages > Packages.gz
sudo echo "deb file://$PWD /" >> /etc/apt/sources.list
sudo apt-get update

0

実際の答えは、dpkgパッケージマネージャーはすぐに依存関係をインストールできないということです。あなたはカムしman dpkg、それを見つけました。だから、のようなツールを使用する必要があるaptapt-getaptitude、...、に基づきますdpkg

同じことがrpm、他のLinux半球のパッケージマネージャーにも当てはまります。rmp依存関係ベースのインストールを行うためのものではありません。単一のパッケージをインストールでき、使用する依存関係をインストールするためyumurpmiup2dateこれらはすべてRPMに基づいています。

前述のように、パッケージをdpkg直接インストールすると、わずかな危険があります。これは、@ Rinzwindに概説されているように、後の依存関係の解決でシステムが破損する可能性があるためです。

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