web-dev-qa-db-ja.com

apt-get build-depがソースパッケージを見つけられない

私はすでに このガイド に従って、Ubuntu 12.04で中マウスボタンの貼り付けを無効にしています。

魅力のように機能します。

Linux Mint 17でも同じことを実現しようとしています。

Sudo apt-get build-dep libgtk2.0-0

それは私に次の出力を与えます:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'
E: Unable to find a source package for gtk+2.0

私にとって、apt-getはどういうわけか「解決」しているようです'libgtk2.0-0'から'gtk+2.0'ですが、そのような名前のパッケージは見つかりません。

編集:今はプログラムをコンパイルすることができますが(私の答えを参照)、まだ何がわかりませんPicking 'gtk+2.0' as source package instead of 'libgtk2.0-0'は意味するはずです。これについての洞察はありがたいです、ありがとう!

16
panepeter

他の人がすでに述べたように、_deb …_および_/etc/apt/sources.list_の_/etc/apt/sources.list.d/*_エントリごとに、一致する_deb-src …_エントリがあることを確認してください。残りの行は同一でなければなりません。

debエントリはバイナリパッケージ(つまり、インストールの準備ができている)用であり、_deb-src_はソースパッケージ(つまり、コンパイルの準備ができている)用です。 2種類のパッケージが分離されている理由は、パッケージの管理方法が大きく異なるためです。バイナリパッケージには依存関係の追跡メカニズムと現在インストールされているリストがありますが、ソースパッケージは追跡しやすいため、簡単にダウンロードできます。パッケージリポジトリについて説明する場合、Word sourceは2つの無関係なことを意味します。パッケージをダウンロードする場所などのソースと、バイナリパッケージではなくソースパッケージです。

_libgtk2.0-0_は、バイナリパッケージの名前です。 _gtk+2.0_と呼ばれるソースパッケージからビルドされます。ソースとバイナリパッケージの名前が常に一致しないのは、ソースパッケージをビルドすると複数のバイナリパッケージが生成される可能性があるためです。たとえば、_gtk+2.0_は、2つのライブラリ(_libgtk2.0_、libgail)に分割される14個のパッケージのソースであり、これらのライブラリを使用してプログラムをビルドするための対応するパッケージ(_…-dev_ )、開発者向けドキュメント(_…-doc_)、コンパニオンプログラム(_libgtk2.0-bin_)など.

_Source: …_(パッケージがインストールされている場合)または_dpkg -s BINARY_PACKAGE_NAME_の出力の_apt-cache show BINARY_PACKAGE_NAME_行を確認すると、バイナリパッケージに対応するソースパッケージの名前を確認できます。

aptitude search '?source-package(^SOURCE_PACKAGE_NAME$)を使用して、ソースパッケージによって生成されたバイナリパッケージを一覧表示できます。

コマンド_apt-get source_は、ソースパッケージをダウンロードします。既知のソースパッケージではない引数を指定すると、インストール可能なバイナリパッケージのデータベースで検索され、対応するソースパッケージのダウンロードが試行されます。

コマンド_apt-get build-dep_は、同じ方法でソースパッケージの名前を推測し、ソースパッケージデータベースにクエリを実行してバイナリパッケージのリスト(_Build-Dep:_フィールドのリスト)を取得し、それらのバイナリをインストールします。パッケージ。

ソフトウェアソースGUIには、公式リポジトリ用の[ソースコードでリポジトリを有効にする]チェックボックスがあります。チェックされていることを確認してください。サードパーティのリポジトリを手動で追加する場合は、必ず_deb-src_とdebの両方の行を追加してください。

@steeldriverのおかげで、何をすべきかがわかりました。

次のリンを/etc/apt/sources.listに追加するだけです:

deb-src ftp://ftp.de.debian.org/debian/ stable main contrib

deb-srcリポジトリには、コンパイルに必要なソースパッケージ(バイナリの、すぐにインストールできるパッケージではない)が含まれています。

編集:これを追加した後、Sudo apt-get updateを実行する必要があります

6
panepeter

CLIメソッド

Sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
Sudo apt-get update

Ubuntu 18.04 Dockerイメージでテスト済み。この変更の後、私は例えば成功することができます:

Sudo apt-get build-dep hello

変更前はエラーで失敗しました:

E: You must put some 'source' URIs in your sources.list

software-properties-gtkオプション "ソースコード"

GUIから、次のコマンドを実行できます。

software-properties-gtk

次に、「Ubuntuソフトウェア」タブで「ソースコード」をクリックします。

enter image description here

これにより、いくつかのdeb-srcの下の行/etc/apt/sources.list、そして今私はSudo apt-get build-dep <package>

Ubuntu 16.04から18.04でテスト済み。