Chuyển câu trả lời mặc định cho câu hỏi cài đặt gói apt-get?


27

Tôi đang cố gắng viết một tập lệnh cấu hình cho các máy chủ mới và một trong những bước đầu tiên là cài đặt một loạt các gói cần thiết, chẳng hạn như MySQL, phpMyAdmin, v.v. bằng cách sử dụng apt-get installTuy nhiên, khi dpkg cố gắng định cấu hình chúng, nó sẽ yêu cầu bạn một vài tùy chọn, chẳng hạn như mật khẩu root MySQL, mật khẩu phpMyAdmin, máy chủ nào sẽ sử dụng, v.v.

Vì tôi có thể sẽ chuyển kịch bản này cho các đồng nghiệp không có khả năng đọc lời nhắc và mong muốn của tôi chỉ đơn giản là bắt đầu và bỏ đi, tôi muốn biết cách chuyển qua một loạt các câu trả lời "mặc định" / giá trị cho nó sử dụng. Điều này có thể bao gồm tên người dùng / mật khẩu / giá trị động khác được truyền trên dòng lệnh.

-

Tôi nhận ra rằng có mật khẩu trong tập lệnh là một vấn đề bảo mật, nhưng tôi sẵn sàng bỏ qua nó, đặc biệt theo nghĩa chung hơn là cài đặt các gói mà câu trả lời cho điều này sẽ ngụ ý.

Câu trả lời:


44

Sử dụng preseising cấu hình preseising.

Thực hiện cài đặt thử nghiệm để có được các giá trị mà bạn muốn:

root@test1:~# apt-get install mysql-server

..và đặt mật khẩu root khi được nhắc trong quá trình cài đặt.

Sau đó, bạn có thể kiểm tra cài đặt gỡ lỗi trông như thế nào đối với những gì bạn vừa cài đặt (bạn có thể cần cài đặt debconf-utils):

root@test1:~# debconf-get-selections | grep mysql-server
mysql-server-5.5        mysql-server/root_password_again        password
mysql-server-5.5        mysql-server/root_password      password
mysql-server-5.5        mysql-server/error_setting_password     error
mysql-server-5.5        mysql-server-5.5/postrm_remove_databases        boolean false
mysql-server-5.5        mysql-server-5.5/start_on_boot  boolean true
mysql-server-5.5        mysql-server-5.5/nis_warning    note
mysql-server-5.5        mysql-server-5.5/really_downgrade       boolean false
mysql-server-5.5        mysql-server/password_mismatch  error
mysql-server-5.5        mysql-server/no_upgrade_when_using_ndb  error

Có một số tiếng ồn ở đó, nhưng phần quan trọng là cài đặt mật khẩu.

Sau đó, để cài đặt mới, bạn có thể tránh hoàn toàn lời nhắc bằng cách đặt mật khẩu trước:

root@test2:~# echo "mysql-server-5.5 mysql-server/root_password_again password Som3Passw0rd" | debconf-set-selections
root@test2:~# echo "mysql-server-5.5 mysql-server/root_password password Som3Passw0rd" | debconf-set-selections
root@test2:~# apt-get install mysql-server

Không có lời nhắc nào trong quá trình cài đặt đó.


10
sudo apt-get install debconf-utilskhi cần thiết
Andrew

Điều này trông giống như chính xác những gì tôi đang tìm kiếm, cảm ơn! Tôi sẽ thử ngay.
Tarka

Ngoài một lỗi đã biết với phpMyAdmin không chấp nhận mật khẩu gốc MySQL được khởi tạo trước, điều này hoạt động hoàn hảo!
Tarka

1
chỉ tự hỏi, có cách nào để có được các cài đặt gỡ lỗi có thể từ hệ thống gói mà không cần cài đặt các gói không?
stefan.at.wpf

17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_

Bạn có tham khảo cho những gì đang đọc $ DEBIAN_FRONTEND không?
Andrew

Đây là một phần của Debian từ rất lâu đến nỗi tôi nghĩ chỉ Ian mới có thể thực sự nói với bạn khi nó được thêm vào.
Michael Hampton

1
@Andrew Nó được đọc bởi debconf , đây là những gì thực sự liên quan đến các câu hỏi.
mgorven

@mgorven Ahh, tôi chưa đi sâu hơn dpkg trước đây.
Andrew

AFAIK, giải pháp này chỉ cho phép bạn bỏ qua lời nhắc và chấp nhận mặc định cho tất cả các câu trả lời. Nếu bạn muốn đặt câu trả lời không mặc định, bạn phải sử dụng giải pháp khác, chẳng hạn như debconf-set-selectionsphương pháp.
MestreLion

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.