Điểm:7

Tập lệnh sau khi cài đặt cho một gói là gì?

lá cờ my

Tôi đã thấy rất nhiều câu hỏi trên Hỏi Ubuntu về các lỗi như thế này:

tập lệnh sau khi cài đặt foo trả về trạng thái thoát 1

Chính xác thì tập lệnh sau khi cài đặt là gì? Các tập lệnh sau khi cài đặt nằm ở đâu?

tôi tình cờ gặp câu hỏi này điều đó hơi liên quan, nhưng nó thảo luận về các trình kích hoạt sau cài đặt hơn là các tập lệnh sau cài đặt.

muru avatar
lá cờ us
"Trình quản lý gói nâng cao phát hiện tập lệnh sau cài đặt và Dpkg chạy tập lệnh." Không. Dpkg là trình xử lý duy nhất các tập lệnh postinst. Apt không có gì để làm với nó. Apt gọi dpkg để làm hầu hết mọi thứ, hãy nhớ.
Điểm:13
lá cờ my

Tên của tập lệnh tự nói lên những gì nó làm. Nó có nghĩa là tập lệnh chứa các lệnh sẽ được thực thi sau khi cài đặt hoàn tất.

Hãy hiểu nó theo cách tốt hơn thông qua một ví dụ:

  • Giả sử bạn đang cài đặt kernel mới hơn. Một khi cài đặt của .deb hoàn tất, nó cần thông báo cho GRUB rằng kernel đã được cài đặt để bạn có thể khởi động vào nó. Vì vậy, quá trình cài đặt sau gói sẽ cho GRUB biết rằng hạt nhân đã được cài đặt bằng cách thực hiện các lệnh cập nhật-grubcập nhật-initramfs. Để biết thêm thông tin, hãy xem phần Câu hỏi thường gặp.

Một ví dụ chung hơn có thể là thế này:

  • Giả sử bạn đang cài đặt gói foo. Bây giờ giả sử rằng gói cần một dịch vụ được gọi là quán ba bị vô hiệu hóa. Làm thế nào nó sẽ vô hiệu hóa nó? Các nhà phát triển sẽ thêm lệnh systemctl vô hiệu hóa bar.service, sẽ vô hiệu hóa dịch vụ, trong foo tập lệnh sau cài đặt của gói. Vì vậy, tập lệnh sau cài đặt của gói bao gồm thêm vào lệnh, cập nhật, v.v ...

    Cài đặt bao gồm các bước sau:

    1. Giải nén các tập tin điều khiển của gói mới.

    2. Nếu một phiên bản khác của cùng một gói đã được cài đặt trước khi cài đặt mới, hãy thực thi tập lệnh prerm của gói cũ.

    3. Chạy tập lệnh preinst, nếu được cung cấp bởi gói.

    4. Giải nén các tệp mới, đồng thời sao lưu các tệp cũ, để nếu xảy ra sự cố, chúng có thể được phục hồi.

    5. Nếu một phiên bản khác của cùng một gói đã được cài đặt trước khi cài đặt mới, hãy thực thi tập lệnh postrm của gói cũ. Lưu ý rằng tập lệnh này được thực thi sau tập lệnh cài sẵn của gói mới, bởi vì các tệp mới được ghi cùng lúc các tệp cũ bị xóa.

    6. Định cấu hình gói.

Quá trình cài đặt sau nằm trong phần "Định cấu hình gói". Nó bao gồm:

  1. Thông báo cho các ứng dụng khác về việc cài đặt gói thành công.

  2. Đường dẫn chính xác đến gói để người dùng và các ứng dụng khác có thể sử dụng/thực thi nó.

  3. Tìm bất kỳ lỗi nào trong quá trình cài đặt và in thông báo lỗi.


