Đây là lệnh dpkg-Maintscript-helper có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
dpkg-Maintscript-helper - hoạt động xung quanh các giới hạn dpkg đã biết trong các tập lệnh bảo trì
SYNOPSIS
dpkg-Maintscript-helper lệnh [tham số...] -- duy trì-script-tham số...
HÀNG VÀ THÔNG SỐ
hỗ trợ lệnh
rm_conffile trộn lẫn [phiên bản trước [gói]]
mv_conffile conffile cũ mới-conffile [phiên bản trước [gói]]
symlink_to_dir tên đường dẫn mục tiêu cũ [phiên bản trước [gói]]
dir_to_symlink tên đường dẫn mục tiêu mới [phiên bản trước [gói]]
MÔ TẢ
Chương trình này được thiết kế để chạy trong các tập lệnh bảo trì nhằm đạt được một số nhiệm vụ
dpkg không thể (chưa) xử lý nguyên bản do các quyết định thiết kế hoặc do hiện tại
những hạn chế.
Nhiều tác vụ yêu cầu các hành động phối hợp từ một số tập lệnh của người bảo trì (phân tích trước,
đăng tải, học trước, bưu điện). Để tránh những sai lầm, cùng một cuộc gọi đơn giản chỉ cần được đưa vào tất cả
script và chương trình sẽ tự động điều chỉnh hành vi của nó dựa trên môi trường
biến DPKG_MAINTSCRIPT_NAME và trên các đối số của tập lệnh bảo trì mà bạn phải
chuyển tiếp sau dấu gạch ngang kép.
CHUNG THÔNG SỐ
phiên bản trước
Xác định phiên bản mới nhất của gói có nâng cấp sẽ kích hoạt
hoạt động. Điều quan trọng là phải tính toán phiên bản trước chính xác để
các hoạt động được thực hiện chính xác ngay cả khi người dùng xây dựng lại gói với
phiên bản địa phương. Nếu như phiên bản trước trống hoặc bị bỏ qua, thì thao tác được thử trên
mọi lần nâng cấp (lưu ý: an toàn hơn khi cung cấp phiên bản và thử thao tác
chỉ một lần).
Nếu bản kết hợp chưa được vận chuyển cho một số phiên bản, và bây giờ bạn đang
sửa đổi các tập lệnh của người bảo trì để xóa tệp lỗi thời, phiên bản trước
phải dựa trên phiên bản của gói mà bạn đang chuẩn bị, không phải
phiên bản đầu tiên của gói không có cấu hình. Điều này áp dụng cho tất cả các
các hành động theo cùng một cách.
Ví dụ, đối với một bản kết hợp bị xóa trong phiên bản 2.0-1 của một gói, phiên bản trước
nên được đặt thành 2.0-1 ~. Điều này sẽ làm cho kết cấu bị loại bỏ ngay cả khi
người dùng xây dựng lại phiên bản trước 1.0-1 as 1.0-1local1. Hoặc một gói chuyển đổi
đường dẫn từ một liên kết biểu tượng (được vận chuyển trong phiên bản 1.0-1) vào một thư mục (được vận chuyển trong phiên bản
2.0-1), nhưng chỉ thực hiện chuyển đổi thực tế trong các tập lệnh bảo trì trong phiên bản
3.0-1, nên đặt phiên bản trước đến 3.0-1 ~.
gói
Tên gói. Khi gói là "Multi-Arch: same", thông số này phải
bao gồm bộ định lượng kiến trúc, nếu không nó phải không thường bao gồm
bộ định tính kiến trúc (vì nó sẽ không cho phép các lớp chéo hoặc chuyển đổi từ
kiến trúc đặc trưng cho kiến trúc tất cả các hoặc ngược lại). Nếu tham số là
trống hoặc bỏ qua, DPKG_MAINTSCRIPT_PACKAGE và DPKG_MAINTSCRIPT_ARCH
các biến môi trường (như được thiết lập bởi dpkg) sẽ được sử dụng để tạo ra một cung cấp đủ điều kiện
tên gói hàng.
-- Tất cả các tham số của tập lệnh bảo trì phải được chuyển tiếp đến chương trình
sau khi --.
CONFILE LIÊN QUAN NHIỆM VỤ
Khi nâng cấp một gói, dpkg sẽ không tự động loại bỏ một cấu hình (một cấu hình
tập tin cho cái nào dpkg nên giữ lại các thay đổi của người dùng) nếu nó không có trong phiên bản mới hơn
phiên bản. Có hai lý do chính cho điều này; điều đầu tiên là conffile có thể có
đã bị rơi do tai nạn và phiên bản tiếp theo có thể khôi phục nó, người dùng sẽ không muốn
những thay đổi bị vứt bỏ. Thứ hai là cho phép các gói chuyển đổi tệp từ một
Conffile được duy trì dpkg tới một tệp được duy trì bởi các tập lệnh bảo trì của gói, thường là
bằng một công cụ như debconf hoặc ucf.
Điều này có nghĩa là nếu một gói được dự định đổi tên hoặc loại bỏ một cấu trúc liên kết, nó phải
làm như vậy một cách rõ ràng và dpkg-Maintscript-helper có thể được sử dụng để thực hiện xóa duyên dáng
và di chuyển conffiles trong các tập lệnh bảo trì.
Loại bỏ a trộn lẫn
Nếu một tệp tin được loại bỏ hoàn toàn, nó sẽ được gỡ bỏ khỏi đĩa, trừ khi người dùng có
đã sửa đổi nó. Nếu có sửa đổi cục bộ, chúng nên được giữ nguyên. Nếu gói
việc nâng cấp bị hủy bỏ, bản sao mới lỗi thời sẽ không biến mất.
Tất cả điều này được thực hiện bằng cách đặt đoạn mã sau vào phân tích trước, đăng tải
và bưu điện tập lệnh bảo trì:
dpkg-Maintscript-helper rm_conffile \
trộn lẫn phiên bản trước gói - "$ @"
trộn lẫn là tên tệp của conffile cần loại bỏ.
Triển khai hiện tại: trong phân tích trước, nó kiểm tra xem bản kết hợp đã được sửa đổi hay chưa và đổi tên
nó hoặc để trộn lẫn.dpkg-xóa (nếu không được sửa đổi) hoặc trộn lẫn.dpkg-sao lưu (nếu
sửa đổi). bên trong đăng tải, tệp sau này được đổi tên thành trộn lẫn.dpkg-bak và giữ cho
tham chiếu vì nó chứa các sửa đổi của người dùng nhưng trước đó sẽ bị xóa. Nếu gói
nâng cấp hủy bỏ, bưu điện cài đặt lại bản tin gốc. Trong quá trình thanh trừng, bưu điện sẽ
cũng xóa .dpkg-bak tệp được lưu giữ cho đến nay.
Đổi tên a trộn lẫn
Nếu một conffile được chuyển từ vị trí này sang vị trí khác, bạn cần đảm bảo rằng bạn di chuyển qua
bất kỳ thay đổi nào mà người dùng đã thực hiện. Điều này có vẻ là một thay đổi đơn giản đối với phân tích trước kịch bản tại
đầu tiên, tuy nhiên, điều đó sẽ dẫn đến việc người dùng được nhắc nhở bởi dpkg để phê duyệt kết quả
các chỉnh sửa mặc dù họ không chịu trách nhiệm về chúng.
Đổi tên duyên dáng có thể được thực hiện bằng cách đặt đoạn mã sau vào
phân tích trước, đăng tải và bưu điện tập lệnh bảo trì:
dpkg-Maintscript-helper mv_conffile \
conffile cũ mới-conffile phiên bản trước gói - "$ @"
conffile cũ và mới-conffile là tên cũ và mới của conffile để đổi tên.
Thực hiện hiện tại: phân tích trước kiểm tra xem bản kết hợp đã được sửa đổi chưa, nếu có thì
để lại tại chỗ nếu không nó được đổi tên thành conffile cũ.dpkg-xóa. Về cấu hình,
đăng tải Loại bỏ conffile cũ.dpkg-xóa và đổi tên conffile cũ đến mới-conffile if cũ-
trộn lẫn vẫn có sẵn. Khi hủy bỏ nâng cấp / hủy bỏ cài đặt, bưu điện đổi tên cũ-
trộn lẫn.dpkg-xóa trở lại conffile cũ nếu được yêu cầu.
BIỂU TƯỢNG VÀ MỤC Thiết bị chuyển mạch
Khi nâng cấp một gói, dpkg sẽ không tự động chuyển liên kết biểu tượng sang một thư mục hoặc
ngược lại. Hạ cấp không được hỗ trợ và đường dẫn sẽ được để nguyên.
Chuyển đổi a liên kết tượng trưng đến thư mục
Nếu một liên kết tượng trưng được chuyển sang một thư mục thực, bạn cần đảm bảo trước khi giải nén
liên kết biểu tượng đã bị xóa. Điều này có vẻ là một thay đổi đơn giản đối với phân tích trước tập lệnh lúc đầu,
tuy nhiên, điều đó sẽ dẫn đến một số vấn đề trong trường hợp quản trị viên cục bộ tùy chỉnh
liên kết tượng trưng hoặc khi hạ cấp gói.
Đổi tên duyên dáng có thể được thực hiện bằng cách đặt đoạn mã sau vào
phân tích trước, đăng tải và bưu điện tập lệnh bảo trì:
dpkg-Maintscript-helper symlink_to_dir \
tên đường dẫn mục tiêu cũ phiên bản trước gói - "$ @"
tên đường dẫn là tên tuyệt đối của liên kết tượng trưng cũ (đường dẫn sẽ là một thư mục ở cuối
của cài đặt) và mục tiêu cũ là tên mục tiêu của liên kết tượng trưng trước đây tại tên đường dẫn.
Nó có thể là tuyệt đối hoặc tương đối với thư mục chứa tên đường dẫn.
Thực hiện hiện tại: phân tích trước kiểm tra xem liên kết biểu tượng có tồn tại hay không và trỏ đến mục tiêu cũ,
nếu không thì nó được giữ nguyên, nếu không nó sẽ được đổi tên thành tên đường dẫn.dpkg-sao lưu. Trên
cấu hình, đăng tải Loại bỏ tên đường dẫn.dpkg-sao lưu if tên đường dẫn.dpkg-sao lưu vẫn là
một liên kết tượng trưng. Khi hủy bỏ nâng cấp / hủy bỏ cài đặt, bưu điện đổi tên tên đường dẫn.dpkg-sao lưu trở lại
tên đường dẫn nếu được yêu cầu.
Chuyển đổi a thư mục đến liên kết tượng trưng
Nếu một thư mục thực được chuyển sang một liên kết tượng trưng, bạn cần đảm bảo trước khi giải nén thư mục đó
thư mục bị xóa. Điều này có vẻ là một thay đổi đơn giản đối với phân tích trước tập lệnh lúc đầu,
tuy nhiên, điều đó sẽ dẫn đến một số vấn đề trong trường hợp thư mục chứa conffiles,
tên đường dẫn thuộc sở hữu của các gói khác, tên đường dẫn được tạo cục bộ hoặc khi hạ cấp
Gói.
Việc chuyển đổi hữu ích có thể được thực hiện bằng cách đặt đoạn mã sau vào
phân tích trước, đăng tải và bưu điện tập lệnh bảo trì:
dpkg-Maintscript-helper dir_to_symlink \
tên đường dẫn mục tiêu mới phiên bản trước gói - "$ @"
tên đường dẫn là tên tuyệt đối của thư mục cũ (đường dẫn sẽ là một liên kết tượng trưng ở cuối
của cài đặt) và mục tiêu mới là mục tiêu của liên kết biểu tượng mới tại tên đường dẫn. Nó có thể
hoặc là tuyệt đối hoặc liên quan đến thư mục chứa tên đường dẫn.
Thực hiện hiện tại: phân tích trước kiểm tra xem thư mục có tồn tại, không chứa
conffiles, tên đường dẫn thuộc sở hữu của các gói khác hoặc tên đường dẫn được tạo cục bộ, nếu không thì
nó được giữ nguyên, nếu không nó được đổi tên thành tên đường dẫn.dpkg-sao lưuvà một dàn trống
thư mục có tên tên đường dẫn được tạo, được đánh dấu bằng tệp để dpkg có thể theo dõi tệp đó. Trên
cấu hình, đăng tải kết thúc chuyển đổi nếu tên đường dẫn.dpkg-sao lưu vẫn là một
thư mục và tên đường dẫn là thư mục dàn dựng; nó xóa dấu thư mục dàn dựng
tệp, di chuyển các tệp mới được tạo bên trong thư mục dàn đến đích liên kết biểu tượng
mục tiêu mới/, thay thế thư mục dàn trống hiện đang trống tên đường dẫn với một liên kết biểu tượng tới Mới-
mục tiêuvà loại bỏ tên đường dẫn.dpkg-sao lưu. Khi hủy bỏ nâng cấp / hủy bỏ cài đặt, bưu điện
đổi tên tên đường dẫn.dpkg-sao lưu trở lại tên đường dẫn nếu được yêu cầu.
HỘI NHẬP IN GÓI
Khi sử dụng trình trợ giúp đóng gói, vui lòng kiểm tra xem nó có gốc dpkg-Maintscript-helper
tích hợp, có thể làm cho cuộc sống của bạn dễ dàng hơn. Xem ví dụ dh_installdeb(1).
Cho rằng dpkg-Maintscript-helper được sử dụng trong phân tích trước, sử dụng nó một cách vô điều kiện
yêu cầu phụ thuộc trước để đảm bảo rằng phiên bản bắt buộc của dpkg đã được giải nén
trước. Phiên bản yêu cầu phụ thuộc vào lệnh được sử dụng, cho rm_conffile và mv_conffile
nó là 1.15.7.2, cho symlink_to_dir và dir_to_symlink nó là 1.17.14:
Phụ thuộc trước: dpkg (> = 1.17.14)
Nhưng trong nhiều trường hợp, hoạt động do chương trình thực hiện không quan trọng đối với gói và
thay vì sử dụng phụ thuộc trước, chúng tôi chỉ có thể gọi chương trình nếu chúng tôi biết rằng
lệnh bắt buộc được hỗ trợ bởi dpkg:
nếu dpkg-Maintscript-helper hỗ trợ lệnh; sau đó
dpkg-Maintscript-helper lệnh ...
fi
Lệnh hỗ trợ sẽ trả về 0 khi thành công, 1 nếu ngược lại. Các hỗ trợ lệnh sẽ
kiểm tra xem các biến môi trường như được đặt bởi dpkg và được yêu cầu bởi tập lệnh có hiện diện hay không,
và sẽ coi đó là một thất bại trong trường hợp môi trường không đủ.
Sử dụng dpkg-Maintscript-helper trực tuyến bằng các dịch vụ onworks.net