Cách làm cho apt-get chấp nhận các tệp cấu hình mới trong bản cài đặt debian không giám sát từ Repo


21

Tôi đang viết một tập lệnh cho bản cài đặt không có giám sát của gói trong repo của chúng tôi, đó là gói phần mềm với một trong các tệp cấu hình được đánh dấu của Debian. Có tùy chọn nào tôi có thể chuyển qua apt-get/ aptitudeđể nó chấp nhận các tệp cấu hình mới không?

Về cơ bản tôi cần một apt/ aptitudetương đương với dpkg --force-confnew

Tôi cần trả lời câu hỏi sau đây được đặt trong khi apt-getđang cài đặt với Y


Tệp cấu hình `` / opt / application / conf / XXX.conf` '

==> File on system created by you or by a script.
==> File also in package provided by package maintainer.

What would you like to do about it ?  Your options are:
Y or I  : install the package maintainer's version
N or O  : keep your currently-installed version
  D     : show the differences between the versions
  Z     : background this process to examine the 

The default action is to keep your current version.

Thông tin bổ sung:

Ngoài ra, tôi đang truyền sudomật khẩu trong một đường ống để thực thi lệnh

echo "mysudopass"|sudo -S apt-get mypackage

Đây là lỗi gắn cờ khi cài đặt khi cài đặt ở giai đoạn tương tác cấu hình.

Tôi đang dùng Ubuntu 10.04
phiên bản apt: apt 0.7.25.3

Tại sao tôi không thể sử dụng dpkg: Những Debian này sẽ được cài đặt từ Repo và tôi không có Debian cục bộ trên máy của mình


Câu trả lời:


22

Bạn có thể truyền dpkgtham số để apt-getthích điều này

apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew install pkgname1 pkgname2 ...

Với --force-confdefnếu các tập tin cấu hình cũ vẫn còn tồn tại, họ sẽ không có được ghi đè. Vì vậy, bạn có thể sẽ không sử dụng nó, tôi chỉ là tài liệu cho người khác.

sudosẽ không yêu cầu mật khẩu nếu bạn phủ nhận tùy chọn xác thực cho người dùng hoặc thêm NOPASSWDthẻ vào mục cụ thể. ví dụ

someuser ALL = NOPASSWD: /usr/bin/apt-get

7

Bạn có thể thử như sau:

export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install whatever-2

Nhưng lưu ý rằng điều này có ý nghĩa, như mật khẩu mặc định trống (có thể bạn muốn một số công cụ triển khai / cấu hình như con rối, đầu bếp, vải ...?).

Xem sudoers (5) về cách cho phép các sudoyêu cầu không cần mật khẩu .


3

Ngoài ra, với những gì Forcefsck đề xuất, tôi khuyên bạn nên thêm phần này vào cài đặt APT để bạn không cần phải thêm các tùy chọn khó viết này mọi lúc. Ngoài ra, điều này sẽ hữu ích cho các nâng cấp không giám sát nếu bạn có các thiết lập này.

Tạo /etc/apt/apt.conf.d/71debconftập tin để có nội dung sau:

Dpkg::Options {
  "--force-confnew";
};

Lưu ý (từ Geoff): thay đổi này sẽ là thay đổi toàn cầu. Nếu bạn có các gói khác trên hệ thống mà bạn muốn nhận các bản nâng cấp không giám sát nhưng cũng được cấu hình thủ công, đây sẽ không phải là giải pháp thích hợp.


Đây có thể là một lựa chọn tốt, tuy nhiên điều quan trọng cần lưu ý là đây sẽ là một thay đổi TOÀN CẦU. Nếu bạn có các gói khác trên hệ thống mà bạn muốn nhận các bản nâng cấp không giám sát nhưng cũng đã được định cấu hình, đây sẽ không phải là giải pháp thích hợp.
Geoff

2

Bên cạnh những câu trả lời khác, bạn cũng có thể phải thiết lập môi trường UCF_FORCE_CONFFNEW = 1 .

Ví dụ: openssh trong debian Stretch sử dụng ucf (không phải debconf) trong đó openssh-server/openssh-7.4p1/debian/openssh-server.postinstđể hỏi về tệp cấu hình. (Bạn có thể thấy openssh-server.postinstbằng cách sử dụng dgetchống lại http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1-10+deb9u4.dsc )

Chúng tôi đã phải sử dụng tất cả các thủ thuật trên trang này ngoài việc là người dùng tự do của việc gỡ rối trước .

Tuy nhiên, chúng tôi đã dừng lại chỉ export DEBIAN_FRONTEND=noninteractivevì chúng tôi muốn biết nếu chúng tôi bỏ lỡ điều gì đó (điều đó có thể quan trọng). Trường hợp sử dụng của chúng tôi là một nhà điều hành bắt đầu hoạt động. Việc nâng cấp dự kiến ​​sẽ không tương tác, nhưng nhà điều hành có mặt nếu có sự cố và hộp thoại tự hiển thị. Tình hình của bạn có thể khác

Nhưng export DEBIAN_FRONTEND=noninteractivelà búa tạ của bạn.

Chỉ cần cẩn thận: Cài đặt -o Dpkg::Options::=--force-confnewvà / hoặc UCF_FORCE_CONFFNEW=1có nghĩa là tất cả các tệp cấu hình từ các gói đã cài đặt trở lại các gói ngược dòng. Vì vậy, ví dụ trong trường hợp openssh-server, bạn /etc/ssh/sshd_configsẽ được đặt lại về cài đặt gốc. Và ví dụ PermitRootLogin=yessẽ được gỡ bỏ. Nhưng tất nhiên bạn không sử dụng nó, vì vậy bạn sẽ ổn thôi! ;-)

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.