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


14

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

本当にかっこよかったです。ここからスカイプデブの公式パッケージをダウンロードしました

gdebiまだインストールしていないので、使用してインストールしましたsudo su -c apt-get install gdebi

次にskype-ubuntu-precise_4.3.0.37-1_i386.deb、gdebiコマンドを使用してインストールします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*.debnはソフトウェアのバージョンなどですか?

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

回答:


9

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

質問1:

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

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

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

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

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

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

質問2:

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

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

シナリオ例:

仮定し、名前のパッケージ母親パッケージは最上位バージョンの持つ2.0標準のUbuntuのリポジトリでは、この母のパッケージは、名前のパッケージに依存した子パッケージも想定バージョン2のを、いくつかのPPAが提供する母親、パッケージ版の3.0上で必要となるchild-packageのを3.0、両方ともそのPPAリポジトリを介して利用できます。

問題は、いまリポジトリページからmother-package-3.0.debをダウンロードしてインストールしようとするとgdebigdebi失敗する(または失敗する)ことです。

なぜなら、mother-package-3.0.debファイルをチェックすると、gdebiこのmother -packageにはversion 3.0以上のchild-packageが必要であることがわかっていましたが、versionの場所しかわからないからです2.0子パッケージのバージョン3.0をどこから取得するかわかりません。これは、この最新のmother-packageの入手先をシステムに通知しなかったためです。つまり、PPAを含めるようにリポジトリリストを構成していません。

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

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


5

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

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

sudo dpkg -i skype.deb

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

sudo apt-get install -f

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


2

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

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

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

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

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