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-grub
và cậ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:
Giải nén các tập tin điều khiển của gói mới.
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ũ.
Chạy tập lệnh preinst, nếu được cung cấp bởi gói.
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.
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.
Đị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:
Thông báo cho các ứng dụng khác về việc cài đặt gói thành công.
Đườ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ó.
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 tin
và tiế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
và .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