3

debというパッケージを作成しましたabc.debpython-dev, python-mysql現在、deb インストール自体の一部としてインストールする必要がある、などの依存関係はほとんどありません。

(つまり、ユーザーが を実行するdpkg -i abc.debと、依存関係も自動的にインストールされます)。

controlなどのいくつかのパラメーターを含むファイルを使用しています。制御ファイルpreinst, postinstに追加しようとしましたが、言及された依存関係が存在しない場合にのみパッケージのインストールを停止するDependsと思います。Dependsdebパッケージのインストール自体の一部として依存関係をインストールするにはどうすればよいですか? で動作するソリューションを探していUbuntu 12.04ます。

postinstPSスクリプトに依存関係をインストールしようとすると

sudo apt-get install python-dev -y

エラーが表示されます:

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) 
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?`
4

3 に答える 3

1

dpkg単一のパッケージのみをインストールできます。

Depends制御ファイルのフィールドで、すべてのパッケージの依存関係を宣言する必要があります。

その後、ユーザーが でパッケージをインストールするとdpkg -i package.deb、依存関係が見つからないというメッセージが表示されます。その後、ユーザーはパッケージ リポジトリから不足している依存関係を修正するために呼び出すことができます (これは、依存関係が実際公式リポジトリapt-get -f installにあることを前提としています)。

gdebi別の方法は、パッケージをインストールするなどのツールを使用することです。gdebi欠落している依存関係を取得する方法を知っているため、apt-get -f installステップが不要になります。

私のアドバイスは、package.debファイルを(適切な依存関係宣言とともに)ユーザーに出荷し、gdebi.

于 2014-04-28T04:47:32.013 に答える
1

これを介して行うことはできませんdpkg。そのapt-getためです。.deb制御ファイルで依存関係を適切に指定してからインストールするとapt-get、自動的にインストールされます。下位レベルのツールから上位レベルのツールを呼び出そうとするべきではありません。その時までには、手遅れです。

于 2014-04-07T13:04:04.463 に答える
0

これを達成した方法は、preinstスクリプトを使用することです。このスクリプトは、パッケージが Debian アーカイブ (".deb") ファイルから解凍される前に実行されます。

スクリプトで依存関係を確認し、依存preinst関係が見つからない場合はエラーで終了しました。次のサンプル sh コードは、利用できない場合に依存関係を確認してインストールする方法を示しています。

  dpkg -s "python-pip" >/dev/null 2>&1 && {
    echo "python-pip is installed."
    echo
  } || {
    echo "ERROR: python-pip is not installed."
    //you may install python-pip here if you wish
  }

次に、このスクリプトはPreinst:、制御ファイルのパラメーターに提供されます。

于 2014-04-08T05:59:24.193 に答える