web-dev-qa-db-ja.com

gdebi vs dpkg:gdebiはどのように依存関係の欠落を自動的に取得しますか? .debパッケージの他のすべてのインストールにgdebiを使用できますか?

最近、UbuntuをLubuntu 15.04に再インストールしました。だから私はSkypeのインストールを探していて、これを手に入れました 素敵なチュートリアル

本当にかっこよかったです。 here からskype debの公式パッケージをダウンロードしました

gdebiがまだインストールされていないため、Sudo su -c apt-get install gdebiを使用してインストールしました

次に、gdebiコマンドskype-ubuntu-precise_4.3.0.37-1_i386.debを使用してSudo su -c gdebi skype-ubuntu*4*.debをインストールしました

うわー、gdebiは私のためにすべてをしてくれました。従来のApt PPA手動リンクの追加を使用せずに、面倒なことはしないでしょう。

しかし、dpkg -iを使用してインストールしようとすると

dpkg -i skype-ubuntu-precise_4.3.0.37-1_i386.deb
Selecting previously unselected package skype.
(Reading database ... 86449 files and directories currently installed.)
Preparing to unpack skype-ubuntu-precise_4.3.0.37-1_i386.deb ...
Unpacking skype (4.3.0.37-1) ...
dpkg: dependency problems prevent configuration of skype:
 skype depends on libc6 (>= 2.3.6-6~).
 skype depends on libc6 (>= 2.7).
 skype depends on libgcc1 (>= 1:4.1.1).
 skype depends on libqt4-dbus (>= 4:4.5.3).
 skype depends on libqt4-network (>= 4:4.8.0).
 skype depends on libqt4-xml (>= 4:4.5.3).
 skype depends on libqtcore4 (>= 4:4.7.0~beta1).
 skype depends on libqtgui4 (>= 4:4.8.0).
 skype depends on libqtwebkit4 (>= 2.2~2011week36).
 skype depends on libstdc++6 (>= 4.2.1).
 skype depends on libx11-6.
 skype depends on libxext6.
 skype depends on libxss1.
 skype depends on libxv1.
 skype depends on libssl1.0.0.
 skype depends on libpulse0.
 skype depends on libasound2-plugins.

dpkg: error processing package skype (--install):
 dependency problems - leaving unconfigured
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for mime-support (3.55ubuntu1.1) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for dbus (1.8.8-1ubuntu2.1) ...
Errors were encountered while processing:
 skype

多くの依存関係の問題。ああ、私はGDebiをグーグルで検索し、ウィキペディアは

GDebiは、コマンドラインおよびGUIで使用できるAPTツールです。[44] GDebiは、dpkgコマンドのようなコマンドライン経由でローカルの.debファイルをインストールできますが、依存関係を解決するためのリポジトリへのアクセス権があります

私の不思議は

(1)gdebiは、構成ファイルに手動で追加されたApt PPAリンクを使用せずに、依存関係を持つ.debパッケージをどのようにインストールしますか?

(2)同じgdebiコマンド(Sudo su -c gdebi my.deb)を使用して、Apt PPAを追加せずに他のすべての.debパッケージをインストールできますか、または次のようにフォーマットを変更する必要がありますか。Sudo su -c my*n*.deb等?

私がそれを得ることができるように、素人用語で説明してください。

14
user879

実際、gdebidpkgの単なるフロントエンドであり、リポジトリ内の依存パッケージを確認して1回の操作でインストールできる機能が追加されていますが、dpkg -iは手動で2つの操作が必要です(後でapt-get -f install)。

質問1:

1)gdebiはこれをどのように行いますか?構成ファイルに手動で追加されたApt PPAリンクを使用せずに、依存関係を持つ.debパッケージをインストールしますか?

dpkgフロントエンドであるため、dpkgのすべての機能を使用できます。すべての.debパッケージファイルには、そのdebファイルに関するメタデータ(パッケージ名、メンテナー、依存関係など)が含まれているため(破損していない場合)、このファイルの依存関係を簡単に確認できます。

