apt-get build-dep không thể tìm thấy gói nguồn


16

Tôi đã làm theo hướng dẫn này để tắt nút chuột giữa trên Ubuntu 12.04.

Hoạt động như một lá bùa.

Bây giờ tôi đang cố gắng đạt được điều tương tự trên Linux Mint 17. Khi tôi cố gắng

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

nó cho tôi đầu ra sau:

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

Đối với tôi nó trông giống như apt-get là bằng cách nào đó "giải quyết" 'libgtk2.0-0'để 'gtk+2.0', nhưng sau đó không tìm thấy bất kỳ gói có tên như thế.

EDIT: mặc dù bây giờ tôi có thể biên dịch chương trình (xem câu trả lời của tôi), tôi vẫn không biết Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'nghĩa là gì . Bất kỳ cái nhìn sâu sắc về điều này sẽ được đánh giá cao, cảm ơn!


Bạn đã kích hoạt deb-srckho lưu trữ có liên quan trong /etc/apt/source.list chưa?
Steeldo

Câu trả lời:


18

Như những người khác đã lưu ý, hãy đảm bảo rằng đối với mọi deb …mục nhập /etc/apt/sources.list/etc/apt/sources.list.d/*, bạn có một deb-src …mục phù hợp . Phần còn lại của dòng phải giống hệt nhau. Các debentry là đối với các gói nhị phân (tức là đã sẵn sàng để cài đặt) thì deb-srclà đối với các gói mã nguồn (tức là đã sẵn sàng để biên dịch). Lý do tại sao hai loại nguồn được tách ra là do chúng được quản lý rất khác nhau: các gói nhị phân có cơ chế theo dõi phụ thuộc và danh sách hiện được cài đặt, trong khi các gói nguồn chỉ được theo dõi để có thể tải xuống một cách thuận tiện. Lưu ý rằng khi thảo luận về kho lưu trữ gói, nguồn từ có nghĩa là hai thứ không liên quan: nguồn như ở vị trí để tải gói từ và gói nguồn trái ngược với gói nhị phân.

libgtk2.0-0là tên của gói nhị phân. Nó được xây dựng từ một gói nguồn được gọi là gtk+2.0. Lý do tên gói nguồn và nhị phân không khớp với nhau là việc xây dựng gói nguồn có thể tạo ra nhiều gói nhị phân; ví dụ, gtk+2.0là nguồn gốc cho 14 gói vì nó được chia thành hai thư viện ( libgtk2.0, libgail ), corresponding packages to build programs using these libraries (... -dev ), documentation for developers (... -doc ), companion programs (libgtk2.0-bin`) vv

Bạn có thể thấy tên của gói nguồn tương ứng với gói nhị phân bằng cách kiểm tra Source: …dòng trong đầu ra của dpkg -s BINARY_PACKAGE_NAME(nếu gói được cài đặt) hoặc apt-cache show BINARY_PACKAGE_NAME. Bạn có thể liệt kê các gói nhị phân được sản xuất bởi một gói nguồn với aptitude search '?source-package(^SOURCE_PACKAGE_NAME$).

Lệnh apt-get sourcetải xuống một gói nguồn. Nếu bạn đưa ra một đối số không phải là gói nguồn đã biết, nó sẽ tìm kiếm trong cơ sở dữ liệu của các gói nhị phân có thể cài đặt và cố gắng tải xuống gói nguồn tương ứng. Lệnh apt-get build-deptuân theo cách tiếp cận tương tự để suy ra tên của gói nguồn, sau đó truy vấn cơ sở dữ liệu gói nguồn để lấy danh sách các gói nhị phân (danh sách trong Build-Dep:trường) và cài đặt các gói nhị phân đó.

GUI nguồn phần mềm có một hộp kiểm tra cho phép các kho lưu trữ với mã nguồn mã nguồn cho các kho lưu trữ chính thức, đảm bảo rằng nó được đánh dấu. Nếu bạn thêm kho lưu trữ của bên thứ ba theo cách thủ công, hãy đảm bảo rằng bạn thêm cả hai deb-srcdebdòng.


6

Nhờ @steel ấn, tôi đã biết phải làm gì.

Chỉ cần thêm ling sau đây vào /etc/apt/sources.list:

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

Kho chứa deb-src chứa các gói nguồn (trái ngược với các gói nhị phân, sẵn sàng cài đặt) cần thiết để biên dịch.

Chỉnh sửa: Sau khi thêm phần này, bạn phải thực thi sudo apt-get update


5

Phương pháp CLI

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

Đã thử nghiệm trên hình ảnh Docker Ubuntu 18.04. Sau khi thay đổi này, tôi có thể thành công làm ví dụ:

sudo apt-get build-dep hello

và trước khi thay đổi, nó đã thất bại với lỗi:

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

software-properties-gtk tùy chọn "Mã nguồn"

Từ GUI, bạn có thể chạy:

software-properties-gtk

sau đó trong tab "Phần mềm Ubuntu", nhấp vào "Mã nguồn":

nhập mô tả hình ảnh ở đây

Điều này đã thêm một số deb-srcdòng dưới /etc/apt/sources.list, và bây giờ tôi có thể làm sudo apt-get build-dep <package>.

Đã thử nghiệm trên Ubuntu 16.04 đến 18.04.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.