Tôi có thể gọi các lệnh dpkg hoặc apt- * khác trong các tập lệnh trước không?


9

Là một phần của tệp .deb tùy chỉnh (nội bộ) sẽ được triển khai cho các thiết bị Ubuntu 12.04, tôi cần thêm một số kho lưu trữ PPA, chạy cập nhật apt-get và sau đó cài đặt các gói từ các PPA đó.

Điều này có thể được thực hiện trong các tập lệnh .preinst hoặc .postinst trong tệp .deb của tôi không?

Tôi cho rằng khi tập tin .deb của tôi được cài đặt ( sudo dpkg -i testing.deb) rằng một số ổ khóa hoặc các cơ chế tồn tại khả năng đó sẽ ngăn cản tôi từ gọi lệnh nhất định như add-apt-repository, apt-get update, và apt-get install.

Đây có phải là một giả định chính xác?


Câu trả lời:


7

Bạn nói đúng. Các kịch bản bảo trì không được phép thực hiện bất kỳ thay đổi nào đối với trạng thái apt hoặc dpkg, ngoài các thay đổi sẽ được thực hiện khi cài đặt gói.

Cài đặt một tập tin vào /etc/apt/sources.list.d, mặc dù, là tốt. Hầu hết các gói có vai trò như "cài đặt gói này để thêm kho APT X vào hệ thống của bạn" chỉ đơn giản là làm điều đó (trái ngược với cách gọi add-apt-repository). Việc bỏ khóa công khai GPG được sử dụng để ký repo vào cũng rất phổ biến /etc/apt/trusted.gpg.d.

Nếu bạn muốn đơn giản hóa để người dùng thực hiện các bước cài đặt bổ sung cho phần mềm của mình, bạn có thể chỉ muốn gửi một tập lệnh thực hiện công việc và yêu cầu người dùng chạy tập lệnh theo cách thủ công.

Nhưng nếu bạn thực sự, thực sự muốn gọi apt-get updatehoặc apt-get install, v.v., và bạn không bận tâm rằng gói của bạn sẽ hoàn toàn không thể chấp nhận được trong Debian hoặc Ubuntu, và người dùng của bạn vẫn ổn với gói hành động theo cách đó, thì có lẽ bạn có thể đặt một cái gì đó trong /etc/cron.dđó kiểm tra bất kỳ khóa apt hoặc dpkg hiện có nào và nếu không có khóa nào, hãy thực hiện các bước cài đặt bổ sung của bạn và sắp xếp cho các bước đó không được thực hiện lại. Tôi không khuyên bạn nên tiếp cận.

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.