たとえば、dpkg --info package-name.debを使用して.debファイルのメタデータを確認できます

そして、これらの情報を使用して依存マップを構築し、ローカルで利用可能な.debファイルをalready downloadとしてマークし、インターネットから他の.debファイルをダウンロードします。

これらの必要な追加パッケージは、システムで構成されているリポジトリの少なくとも1つで(適切なバージョンで)利用可能でなければならないことに注意してください。

その後、通常のaptインストールのように進みます。違いは、メインの.debファイルを再ダウンロードしないことです

質問2:

(2)同じgdebiコマンド(Sudo su -c gdebi my.deb)を使用して、PPAを追加せずに他のすべてのdebパッケージをインストールできますか?または、フォーマットSudo su -c myn.debを変更する必要があります。nはソフトウェアのバージョンなどです。

PPAには理由があります。主な理由は、パッケージの最新バージョンを提供することです。そして、これらのより高いバージョンのパッケージは通常、サブパッケージのより高いバージョンにも依存します。サブパッケージは、通常、標準のUbuntuリポジトリではなくPPAからも提供されます。

シナリオ例:

たとえば、mother-packageという名前のパッケージは、標準Ubuntuリポジトリで2.0の最高バージョンを持ち、このmother-packagechild-packageバージョン2。また、いくつかのPPAが3.0child-packageを必要とするバージョン3.0mother-packageを提供すると仮定します。そのPPAリポジトリ経由。

問題は、リポジトリページからmother-package-3.0.debをダウンロードし、gdebiでインストールしようとすると、(またはgdebi) 不合格。

なぜなら、mother-package-3.0.debファイル、gdebiは、このmother-packageが必要であることを知っていたからですバージョン3.0以降のchild-packageが、バージョン2.0の場所のみを知っています。 child-packageのバージョン3.0をどこから取得するかわかりません。これは、システムにこの最新のmother-packageの入手先を伝えなかったためです。つまり、そのPPAを含めるように リポジトリリスト を設定していません。

したがって、この質問に対する明白な答えは、依存です。 必要な依存関係がすでに設定されたリポジトリで見つかる場合、インストールは成功します。しかし、そうでない場合、このバージョンアップされたパッケージのインストールに失敗します。それがあなたがまだPPAを必要とする理由であり、それはこれらすべてを手動で行うことなく最も簡単な方法です。

2番目の質問の2番目の部分は私には意味がありませんでした

9
Anwar

Skypeがその1つであるいくつかのアプリケーションで同じ問題が発生しました。これらは、手動でインストールする必要がある外部パッケージまたはライブラリファイルに依存しています。

私が使用した問題を修正するには:

Sudo dpkg -i skype.deb

そして、出力にあるような外部ライブラリの入力を求められた後、私は入力しました:

Sudo apt-get install -f

これにより、必要なパッケージがダウンロードされ、skypeがすべて単独でインストールされました。

5
Moithil Biswas

すべての.debパッケージには、依存性のリスト(互換性のあるバージョン番号付き)があります。

私はPythonリーダーではありませんが、ソースコードはaptを呼び出してそのリストを取得しているようです。明らかに依存関係の依存関係を見つけるために再帰的に下降する必要がありますが、aptも同様にそれを行うことができます。

依存関係がすべて解決され、正しい順序になったら(他の依存関係をインストールする前にいくつかの依存関係をインストールする必要があります)、aptは単に依存関係をインストールするように求められます。次に、Gdebiの引数として指定されたパッケージがインストールされます。

依存関係とターゲットパッケージは、2つの理由で2つの操作でインストールされます。まず、ローカルの.debをインストールするapt呼び出しの形式は、リポジトリから依存関係をインストールするapt呼び出しとは異なります。次に、呼び出しを分離することにより、ターゲットパッケージの前にすべての依存関係がインストールされます。

2
james