dpkg-reconfigure tzdata এবং debconf-set-Seferences বাছাই করে টাইমজোন পরিবর্তন করা হচ্ছে


18

আমি একটি স্ক্রিপ্ট সেট আপ করতে চাই যা কোনও মেশিনে স্বয়ংক্রিয়ভাবে সময় অঞ্চল পরিবর্তন করে (উবুন্টু ১১.১০ চলছে) এবং debconfডাটাবেসে সঠিক মানগুলি সেট করে। আমি নিম্নলিখিতগুলি চেষ্টা করে দেখেছি, তবে এটি কার্যকর হয় না (শেষে, বর্তমান সময় অঞ্চলটি অপরিবর্তিত রয়েছে এবং আমি নিজে dpkg-reconfigure tzdataকমান্ডটি চালালে নির্বাচিত মানগুলি প্রকৃতপক্ষে পুরানো থাকে):

#!/bin/sh -e
echo "tzdata    tzdata/Areas    select  Europe" | debconf-set-selections
echo "tzdata    tzdata/Zones/Europe select  Madrid" | debconf-set-selections
echo "tzdata    tzdata/Zones/America    select  " | debconf-set-selections
dpkg-reconfigure -f noninteractive tzdata

সুতরাং, এখন অবধি, আমি এটি ফাইল /etc/localtimeএবং /etc/timezoneসরাসরি জগাখিচুড়ি করছি , তবে আমি বরং উপায় dpkg-reconfigureএবং debconfউপায় পছন্দ করি ।

উত্তর:


26

সবচেয়ে সহজ উপায় যা আমি জানি:

echo "Europe/Zurich" > /etc/timezone 
dpkg-reconfigure -f noninteractive tzdata

wbat পরামিতিগুলি কি dpkg-reconfigure বলতে বোঝায়?
serengeti12

5
সচেতন থাকুন যে চলমান প্রক্রিয়াগুলি পুনরায় আরম্ভ না করে পরিবর্তনটি বেছে নিতে পারে না। যেমন আপনি ডেমনগুলি পুনরায় আরম্ভ না করা পর্যন্ত সার্ভার ডেমনগুলির লগ টাইমস্ট্যাম্পগুলি ভুল হতে পারে।
mc0e

6

আমি সবেমাত্র জানতে পেরেছি যে ডেবিয়ান স্ট্রেচ (9) এর সাথে আপনারও / ইত্যাদি / স্থানীয় সময় পরিবর্তন করতে হবে, এই জাতীয় কিছু:

ln -fs /usr/share/zoneinfo/`cat /etc/timezone` /etc/localtime

প্রয়োজন হয়. Andrekeller এর উত্তর সংশোধন করতে আপনার প্রয়োজন:

echo "Europe/Zurich" > /etc/timezone 
ln -fs /usr/share/zoneinfo/`cat /etc/timezone` /etc/localtime
dpkg-reconfigure -f noninteractive tzdata

আমার দিন বাঁচা! অন্যান্য সমাধানগুলি ডেবিয়ান 9
ব্র্যান্ডন

2
আসলে শুধুমাত্র লিঙ্ক ইত্যাদি ইত্যাদি / স্থানীয় সময় প্রয়োজন, কারণ ডিপি কেজি-পুনর্নির্মাণ কলিং / ইত্যাদি /
টাইমজোনটি

@ ড্যানিয়েলডিনাইজস বা বিকল্পভাবে আপনি সেই অদ্ভুত ln -fs ....লাইনটিকে সরল করে প্রতিস্থাপন করতে পারেন rm -f /etc/localtime, এবং এটি এখনও কাজ করবে (এবং ডাবকনফ /etc/localtimeসঠিক মান সহ পুনঃস্থাপন করবে ); বিস্তারিত জানার জন্য আমার উত্তর দেখুন।
মাতিজা নলিস

4

ডিপকনফ ব্যবহারের জন্য, dpkg-reconfigure কল করার আগে, আপনাকেও মুছে ফেলতে হবে /etc/localtimeএবং /etc/timezone। এছাড়াও সম্ভাব্য অতিরিক্ত স্থান (আপনার প্রশ্নের মতো!) থেকে সাবধান থাকুন যা সৌম্য নয়।

