Làm cách nào để nhanh chóng tạo một kho lưu trữ apt cục bộ cho các gói ngẫu nhiên bằng cách sử dụng bản phân phối linux dựa trên Debian?


20

Một số tình huống gọi để cài đặt thủ công một gói cục bộ bằng cách sử dụng dpkg -i <packagename>. Đôi khi nó có thể hữu ích hơn nữa để tận dụng chức năng của aptgói đó, vì vậy câu hỏi là:

Làm thế nào để bạn nhanh chóng tạo một kho lưu trữ cục bộ cho các gói ngẫu nhiên bằng cách sử dụng bản phân phối linux dựa trên Debian - như Xubfox 13.04 / Ubuntu?


Chỉ cần FYI. Điều bình thường là làm theo dpkg -i <packagename>với apt-get -f installđể kéo trong các gói yêu cầu. Ngoài ra, điều thông thường để tạo một repos apt cho Debian là reprepro.
Faheem Mitha

Tôi thấy reprepro rất hữu ích
Gilles 'SO- ngừng trở nên xấu xa'

Cảm ơn bạn đã bình luận của bạn. @Faheem Mitha: bạn có thể vui lòng mở rộng ngắn gọn về lý do tại sao chạy aptvới --fix-brokensẽ được yêu cầu sau khi cài đặt gói cục bộ với dpkg -i? Dpkg sẽ không quan tâm đến điều đó? Tôi đọc nó có thể được yêu cầu lần đầu tiên apt được chạy? @ FM & Gilles: Về reprepro . Có vẻ hữu ích nếu tôi có thể làm cho nó hoạt động (không chắc chắn về dir struct, nội dung của 3 tệp hoặc params trong thời gian chạy). Sẽ thử lại và cập nhật hoặc gửi câu hỏi đầy đủ.

1
@ illuminÉ: dpkgkhông giải quyết phụ thuộc, nhưng aptkhông. dpkgsẽ cảnh báo các phụ thuộc bị hỏng, nhưng ở mức độ thấp, vì vậy sẽ không cố gắng khắc phục chúng. Các dpkg -i *.debtiếp theo apt-get -f installlà quy trình chuẩn. Có một lỗi trong danh sách mong muốn để apttự xử lý trường hợp cài đặt gói cục bộ và thậm chí có một bản vá, tôi nghĩ, nhưng nó chưa được thực hiện. Xem cài đặt apt-get cũng có thể cài đặt các tệp gói cục bộ , ban đầu được nộp vào năm 1999.
Faheem Mitha

@ illuminÉ Thể hiện sự quan tâm đến tính năng này sẽ không bị tổn thương. Tôi nghĩ rằng càng nhiều người (một cách lịch sự) bày tỏ sự quan tâm, thì càng có nhiều khả năng nó sẽ được thực hiện. Cũng lưu ý rằng gdebi là một thay thế, như đã lưu ý trong báo cáo lỗi. Đó là một phần lý do nó chưa được thực hiện, tôi nghĩ vậy. Mặc dù có một phần chức năng cốt lõi như vậy của apt sẽ tốt hơn là có chức năng này như một phần của gói khác.
Faheem Mitha

Câu trả lời:


29

Điều này cần được phân biệt với tình huống bạn đang cố gắng sao chép một cây gói đầy đủ từ một kho lưu trữ chính thức và ưu tiên điều chỉnh nguồn tốt . Các gói ngẫu nhiên có nghĩa là các gói ảo, các gói được biên dịch cục bộ hoặc sao chép theo kiểu từng phần cho mục đích thử nghiệm. Đây là một thiết lập đơn giản dựa trên tài liệu đã lỗi thời .

Đầu tiên, tạo một thư mục để lưu trữ các gói:

mkdir <packagedir>

Sau đó di chuyển các tập tin gói .deb của bạn ở đó. Thực hiện lệnh này từ thư mục phía trên thư mục chúng ta vừa tạo (đảm bảo quyền cho phép điều này!):

dpkg-scanpackages packagedir | gzip > packagedir/Packages.gz

Bây giờ, tạo một tập tin với phần mở rộng .listtrong /etc/apt/sources.list.d/với các nội dung:

deb [trusted=yes] file:///path_to_dir_above_packagedir packagedir/

và cập nhật cơ sở dữ liệu apt:

apt-get update

Tại thời điểm này, các gói trong kho lưu trữ cục bộ của chúng tôi có thể được cài đặt như bất kỳ gói nào khác sử dụng apt-get install <packagename>. Khi các gói mới được thêm vào kho lưu trữ cục bộ, dpkg-scanpackageslệnh được quy định phải được ban hành lại để cập nhật tệp Gói.gzaptphải được cập nhật trước khi các gói mới được cung cấp. Hy vọng điều này có thể hữu ích cho mục đích thử nghiệm .


6
Với apt 1.1 mới, người ta cần [trusted=yes]giữa debfile:///URI (xem sources.list(5)trang man), nếu không thì apt-get updatethất bại vì thiếu chữ ký.
vinc17

2

Nếu bạn muốn tạo một repo với cấu trúc đầy đủ mà bạn cần cho các công cụ như debootstrap, cách đơn giản nhất tôi đã tìm thấy là:

  1. Tạo một thư mục kho lưu trữ.

    # mkdir -p /opt/debian
    
  2. Tạo một thư mục con conf.

    # mkdir /opt/debian/conf
    
  3. Tạo tệp / opt / debian / conf / phân phối với nội dung như thế này (điều chỉnh cho phù hợp với phân phối bạn đang sử dụng):

    Label: Local APT repository
    Codename: jessie
    Architectures: amd64
    Components: main
    Description: Local APT repository for debootstrap
    
  4. Nhập gói của bạn với reprepro.

    # reprepro -b /opt/debian includedeb jessie /path/to/package.db
    
  5. Nhập một loạt các gói có vòng lặp for shell, ví dụ: mọi thứ từ bộ đệm APT của bạn:

    # cd /var/cache/apt/archives
    # for DEB in *.deb; do reprepro -b /opt/debian includedeb jessie $DEB; done
    

Điều này sẽ tạo ra một kho lưu trữ không dấu. Nó có thể được sử dụng với debootstrap với tùy chọn --no-check-gpg.

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.