ランダムな.DEBファイルがある場合、実際にデバイスにインストールせずにインストールが正常に完了するかどうかを確認するにはどうすればよいですか?次のスニペットを参照してください。
root@VirtualBox:/Folder# dpkg -i mysql-workbench_6.2.3+dfsg-7_armhf.deb
Selecting previously unselected package mysql-workbench.
(Reading database ... 48937 files and directories currently installed.)
Preparing to unpack mysql-workbench_6.2.3+dfsg-7_armhf.deb ...
Unpacking mysql-workbench (6.2.3+dfsg-7) ...
dpkg: dependency problems prevent configuration of mysql-workbench:
mysql-workbench depends on libatkmm-1.6-1 (>= 2.22.1); however:
Package libatkmm-1.6-1 is not installed.
mysql-workbench depends on libcairo2 (>= 1.14.0); however:
Package libcairo2 is not installed.
mysql-workbench depends on libcairomm-1.0-1 (>= 1.6.4); however:
Package libcairomm-1.0-1 is not installed.
mysql-workbench depends on libctemplate2; however:
Package libctemplate2 is not installed.
mysql-workbench depends on libgdal1h (>= 1.8.0); however:
Package libgdal1h is not installed.
mysql-workbench depends on libgdk-pixbuf2.0-0 (>= 2.22.0); however:
Package libgdk-pixbuf2.0-0 is not installed.
mysql-workbench depends on libgl1-mesa-glx | libgl1; however:
Package libgl1-mesa-glx is not installed.
Package libgl1 is not installed.
mysql-workbench depends on libglibmm-2.4-1c2a (>= 2.42.0); however:
Package libglibmm-2.4-1c2a is not installed.
mysql-workbench depends on libgnome-keyring0 (>= 2.22.2); however:
Package l
dpkg: error processing package mysql-workbench (--install):
dependency problems - leaving unconfigured
Processing triggers for mime-support (3.58) ...
Processing triggers for shared-mime-info (1.3-1) ...
Errors were encountered while processing:
mysql-workbench
root@VirtualBox:/Folder# echo $?
1
root@VirtualBox:/Folder# dpkg --dry-run -i mysql-workbench_6.2.3+dfsg-7_armhf.deb
(Reading database ... 49115 files and directories currently installed.)
Preparing to unpack mysql-workbench_6.2.3+dfsg-7_armhf.deb ...
root@VirtualBox:/Folder# echo $?
0
root@VirtualBox:/Folder# dpkg --dry-run --simulate -i mysql-workbench_6.2.3+dfsg-7_armhf.deb
(Reading database ... 49115 files and directories currently installed.)
Preparing to unpack mysql-workbench_6.2.3+dfsg-7_armhf.deb ...
root@VirtualBox:/Folder# echo $?
0
root@VirtualBox:/Folder#
dpkg -i
オプションを使用すると、コマンドは戻り値1で失敗しますが、--dry-run
と同じコマンドはゼロを返します。 --simulate
オプションを追加しても、動作は変わらないようです。実際にパッケージをインストールせずに、.DEBファイルのインストールが適切に行われるかどうかを一貫してチェックする方法に関する指針はありますか?
これをRaspberryPiエミュレーターで実行しています。
root@VirtualBox:/Folder# cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
他の依存関係もインストールせずにパッケージをインストールできるかどうかを判断するには、apt
で「シミュレーション」モードを使用するのが最善の策です。
apt -s install ./mysql-workbench_6.2.3+dfsg-7_armhf.deb
(重要な./
に注意してください)。これにより、実際のインストールで実行されるdpkg
操作が出力されます。パッケージのインストールにはInst
のマークが付いています。これらが複数ある場合、パッケージを単独でインストールすることはできません。
さて、重要な部分に移りましょう...これにdpkg
を使用することはできません。これは、dpkg
が依存関係を知らないためではなく(最も確実に知っているため)、依存関係がわからないためです。十分に強い。パッケージが別のパッケージに依存している場合、依存関係によってパッケージのインストールが妨げられることはありません満足されない場合は、パッケージのインストールが妨げられます構成済み。 Debianポリシーのセクション7.2 を参照してください:
Depends
フィールドは、パッケージを構成するときにのみ有効になります。依存関係が満たされていないときにパッケージが未構成の状態でシステム上にあることを防ぐことはできません。また、依存関係が満たされ、適切にインストールされているパッケージを、依存関係が満たされていない、または満たされない別のバージョンに置き換えることができます。これが行われると、依存するパッケージは未構成のままになり(構成しようとするとエラーが発生するため)、正しく機能しなくなります。
あなたはあなた自身のテストでこれを見ることができます:プロセスはで失敗します
dpkg: dependency problems prevent configuration of mysql-workbench
「インストール」ではなく、「構成」に注意してください。 dpkg -l mysql-workbench
の出力を見ると、iU
が表示されているはずです。これは、パッケージがインストールされているが構成されていないことを意味します。
dpkg
で「シミュレーション」モードを有効にすると、基本的に読み取り専用モードで実行されます。これは、f_noact
フラグを設定することによって行われます。これはソースコードで探すことができます。パッケージをインストールするとき、シミュレーションは(何も書き込まずに)インストール動作を実行し、構成フェーズに進みます。しかし、それは 成功を偽るだけです これはシミュレーションで実行できる唯一のことです—構成にはパッケージ内のメンテナスクリプトの実行が含まれ、それらのスクリプトが変更を加えていないことを確認するのは困難です。変更を加えることなく、成功を判断できるようにします。したがって、あなたの場合、シミュレーションはパッケージをインストールし、それは(シミュレーションされていないテストのように)成功し、構成を偽造します。したがって、エラーは検出されません。
これは技術的には答えではありませんが、良い質問でした。
Man dpkgを見ると、これがテストするオプションについての説明です。実際のDebianの専門家がより信頼できる応答を提供できるのであれば、それは良いことです。または、エラーがある場合は編集してください。
--no-act, --dry-run, --simulate
Do everything which is supposed to be done, but don't write any changes. This is used to see what would happen with the specified
action, without actually modifying anything.
確かではありませんが、本質的に、dpkgがテストしているのは、コマンドに欠陥があるかどうかだけだと思います。たとえば、次の場合:
#dpkg --dry-run -i nonexistent.deb || echo $?
dpkg: error: cannot access archive 'nonexistent.deb': No such file or directory
2
それが結果です。私が気づいたことの1つは、dpkgは--dry-runを使用してもrootが必要であり、ログファイルを使用できないことについて不平を言っていました。つまり、--dry-run
は期待どおりに機能しません。 apt-get
を使用すると、通常のユーザーとして--simulateを使用できます。
dpkgは非常に低レベルのaptツールであり、テストの結果からわかるように、実際に.debファイルをインストールするまで、aptデータベースと依存関係ツリーについては知りませんでした。したがって、dpkg --dry-run
や--simulate
などは、依存関係などではなく、実際のリテラルコマンドデータをテストしているだけだと推測します。
これは、apt-getでは、かなり適切に機能するが完全ではない同じコマンドのように見えますが、実際にはまったく同じではないことを示しています。 dpkg --simulateのコードを読んで、実際に何が行われるかを確認する必要があります。
この問題を調査すると、私が信じていることが事実であることが確認されたようです。
https://lists.ubuntu.com/archives/ubuntu-devel/2005-November/013049.html
機能の場合、.debの依存関係を自動的にチェックする方法はありますか?それを
dpkg -i
しようとする(そして最終的には構成が不十分なパッケージになる)か、dpkg -f
を実行して依存関係を1つずつ手動でチェックする以外にありますか?私が探しているのは、dpkg-buildpackageの「満たされていないビルドの依存関係:...」チェックのようなものですが、.debs用です。
「gdebi」と呼ばれる新しいアプリケーションが利用可能です: http://people.ubuntu.com/~mvo/gdebi/
Debパッケージの依存関係を直接解決できるはずです。 gdebi-gtkとgdebi(およびcliバージョン)が含まれています。それはあなたが望むものかもしれません。そうでない場合は、私に知らせてください、そしてそれは追加されるかもしれません:)あなたがそれを使う/テストするならば、フィードバック(私的なメールを通して)は非常にありがたいです。
これは非常に古いスレッドであり、GUIツールを探しているのではないと確信していますが、この問題は2005年に存在し、誰かが依存関係をチェックするGUIソリューションを作成したことは注目に値します。これは、実際にはdpkgであることを示唆しています。 --simulateはしません。また、Debian aptとdpkgに対して多くの自動スクリプトを実行したこともありますが、この2つは動作と動作が大きく異なります。
dpkgを使用して依存関係を決定するためのさまざまなオプション
https://lists.debian.org/debian-user/2006/09/msg00292.html
これは同じ質問に対する古いDebianスレッドです。繰り返しになりますが、dpkg--dry-runは一般に依存関係を処理しないことがわかります。
https://lists.debian.org/debian-user/2006/09/msg00297.html
dpkg-deb -I package.deb
そこに提案があります。これは基本的にapt-cache show package-name
と同じことを示しています。
したがって、少なくとも依存関係を自分で確認できます。
dpkg -I Perl_5.26.0-8_i386.deb
....
Pre-Depends: dpkg (>= 1.17.17)
Depends: Perl-base (= 5.26.0-8), Perl-modules-5.26 (>= 5.26.0-8), libperl5.26 (= 5.26.0-8)
....
https://lists.debian.org/debian-user/2006/09/msg00312.html
dpkg --control pkg_file
を使用すると、依存関係を含む、パッケージのすべての制御情報が表示されます。
私はそれをテストしました、しかしそれは何も示しません、それは時代遅れかもしれません、私は知りません。
ご覧のとおり、Debian開発者にはいくつかの提案がありましたが、dpgk --dry-run
に必要なことを実行させる方法があることを示唆したものはありませんでした。
結論
いくつかのオプションがあります。1つは、依存関係を手動で決定することです。これは、独自のdebを作成する将来のケースに確実に適用され、スクリプトインストールまたは適切なものを使用してそれらの依存関係をインストールし、.debをインストールしますその後のパッケージ。
テストには、スナップショットを使用したvmの使用も適しています。