সুতরাং "ডিবনফ উপায়" যে কাজ করে (ডেবিয়ান স্ট্রেচে) তা হ'ল:

echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select Madrid" | debconf-set-selections
rm -f /etc/localtime /etc/timezone
dpkg-reconfigure -f noninteractive tzdata

কারণটি হ'ল tzdata কনফিগার স্ক্রিপ্টটি স্মার্ট হওয়ার চেষ্টা করে এবং যদি এটি আগে কখনও কনফিগার করা হয় বা ব্যবহারকারী সময়সীমার সাথে ম্যানুয়ালি মিশ্রিত করে থাকে তবে অন্যরকম আচরণ করবে।

অতিরিক্ত

অনুরূপ সমস্যাটি নিজেই ডিবাগ করার জন্য, আপনি প্রথমে এটি করবেন:

export  DEBCONF_DEBUG=developer

যা নিম্নলিখিত তথ্য সরবরাহ করবে:

# dpkg-reconfigure -f noninteractive tzdata
debconf (developer): starting /var/lib/dpkg/info/tzdata.config reconfigure 2018e-0+deb9u1
debconf (developer): <-- VERSION 2.0
debconf (developer): --> 0 2.0
debconf (developer): <-- CAPB backup
debconf (developer): --> 0 multiselect escape
debconf (developer): <-- SET tzdata/Areas Etc
debconf (developer): --> 0 value set
debconf (developer): <-- SET tzdata/Zones/Etc UTC
debconf (developer): --> 0 value set
debconf (developer): <-- INPUT high tzdata/Areas
debconf (developer): --> 30 question skipped
debconf (developer): <-- GO
debconf (developer): --> 0 ok
debconf (developer): <-- GET tzdata/Areas
debconf (developer): --> 0 Etc
debconf (developer): <-- INPUT high tzdata/Zones/Etc
debconf (developer): --> 30 question skipped
debconf (developer): <-- GO
debconf (developer): --> 0 ok
debconf (developer): starting /var/lib/dpkg/info/tzdata.postinst configure 2018e-0+deb9u1
debconf (developer): <-- VERSION 2.0
debconf (developer): --> 0 2.0
debconf (developer): <-- GET tzdata/Areas
debconf (developer): --> 0 Etc
debconf (developer): <-- GET tzdata/Zones/Etc
debconf (developer): --> 0 UTC
debconf (developer): <-- STOP

যা আপনি দেখাতে হবে এটি জোর সেটের তাদের জন্য ব্যবহারকারীকে জিজ্ঞাসা (সুতরাং মান আপনার সাথে সেট overwrite করার আগে আমাদের মান debconf-set-selections)।

তারপরে আপনি শেবাং /var/lib/dpkg/info/tzdata.configথেকে এটিকে পরিবর্তন #!/bin/shকরতে #!/bin/sh -xএবং প্রোগ্রামের প্রবাহকে অনুসরণ করবেন, যেখানে আপনি দেখতে পাবেন এটি এটি করে:

+ [ -L /etc/localtime ]
+ readlink /etc/localtime
+ TIMEZONE=/usr/share/zoneinfo/Etc/UTC

আপনি খুঁজছেন /var/lib/dpkg/info/tzdata.configএটি পাবেন:

# If /etc/localtime is a link, update /etc/timezone
if [ -L /etc/localtime ] ; then
    TIMEZONE="$(readlink /etc/localtime)"

যা ব্যাখ্যা করেছে যে @ ফিকশন উত্তরটি কেন কাজ করে। আরও স্ক্রিপ্টটি আরও সন্ধান করলে আপনি দেখতে পাবেন যে আপনি যদি '/ ইত্যাদি / লোকালটাইম' অপসারণ করেন তবে @andrekeller উত্তরটি আরও নতুন ডেবিয়ান সংস্করণগুলিতে কাজ করে।

আশা করি এই ডিবাগিং সহায়তা আপনাকে সাহায্য করবে যখন দেবিয়ানের পরবর্তী সংস্করণটি স্ক্রিপ্টটিকে আরও চৌকস করে তুলবে এবং বিদ্যমান উত্তরগুলিও অবৈধ হয়ে উঠবে। ডিবাগিং ডাবকনফ সম্পর্কিত আরও তথ্য ডিবেকনফ-ডেভেল (7) এ পাওয়া যাবে

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