ส่งคำตอบเริ่มต้นสำหรับคำถามติดตั้งแพ็คเกจ apt-get หรือไม่


27

ฉันพยายามเขียนสคริปต์การกำหนดค่าสำหรับเซิร์ฟเวอร์ใหม่และหนึ่งในขั้นตอนแรกคือการติดตั้งแพคเกจที่จำเป็นเช่น MySQL, phpMyAdmin และอื่น ๆ โดยใช้apt-get installอย่างไรก็ตามเมื่อ dpkg พยายามกำหนดค่าให้พวกเขาถาม ตัวเลือกไม่กี่อย่างเช่นรหัสผ่านรูทของ MySQL, รหัสผ่าน phpMyAdmin, เซิร์ฟเวอร์ที่ใช้ ฯลฯ

เนื่องจากฉันจะส่งต่อสคริปต์นี้ไปให้เพื่อนร่วมงานที่ไม่น่าจะอ่านคำแนะนำและความปรารถนาของฉันที่จะเริ่มต้นและเดินจากไปฉันจึงอยากรู้วิธีส่งผ่านคำตอบ "เริ่มต้น" / ค่าที่จะใช้ ซึ่งอาจรวมถึงชื่อผู้ใช้ / รหัสผ่าน / ค่าไดนามิกอื่น ๆ ที่ส่งผ่านบนบรรทัดคำสั่ง

-

ฉันรู้ว่าการมีรหัสผ่านในสคริปต์เป็นปัญหาด้านความปลอดภัย แต่ฉันยินดีที่จะเพิกเฉยต่อมันโดยเฉพาะอย่างยิ่งในแง่ของการติดตั้งแพคเกจโดยทั่วไปซึ่งคำตอบนี้จะบอกเป็นนัย

คำตอบ:


44

ใช้การกำหนดค่าล่วงหน้าของ debconf

ทำการติดตั้งทดสอบเพื่อรับค่าที่คุณต้องการ:

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

.. และตั้งค่ารหัสผ่านรูทเมื่อได้รับแจ้งระหว่างการติดตั้ง

จากนั้นคุณสามารถตรวจสอบว่าการตั้งค่า debconf เป็นอย่างไรสำหรับสิ่งที่คุณเพิ่งติดตั้ง (คุณอาจต้องติดตั้ง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

มีเสียงรบกวนอยู่บ้าง แต่ส่วนที่สำคัญคือการตั้งค่ารหัสผ่าน

จากนั้นสำหรับการติดตั้งใหม่คุณสามารถหลีกเลี่ยงพรอมต์อย่างสมบูรณ์โดยการตั้งรหัสผ่านล่วงหน้า:

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

ไม่มีข้อความแจ้งเลยระหว่างการติดตั้ง


10
sudo apt-get install debconf-utilsเท่าที่จำเป็น
แอนดรู

ดูเหมือนว่าสิ่งที่ฉันกำลังมองหาขอบคุณ! ฉันจะลองดูสักครู่
Tarka

นอกเหนือจากข้อผิดพลาดที่รู้จักกับ phpMyAdmin ไม่ยอมรับรหัสผ่านรูทของ MySQL ล่วงหน้าซึ่งทำงานได้อย่างสมบูรณ์แบบ!
Tarka

1
แค่สงสัยมีวิธีรับการตั้งค่า debconf ที่เป็นไปได้จากระบบแพคเกจโดยไม่ต้องติดตั้งแพคเกจหรือไม่?
stefan.at.wpf

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

คุณมีการอ้างอิงสำหรับสิ่งที่อ่าน $ DEBIAN_FRONTEND หรือไม่
แอนดรู

นี่เป็นส่วนหนึ่งของ Debian มานานแล้วที่ฉันคิดว่ามีเพียงเอียนเท่านั้นที่สามารถบอกคุณได้เมื่อมีการเพิ่ม
Michael Hampton

1
@Andrew มันอ่านโดยdebconfซึ่งเป็นสิ่งที่เกี่ยวข้องกับคำถาม
mgorven

@gorven Ahh ฉันไม่ได้ลึกมากไปกว่า dpkg มาก่อน
แอนดรู

AFAIK โซลูชันนี้ให้คุณข้ามพรอมต์และยอมรับค่าเริ่มต้นสำหรับคำตอบทั้งหมด หากคุณต้องการตั้งค่าคำตอบที่ไม่ใช่ค่าเริ่มต้นคุณต้องใช้วิธีแก้ไขปัญหาอื่นเช่นdebconf-set-selectionsวิธีการ
MestreLion

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.