একটি ইন্টারেক্টিভ উপায়ে dpkg-পুনরায় কনফিগার করতে ইনপুট মানগুলি খাওয়ানো


23

আমি অ-ইন্টারেক্টিভ মোডের মাধ্যমে সরবরাহ করা সমস্ত মান (স্ক্রিপ্টে) দিয়ে dpkg-পুনরায় কনফিগার করে উবুন্টু প্যাকেজটি কনফিগার করতে চাই।

আসলে আমার কেসটি ফায়ার বার্ড কনফিগারেশন ( http://www.firebirdsql.org/manual/ubusetup.html ), যে কমান্ডটি ব্যবহার করার সময়:

sudo dpkg-reconfigure firebird2.5-superclassic -freadline

আমাকে 2 টি মানের জন্য জিজ্ঞাসা করে, যেখানে উত্তরগুলি হবে 'Y' এবং 'newpwd'।

নমুনা আউটপুট এর মত দেখাচ্ছে:

sudo dpkg-reconfigure firebird2.5-superclassic -freadline
 * Firebird 2.5 superclassic server not running
Configuring firebird2.5-superclassic
------------------------------------

Accept if you want Firebird server to start automatically.

If you only need the Firebird client and there are no databases that will be served by this host, decline.

Enable Firebird server? Y


Password for firebird 2.5
-------------------------

Firebird has a special user named SYSDBA, which is the user that has access to all databases. SYSDBA can also create new databases and users. Because of this, it 
is necessary to secure SYSDBA with a password.

The password is stored in /etc/firebird/2.5/SYSDBA.password (readable only by root). You may modify it there (don't forget to update the security database too, 
using the gsec utility), or you may use dpkg-reconfigure to update both.

To keep your existing password, leave this blank.

Password for SYSDBA: 


 * Starting Firebird 2.5 superclassic server...
   ...done.
 * Firebird 2.5 superclassic server already running

আমি এ here stringsজাতীয় বার স্ক্রিপ্টের মাধ্যমে চেষ্টা করেছি :

sudo dpkg-reconfigure firebird2.5-superclassic -f readline << EOF
Y
newpwd
EOF

তবে এটি কোনও কারণে কার্যকর হয়নি এবং এটি মান সরবরাহ করার জন্য বলেছিল।

স্ক্রিপ্টে প্রয়োজনীয় মানগুলি কীভাবে ফিড করবেন কোনও ধারণা?

উত্তর:


11

আপনি সর্বদা প্রত্যাশার ভাষাটি এমন কোনও প্রক্রিয়াটির সাথে ইন্টারঅ্যাকশনটি স্বয়ংক্রিয় করতে ব্যবহার করতে পারেন যা এর এর ইনপুটটি প্রত্যাশা করে tty। আমি সত্যিই এটি আগে ব্যবহার করি নি তাই আমি এখানে কোডটি সত্যিই যুক্ত করতে পারছি না তবে এটি আপনার সাধারণ ব্যবহারের ক্ষেত্রে।

হালনাগাদ:

[পিটার বাটকোভিক] আমি আমাকে expectসঠিক দিক হিসাবে চিহ্নিত করা বিবেচনা করি , এই স্ক্রিপ্টটি দিয়ে আমি শেষ করেছি:

#!/usr/bin/expect

spawn dpkg-reconfigure firebird2.5-superclassic -freadline
expect "Enable Firebird server?"
send "Y\r"

expect "Password for SYSDBA:"
send "newpwd\r"

# done
expect eof

আমাকে সঠিক দিক নির্দেশ করার জন্য ধন্যবাদ সমাধানটির বাস্তবায়ন করা সহজ ছিল বলে আমি এই উত্তরটিকে সঠিক হিসাবে বিবেচনা করি।
পিটার বাটকোভিক

আমি আই 18 এন ইস্যুগুলির সম্ভাবনা সম্পর্কে সতর্ক থাকব তবে "ঘরের ব্যবহার" এর জন্য এটি নিরাপদ বলে মনে হচ্ছে।
জেসেন

20

ডেবিয়ান প্যাকেজগুলি ইনস্টলেশন-সময় সেটিংস সংগ্রহ করার জন্য ডাবকনফ ব্যবহার করে । ডাবকনফ ব্যবহারকারীকে মূল্যবোধের অনুরোধ জানাতে একাধিক সীমান্ত সমর্থন করে। -fবিকল্প dpkg-reconfigureনির্বাচন যা ব্যবহারের ফ্রন্টএন্ড debconf।

readlineফ্রন্টএন্ড ইন্টারেক্টিভ ব্যবহারের জন্য ডিজাইন করা হয়েছে। এটি একটি স্বয়ংক্রিয় স্ক্রিপ্টে ব্যবহার করবেন না।

যদি ডিফল্ট মানগুলি ভাল থাকে তবে কেবল noninteractiveসম্মুখভাগটি ব্যবহার করুন ।

আপনি যদি বিভিন্ন মান সরবরাহ করতে চান তবে আপনার কাছে দুটি বিকল্প রয়েছে। আপনি অগ্রভাগের সাথে লেগে থাকতে পারেন noninteractive, এবং ডেবকনফ ডাটাবেসটি পূর্ব নির্ধারণ করতে পারেন । এটি করার সহজতম উপায় হ'ল একটি মেশিনে প্যাকেজটি ইনস্টল করা এবং এটি ইন্টারেক্টিভভাবে কনফিগার করা, তারপরে প্রাসঙ্গিক অংশগুলি নিষ্কাশন করুন /var/cache/debconf/config.datএবং এই ফাইলটি ডাবকনফে সরবরাহ করুন:

DEBCONF_DB_OVERRIDE='File {/path/to/config.dat}' dpkg-reconfigure -fnoninteractive firebird2.5-superclassic

আরেকটি পদ্ধতি ব্যবহার করা editorফ্রন্টএন্ড ও এনভায়রনমেন্ট ভেরিয়েবল সেট VISUAL(অথবা EDITOR, কিন্তু VISUALবেশি প্রাধান্য রয়েছে EDITORযদি এটি সেট করা হয়) একটি প্রোগ্রাম যা একটি আর্গুমেন্ট হিসাবে বর্তমান সেটিংস সমন্বিত একটি ফাইল লাগে, এবং যে সেটিংস যদি আপনি চান সাহায্যে ফাইল মুছে ফেলা হয়।


6
/var/cache/debconf/config.datনিজেকে পার্স করার দরকার নেই । আপনি প্যাকেজ debconf-get-selectionsথেকে ব্যবহার করতে পারেন debconf-utils। দেখুন এই উদাহরণস্বরূপ।
জোসেফ আর।

এছাড়াও, আমি নিশ্চিত নই যে প্রিসিডিং এখানে উপযুক্ত। আমরা দৌড়ানোর কথা বলছি dpkg-reconfigure, যা আমি অনুমান করছি যে ওপি স্বয়ংক্রিয় করতে চায় কারণ সে প্রায়শই এটি করবে।
জোসেফ আর।

ইঙ্গিতগুলির জন্য ধন্যবাদ প্রত্যাশা স্ক্রিপ্ট যেতে সিদ্ধান্ত নিয়েছে। এখানে গভীর তদন্ত করেনি।
পিটার বাটকভিক

2
@JosephR। প্রকৃতপক্ষে, debconf-get-selectionsএখানে দরকারী হতে পারে। পিটার যদি প্রায়শই বিভিন্ন মান সহ এটি করতে চান তবে তার উচিত একটি config.datগতিশীল। এটি এর চেয়ে সহজ expectexpectহতাশার পথ। উদাহরণস্বরূপ, যদি প্যাকেজের কোনও নতুন সংস্করণ কোনও নতুন প্রশ্ন (বা অন্যথায় আপনার আরও বেশি পরিশীলিত স্ক্রিপ্টের প্রয়োজন হয়) প্রবর্তন করে তবে এটি ভেঙে যাবে।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

@ জোসেফআর আপনি পোস্ট করা প্রাক-বীজ সম্পর্কিত লিঙ্কটি আর কাজ করে না, চেষ্টা করুন: zacks.eu/debian-preseed
cjohnson318

13

debconf-set-selectionsডাবকনফ ডাটাবেসে নতুন মান সন্নিবেশ করতে কমান্ডটি ব্যবহার করুন ( /var/cache/debconf/config.dat)।


এলির উত্তর আমার পক্ষে পরিষ্কার ছিল না, তাই আমি ধাপে ধাপে এটি ব্যাখ্যা করব।

প্রথম কাজটি হ'ল ইন্টারেক্টিভভাবে প্যাকেজ ইনস্টল করা এবং নির্বাচিত নির্বাচনগুলি ( firebirdআপনার প্যাকেজের নাম পরিবর্তন করে) এর মাধ্যমে গ্রহণ করুন:

sudo debconf-get-selections | grep ^firebird

বা:

grep -C2 firebird /var/cache/debconf/config.dat

তারপরে ডাবকনফ ডাটাবেসগুলির উত্তর সহ প্রাক-বীজ করুন debconf-set-selections, উদাহরণস্বরূপ:

echo firebird2.5-superclassic shared/firebird/enabled boolean true | sudo debconf-set-selections -v
echo firebird2.5-superclassic shared/firebird/sysdba_password/new_password password foo | sudo debconf-set-selections -v

বাক্য গঠন যেখানে:

echo foo-owner-package-name foo-template-name value-type value | debconf-set-selections

ttf-mscorefonts-installerপ্যাকেজের জন্য এখানে আরও একটি উদাহরণ রয়েছে :

echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections

দ্রষ্টব্য: ইনপুট নির্বাচনগুলি স্ট্যান্ডার্ড ইনপুট বা ফাইল থেকে হতে পারে।

man debconf-set-selectionsআরও তথ্যের জন্য চেক করুন:


বিকল্প উপায় কিকস্টার্ট ব্যবহার করা হয় ।


ডেবকনফ-সেট-নির্বাচনগুলি সমস্ত ক্ষেত্রে কার্যকর হবে বলে মনে হয় না, যেমন: এক্সিম।
জেসেন

1
আপনি পরিবর্তন করছেন এমন ডেব প্যাকেজের মধ্যে নির্মিত কনফিগারেশন স্ক্রিপ্টটি ডিবেকনফ-সেট-নির্বাচনগুলি চালায় না। এটি কেবলমাত্র প্যাকেজটি যে নির্বাচনের জন্য জিজ্ঞাসা করছে তার নির্বাচনগুলি সেট করে যা এর প্রথম অংশ। dpkg-reconfigure দুটি অংশই চালায়।
ফ্রেড

4

আমি প্রায় এক ঘন্টার জন্য ঘুরে বেড়াচ্ছি কেবল এইটির সমাধানটি এক-লাইনারে নামিয়ে দেওয়ার চেষ্টা করেছি এবং শেষ পর্যন্ত আমি এটি পেয়েছি: ডাবকনফ-সেট-নির্বাচন

echo "debconf debconf/frontend select noninteractive" | sudo debconf-set-selections

এটি ডিফোনফকে ডিফল্টগুলি ব্যবহার করতে বাধ্য করবে এবং আপনাকে বাগ করবে না। আপনি যে কোনও ডেবিয়ান প্যাকেজের জন্য কনফিগারেশন ডিফল্ট সেট করতে পারেন, আরও তথ্যের জন্য ম্যানপেজ দেখুন।


না হিসাবে একই sudo dpkg-reconfigure debconf -f noninteractiveবা export DEBIAN_FRONTEND=noninteractive?
কেনারব

0

উপরে উল্লিখিত ডিবকনফ-গেট-সিলেকশনস / সেট-সিলেকশন পদ্ধতি ব্যবহার করে আমি এলডিএপি সেটিংসের (ldap-auth-config প্যাকেজ) স্ক্রিপ্টযুক্ত পুনরায় কনফিগারেশন করার চেষ্টা করছি, কেবলমাত্র এই প্যাকেজটি প্রাথমিক ইনস্টলেশন পরবর্তী ডিবেকনফে সেটিংসকে উপেক্ষা করে। আপনি ইনস্টল করার আগে প্রাক-বীজের জন্য ডেবকনফ ব্যবহার করতে পারেন, তবে ldap-auth-config ইনস্টল করার পরে সিস্টেম কনফিগারেশন ফাইলগুলির মধ্যে যা কিছু সেট করা থাকে তার সাথে আপনার ডেডকনফ সেটিংসকে ওভাররাইট করতে পছন্দ করে। প্যাকেজ পাম-লেখক-কনফিগারেশনের একই আচরণ রয়েছে।

এডিটর / ভিসুয়াল পদ্ধতিটি এক্ষেত্রে ব্যবহার করাও বেশ কঠিন কারণ ldap-auth-config এটিকে বিভিন্ন সেট প্রশ্নের জন্য একাধিকবার অনুরোধ করে। এটি কোনও প্রত্যাশিত স্ক্রিপ্টের সাহায্যে বা সরাসরি সিস্টেম কনফিগারেশন ফাইলগুলিতে পরিবর্তন করে আরও সহজে পরিচালনা করা যায় can সুতরাং, প্রত্যাশায় পিছনে পড়া এড়ানো সহজ নয়!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.