Làm cách nào để hiển thị các hành động cài đặt gói .deb sẽ thực hiện?


33

Tôi muốn có thể xem các tập lệnh / trình kích hoạt được liên kết với gói do nâng cấp để tôi có thể biết, ví dụ, liệu nó có dẫn đến việc máy chủ web được khởi động lại hay không. Tôi không thể tìm thấy một tùy chọn năng khiếu để cho tôi thấy rằng (hoặc apt / dpkg); tốt nhất tôi có thể nhận được là nội dung (tập tin). Có sự kết hợp nào giữa các công tắc mô phỏng / dài dòng / nội dung mà tôi đã bỏ lỡ sẽ hiển thị điều này không?

Ngoài ra, nếu một gói dẫn đến điều gì đó xảy ra - như khởi động lại dịch vụ - mà tôi không muốn xảy ra ngay bây giờ, có cách nào để cài đặt gói mà không chạy một số hoặc tất cả các tập lệnh không?


Tại sao điều này được bỏ phiếu xuống? Nó có vẻ như là một câu hỏi hợp lý với tôi (mặc dù làm điều gì đó như thế này thường không cần thiết).
sleske

1
Đánh bại tôi Không có ý kiến ​​hoặc câu trả lời đặc biệt mài mòn, chỉ là downvote ngẫu nhiên. Như thể "thông thường không nên làm" giống như "không bao giờ nên được thực hiện trong bất kỳ trường hợp nào và thậm chí không mang tính giáo dục". :(
Sam Brightman

Câu trả lời:


20

Bạn có thể in tệp điều khiển và một số thông tin khác với dpkg -I package.debhoặc chỉ sử dụng dpkg -e package.debđể trích xuất các tệp thông tin điều khiển.

Ngoài ra, bạn có thể chạy khô để xem dpkg sẽ làm gì với --dry-run:

dpkg --dry-run -i package.deb

Tôi đã phải bỏ lỡ các tùy chọn này, cảm ơn. -Tôi dường như không hiển thị nhiều mặc dù - trông giống như dòng đầu tiên (interrobang).
Sam Brightman

2
Lưu ý: Bạn cần có sẵn tệp gói cục bộ. Tải xuống trước thông qua 'tải về aptitude <packagename>'.
Martijn Heemels

3
Tùy chọn -e sẽ tạo một DEBIANthư mục chứa controltệp và các tệp script khác nhau sẽ được chạy. postinstthường rất thú vị vì nó sẽ được thực thi sau khi gói được cài đặt thành công.
Lướt sóng

8

Không, tôi không biết cách nào để làm điều này bằng cách sử dụng năng khiếu.

Bạn có thể nhìn vào các kịch bản trực tiếp; các tập lệnh chạy trong quá trình nâng cấp được chứa trong gói. Giải nén deb bằng ar:

ar -x package.deb

Sau đó nhìn vào control.tar.gz, nó chứa các kịch bản.


Sẽ tốt hơn nếu aptitude -s với một số tùy chọn dài dòng thực sự hiển thị các tập lệnh mà nó sẽ chạy cho toàn bộ nâng cấp. Đó thực chất là những gì tôi đã yêu cầu, nhưng tôi nghĩ câu trả lời của Mikael hơi đơn giản.
Sam Brightman

2

Ngoài ra còn có --debugtùy chọn cho dpkg, như trongsudo dpkg --debug=72200 -i package.deb

Có một số tùy chọn có sẵn cho đầu ra dài dòng và chúng có thể được kết hợp.

Bạn có thể thấy tất cả các tùy chọn có sẵn bằng cách chạy : dpkg --debug=help.

pi@kaldi:~ $ dpkg --debug=help
dpkg debugging option, --debug=<octal> or -D<octal>:

 Number  Ref. in source   Description
      1  general          Generally helpful progress information
      2  scripts          Invocation and status of maintainer scripts
     10  eachfile         Output for each file processed
    100  eachfiledetail   Lots of output for each file processed
     20  conff            Output for each configuration file
    200  conffdetail      Lots of output for each configuration file
     40  depcon           Dependencies and conflicts
    400  depcondetail     Lots of dependencies/conflicts output
  10000  triggers         Trigger activation and processing
  20000  triggersdetail   Lots of output regarding triggers
  40000  triggersstupid   Silly amounts of output regarding triggers
   1000  veryverbose      Lots of drivel about eg the dpkg/info directory
   2000  stupidlyverbose  Insane amounts of drivel

Debugging options can be mixed using bitwise-or.
Note that the meanings and values are subject to change.

Điều đó vẫn sẽ cài đặt mặc dù, phải không?
Sam Brightman

Vâng, đúng 100%. Điều này phải được thực hiện trong một trường hợp (phát triển) khác.
estibordo

1

Không, bạn không thể chạy một phần của tập lệnh bảo trì, không có móc nối nào để thực hiện điều đó.

Bạn chỉ có thể xem kịch bản sẽ làm gì bằng cách kiểm tra nó bằng tay - một lần nữa, không có "chạy khô" nào có thể cho bạn biết chính xác những gì nó sẽ và sẽ không làm, chỉ "Tôi sẽ chạy postinst với những đối số này".

Đây là những lý do chúng tôi có môi trường dàn dựng và thử nghiệm.


Tôi có nghĩa là một tập hợp con của các kịch bản, không phải là một phần của một kịch bản riêng lẻ. Xin lỗi nếu điều đó không rõ ràng. Tôi không muốn phép thuật, biết kịch bản và các đối số cho phép tôi kiểm tra tay hoặc sửa đổi các phần bất tiện.
Sam Brightman
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.