私が持っている、と言うfoo-1.2.3.deb
に依存するperl
とpython
、しかし、コマンドを実行しています:
dpkg -i ./foo-1.2.3.deb
これらの依存関係はインストールされません。だから私はapt-get install perl python
手でしなければなりません。
dpkg -i
これらの依存関係を自動的にインストールする方法は?
私が持っている、と言うfoo-1.2.3.deb
に依存するperl
とpython
、しかし、コマンドを実行しています:
dpkg -i ./foo-1.2.3.deb
これらの依存関係はインストールされません。だから私はapt-get install perl python
手でしなければなりません。
dpkg -i
これらの依存関係を自動的にインストールする方法は?
回答:
を使用した後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
。
sudo dpkg -i mypackage.deb
もう一度走るべきですか?
sudo apt-get -f install
パッケージを実行すると、依存関係がすべてインストールされました。実行sudo dpkg -i my_package.deb
は不要で、パッケージを再度インストールするだけです。
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
はまったく異なるコマンドであることに注意してください。
dpkg -i --force
。壊れたパッケージが強制的にインストールされます!dpkg
/ without / --force
を実行すると、パッケージデータベースに必要なエントリが作成され、適切に処理されますapt-get -f install
。
gdebi-core
10.04以前のGDebiパッケージインストーラーのコマンドラインバージョンであるをインストールできます。Ubuntuの新しいバージョンでは、ソフトウェアセンターを使用してdebsをインストールします。debsにはコマンドラインに相当するものがありません。
gdebiを使用してdebパッケージをインストールするには、次を実行します。
sudo gdebi my_package_1.0.deb
apt 1.1(Xenial(16.04)で利用可能、stretch)からapt install
はローカルファイルも許可されます:
sudo apt install ./foo-1.2.3.deb
とてもシンプルでクリーン。
リリースのお知らせをご覧ください
apt ./install foo-1.2.3.deb
機能しました。
./
またはパスを
gdebi
debパッケージとその依存関係をインストールします。使用するには、次を実行します。
sudo gdebi package.deb
Ubuntuの新しいバージョンでは、これはデフォルトではインストールされないため、リポジトリからインストールする必要があります。
man gdebi
オプションの完全なリストを参照してください。
gdebi
Ubuntuにデフォルトで含まれていたのと同じ名前のグラフィカルツールに相当するコマンドラインです。グラフィカルツールのコマンドは、次のgdebi-gtk
ような機能を備えています。
dpkg-repack
、そのようなdepsリストに基づいて使用できます:)
ランニング
sudo apt-get install -f
dpkgを使用してパッケージをインストールすると、壊れた依存関係が解決される可能性があります(少なくともman apt-get say so ...)。確認したら更新します。
sudo dpkg -i mypackage.deb
もう一度走るべきですか?
apt-get -f install
動作しますがapt-get install -f
、同じではありません。
dpkgは依存関係をサポートしていません。回避方法はありますが、ローカルデータベースを作成する必要があり(したがって、依存関係を既に知っているはずです)、廃止されたと見なされます(...)。
コマンドラインにする必要がありますか?(サーバーのインストール?)もしそうなら、apt-get -f
注意してください:インストール後に依存関係を解決すると、システムが壊れる可能性があります。
gdebi(guiフロントエンド)はこれを行うことができましたが、USCに置き換えられました。
.debをどのようにダウンロードしましたか。新しい11.04機能の一部は、Webサイトからダウンロードされた.debの処理です。USCで開かれるため、インストーラーによって依存関係が解決されます。
アンドリューによるコメントに基づいて編集:
sudo gdebi foo-1.2.3.deb
トリックを行います!!
dpkg-dep-inst
次の内容のファイルを作成できます。
#!/bin/bash
DEBIAN_FILE1=$1
dpkg -i $DEBIAN_FILE1 || apt-get --fix-broken install
ホームフォルダーにファイルを作成したと仮定します。で実行可能にしchmod +x dpkg-dep-inst
、で移動/usr/local/bin
しsudo cp dpkg-dep-inst /usr/local/bin
ます。
これで、依存関係を持つdebianパッケージを自動的にインストールできます:
sudo dpkg-dep-inst foo-1.2.3.deb
apt-get --yes --fix-broken install
固定を使用して自動化します。
私はちょうどこの問題に出くわしました。ただし、呼び出しで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
実際の答えは、dpkg
パッケージマネージャーはすぐに依存関係をインストールできないということです。あなたはカムしman dpkg
、それを見つけました。だから、のようなツールを使用する必要があるapt
、apt-get
、aptitude
、...、に基づきますdpkg
。
同じことがrpm
、他のLinux半球のパッケージマネージャーにも当てはまります。rmp
依存関係ベースのインストールを行うためのものではありません。単一のパッケージをインストールでき、使用する依存関係をインストールするためyum
にurpmi
、up2date
これらはすべてRPMに基づいています。
前述のように、パッケージをdpkg
直接インストールすると、わずかな危険があります。これは、@ Rinzwindに概説されているように、後の依存関係の解決でシステムが破損する可能性があるためです。