web-dev-qa-db-ja.com

dpkgを使用してローカルディレクトリからパッケージをインストールする

インストーラーを改良しています。それが機能する方法は、すべてのコンポーネントが.debファイルに作成されることです。インストーラーは、それらの依存関係とともに、それらすべてに対して一度にdpkgを呼び出すだけです。これはうまく機能します... Ubuntu Linux8.04.1にインストールする限り。たとえば、Ubuntu 8.04.3にインストールする場合、インストールされる可能性のあるlibc6-devのバージョンは大きくなります。しかし、dpkgは、より高いバージョンがすでにインストールされているにもかかわらず、libc6-devのバージョンをインストールしているようです。ご想像のとおり、これは問題を引き起こします。

これを行う適切な方法は何ですか?インストールしようとしているすべてのパッケージを、システム上のパッケージと照合しますか?私はdpkgまたはaptが私たちのためにこれをしたと思いました。第二に、なぜこれがそれと同じくらい苦痛でなければならないのですか?ターゲットコンピュータはインターネットにアクセスできず、ミラーにもアクセスできません。完全に自己完結型であるためには、アプリケーションを出荷できる必要があります。パッケージは依存関係地獄から私たちを解放するはずでしたが、そうではないようです。

4
Matt Green

最もクリーンな解決策は、すべてのパッケージをパッケージCDなどのローカルリポジトリに配置し、/etc/apt/sources.list.dにファイルを追加してリポジトリを含めることです。次に、aptitude update; aptitude install <packages>を実行して、正確に正しいパッケージを自動的にインストールするだけです。

2
Teddy

dpkgがすでにインストールされているパッケージのバージョン番号をチェックするとは思わない。 aptでこれを行う必要がありますが、sources.list(通常は/etc/apt/にあります)を変更しない限り、ディスクからインストールされるとは思いません。ソースディレクトリをsources.listに追加すると、標準のapt-get installコマンドを実行できるようになり、すべてのチェックが自動的に行われます。

1