apt-get build-depがソースパッケージを見つけることができません


16

私はすでにこのガイドに従って、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'どういう意味なのかまだわかりません 。これについての洞察はありがたいです、ありがとう!


deb-src/etc/apt/sources.listで関連するリポジトリを有効にしましたか?
スチールドライバー

回答:


18

他の人がすでに指摘したように、すべてのためにことを確認するdeb …のエントリ/etc/apt/sources.list/etc/apt/sources.list.d/*、あなたが一致していdeb-src …たエントリを。行の残りは同一でなければなりません。debエントリは、(つまり、インストールする準備ができて)バイナリパッケージのためであるdeb-src(コンパイルする準備ができてすなわち)ソースパッケージのためです。2種類のソースが分離されている理由は、それらが非常に異なる方法で管理されていることです:バイナリパッケージには依存関係追跡メカニズムと現在インストールされているリストがありますが、ソースパッケージは便利にダウンロードできるように追跡されるだけです。パッケージリポジトリについて説明する場合、ソースという用語は、パッケージをダウンロードする場所にあるソースと、バイナリパッケージではなくソースパッケージという、2つの無関係なものを意味することに注意してください。

libgtk2.0-0バイナリパッケージの名前です。これはと呼ばれるソースパッケージから構築されますgtk+2.0。ソースパッケージとバイナリパッケージの名前が常に一致しない理由は、ソースパッケージをビルドすると複数のバイナリパッケージが作成される可能性があるためです。たとえば、gtk+2.02つのライブラリ(libgtk2.0、libgail ), corresponding packages to build programs using these libraries (…-dev ), documentation for developers (…-doc ), companion programs (libgtk2.0-bin`)などに分割される14個のパッケージのソースです。

(パッケージがインストールされている場合)またはSource: …の出力の行をチェックすることにより、バイナリパッケージに対応するソースパッケージの名前を確認できます。ソースパッケージによって生成されたバイナリパッケージを一覧表示できます。dpkg -s BINARY_PACKAGE_NAMEapt-cache show BINARY_PACKAGE_NAMEaptitude search '?source-package(^SOURCE_PACKAGE_NAME$)

このコマンドはapt-get source、ソースパッケージをダウンロードします。既知のソースパッケージではない引数を指定すると、インストール可能なバイナリパッケージのデータベースで検索され、対応するソースパッケージのダウンロードが試行されます。コマンドapt-get build-depは同じアプローチに従ってソースパッケージの名前を推測し、ソースパッケージデータベースにクエリを実行してバイナリパッケージのリスト(Build-Dep:フィールド内のリスト)を取得し、それらのバイナリパッケージをインストールします。

Software Sources GUIには、公式リポジトリの「ソースコードでリポジトリを有効にする」チェックボックスがあります。チェックマークが付いていることを確認してください。サードパーティのリポジトリを手動で追加する場合は、必ず行deb-srcdeb行の両方を追加してください。


6

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

次のlingをmyに追加する必要がありました/etc/apt/sources.list

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

deb-srcリポジトリには、コンパイルに必要なソースパッケージ(インストール済みのバイナリパッケージとは対照的に)が含まれています。

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


5

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 Software]タブで[Source code]をクリックします。

ここに画像の説明を入力してください

これにより、deb-src/etc/apt/sources.listにいくつかの行が追加されましたsudo apt-get build-dep <package>

Ubuntu 16.04〜18.04でテスト済み。

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