phần câu hỏi thường gặp


  • Những tập lệnh này nằm ở đâu?

    Các tập lệnh này nằm trong /var/lib/dpkg/thông tin. Những tập lệnh này có một .postinst sự mở rộng. Bạn có thể chạy xác định vị trí .postinst để tìm thêm các tập lệnh này.

    Một tập lệnh sau khi cài đặt mẫu trông giống như sau:

    #!/bin/sh
    đặt -e
    nếu [ -x /usr/sbin/update-initramfs ]; sau đó
    /usr/sbin/update-initramfs -u -k tất cả
    fi
    
  • Điều đó có nghĩa là gì nếu tập lệnh sau khi cài đặt trở lại trạng thái thoát 1?

    Nói chung, điều này có nghĩa là tập lệnh sau cài đặt sẽ trả về thoát 1 để chỉ ra rằng các lệnh bên trong tập lệnh sau khi cài đặt không thành công vì lý do này hay lý do khác.

  • Làm cách nào để khắc phục trạng thái thoát 1?

    Bạn có thể thử googling các lỗi với các lệnh và sửa chúng. Nếu bạn đang gặp lỗi với đúng cách và/hoặc đpkg, thì bạn có thể xóa tập lệnh cài đặt bài đăng và di chuyển tập lệnh đó trở lại một cách an toàn sau khi bạn đã sửa các lệnh. Tuy nhiên, điều này có thể không phải lúc nào cũng là giải pháp chính xác. Bạn có thể muốn hỏi một câu hỏi mới.

    Một số lệnh hữu ích để sửa các lỗi tập lệnh phổ biến sau khi cài đặt được đề cập trong bảng bên dưới:

    Chỉ huy Sự miêu tả mạnh mẽ cú pháp
    thanh lọc apt Loại bỏ gói cùng với các tệp cấu hình của nó. Tùy theo hoàn cảnh. thanh lọc sudo apt <tên_gói>
    dpkg -r Loại bỏ các gói mạnh mẽ. Cung cấp rất nhiều đối số hữu ích. Có, khi được sử dụng với các đối số nhất định Sudo dpkg -r --force-all <tên_gói>
    dpkg -P Thanh lọc gói mạnh mẽ. Cung cấp rất nhiều đối số hữu ích. Có, khi được sử dụng với các đối số nhất định. Sudo dpkg -P --force-all <tên_gói>
  • Tôi đang hỏi một câu hỏi mới về các lỗi liên quan đến các tập lệnh này, tôi nên cung cấp thông tin gì?

    Bạn nên cung cấp thông tin như:

    • Phiên bản Ubuntu của bạn (đầu ra của lsb_release -d).
    • đầu ra của cập nhật sudo apt.
    • đầu ra đầy đủ của Sudo apt -f cài đặt.
    • Nội dung của tập lệnh sau cài đặt của gói.

    Các chi tiết khác nên được cung cấp khi được hỏi.

  • Tôi có thể thay đổi/xóa các tập lệnh này không?

    KHÔNG! Tránh lộn xộn với các tập lệnh này. Nếu có lỗi cú pháp hoặc lỗi với bất kỳ lệnh nào, đúng cách sẽ không thành công mỗi lần cài đặt cho gói đó. Nếu chẳng may, có bất kỳ lỗi cú pháp nào thì bạn cần sử dụng thủ công các công cụ phụ trợ như đpkg để sửa chữa mọi thứ lên. Tôi có thể loại bỏ chúng? KHÔNG! Không xóa chúng trừ khi cần thiết, việc xóa các tập lệnh này có thể khiến các gói này không sử dụng được.

  • Làm cách nào để thực thi lại các tập lệnh này?

    Bạn muốn thực thi lại tập lệnh cài đặt sau của một gói? Như tôi đã nói trước đó, việc chạy tập lệnh sau khi cài đặt nằm trong phần "Cấu hình" của gói. Vì vậy, chạy đơn giản:

    sudo dpkg --configure <gói>
    

    Ở đâu <package> là tên của gói bạn muốn cấu hình.


Bạn bè và người thân của kịch bản này.

thử chạy ls Trong /var/lib/dpkg/thông tintiếng kêu đầu ra với mẫu năng khiếu. Bạn sẽ tìm thấy rất nhiều loại tập lệnh tương tự như đầu ra của nó. một số trong số họ là .postrm, .preinst, học trước.danh sách cùng với tập tin chữ ký. Dưới đây là bảng hiển thị các chức năng của từng tập lệnh này:

Kịch bản Chức năng
Xóa bài viết (.postrm) Tập lệnh này bao gồm các lệnh sẽ được chạy SAU KHI quá trình xóa hoàn tất.
Cài đặt sẵn (.preinst) Tập lệnh này bao gồm các lệnh sẽ được chạy trước khi cài đặt.
Loại bỏ trước (.prerm) tập lệnh này bao gồm các lệnh sẽ được chạy trước quá trình xóa
Tệp danh sách (.danh sách) Tệp này chứa danh sách các thư mục sở hữu/thuộc về gói.

Để biết thêm thông tin tham khảo trang của đpkg

Akbarkhon Variskhanov avatar
lá cờ mx
Tôi không chắc liệu `Sudo apt -f install` có phải là một ý kiến ​​hay hay không. Đôi khi, khi bạn chỉ có một gói duy nhất để xử lý, `apt` sẽ không nhắc bạn và vì các lần thực thi `sudo` trước đó giữ lại xác thực của người dùng, nên lần thực thi này có thể làm hỏng hệ thống. Một giải pháp tốt hơn là chạy nó mà không có phần `sudo` và bật chế độ `--simulate`.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.