Solve ttyname কীভাবে সমাধান করবেন ব্যর্থ: ভ্যাজ্রেন্টে ডিভাইসের জন্য অনুপযুক্ত ioctl?


21

এই স্নিপেট ব্যবহার করার সময় (ইনলাইন শেল বিধানকারী):

config.vm.provision "shell" do |s|
  s.inline = <<-SHELL
    <shell code>
  SHELL
end

এটির ফলাফল:

==> default: mesg: 
==> default: ttyname failed
==> default: : 
==> default: Inappropriate ioctl for device

দেখে মনে হচ্ছে অন্য ব্যক্তিরাও এই সমস্যাটি খুঁজে পেয়েছেন । কেউ কীভাবে সমাধান করতে জানেন?


আমি লক্ষ্য করেছি যে এমনকি এই বার্তাটি একটি ত্রুটি হিসাবে দেখানো হয়েছিল, স্ক্রিপ্টটি সফলভাবে কার্যকর করা হয়েছিল! কয়েকদিন পরে আমি একটি সম্ভাব্য ফিক্স দেখে আমি একটি উত্তর এখানে পোস্ট । সুতরাং সম্ভবত আপনার এটির প্রয়োজন নেই, তবে আপনি এটি চেষ্টা করতে পারেন এবং এটি যদি আপনার পক্ষে কাজ করে তবে এটি ব্যবহার করতে পারেন।
মন্ত্রী

@ মনিস্টার আপনাকে ধন্যবাদ। এটি বিষয়টি সমাধান করে। আপনি কি এসও থেকে উত্তরটি সরিয়ে সুপার ইউজারে পোস্ট করতে পারবেন? স্ট্যাকওভারফ্লো প্রোগ্রামিং সম্পর্কে।
030

আমি আনন্দিত যে সমাধানটি আপনার পক্ষেও কাজ করে! আপনার দ্রুত নিশ্চিতকরণের জন্য আপনাকে ধন্যবাদ! আমি এখানে একটি উত্তর পোস্ট করেছি, তবে আমি নিশ্চিত নই যে আমাকে আমার উত্তর এসও থেকে সরাতে হবে বা কোনও মডারেটর এসই থেকে এসই-তে প্রশ্ন সরিয়ে নেবে কিনা? আমি যথাযথ অনুমতি সহ যদি কেউ আমার উত্তর সম্পাদনা / মুছে ফেলে তবে আমি ঠিক আছি তবে এটি অন্য কারওর পক্ষে সহায়তা করতে পারে, সুতরাং আমি এখনই এটিকে "যেমন" রেখে যাচ্ছি তা বুঝতে পেরে এটি কিছুটা সদৃশ একটি সদৃশ (যেমন প্রশ্নটি মনে হচ্ছে)। ..
মন্ত্রী

উত্তর:


10

আমি লক্ষ্য করেছি যে এমনকি এই বার্তাটি ত্রুটি হিসাবে দেখানো হয়েছিল (লাল রঙে), স্ক্রিপ্টটি সফলভাবে কার্যকর করা হয়েছিল! কয়েকদিন পরে আমি একটি সম্ভাব্য ফিক্স দেখে আমি তাই একটি উত্তর পোস্ট । "ফিক্স" হ'ল:

# Prevent TTY Errors (copied from laravel/homestead: "homestead.rb" file)... By default this is "bash -l".
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"

হতে পারে আপনার কেবল এটির প্রয়োজন নেই, তবে আপনি এটি চেষ্টা করতে পারেন এবং এটি যদি আপনার পক্ষে কাজ করে তবে এটি ব্যবহার করতে পারেন।

আপনি উপরের মন্তব্য করা লাইনে দেখতে পাচ্ছেন - "মেসগ: টিটি নামটি ব্যর্থ হয়েছে ডিভাইসের জন্য অনুপযুক্ত আইওকটিএল" লারাভেল টিম থেকে বাধা পেয়েছে। এই এক জন্য ধন্যবাদ!

বেশিরভাগ বিকাশকারীরা যখন আমরা উন্নয়ন করি ত্রুটি / সতর্কতা এড়াতে চাই, সুতরাং এটি আমাদের প্রয়োজন ঠিক (একটি সম্ভাব্য সংশোধন) এর মতো মনে হয়।

গুরুত্বপূর্ণ দ্রষ্টব্য: আমি এই সমাধানটি খুব বেশি পরীক্ষা করে দেখিনি, তবে বাক্সটি "মেসগ: ttyname ব্যর্থ হয়ে ডিভাইসের জন্য অনুপযুক্ত ioctl" ত্রুটি ছাড়া শুরু হয়! আপনি এটি ব্যবহারে নির্দ্বিধায় রয়েছেন এবং যদি কোনও সমস্যা অনুভব করেন তবে অন্য কারও সময় বাঁচাতে কেবল একটি মন্তব্য ফেলে দিন!


1
দ্রষ্টব্য, এটি বিরতি বলে মনে হচ্ছে vagrant ssh -c '...'। সম্ভবত প্রদত্ত যুক্তি উপেক্ষা করা হয়।
স্কেইন

এটি আমার জন্য এই ত্রুটিটি কেবল লুকিয়েছে বলে মনে হচ্ছে তবে এটি এখনও কার্যকর হয় না
ওজজিআইই

16

1) ওপেন / রুট / প্রোফাইলে

2) আপত্তিকর লাইন সরান

3) এটির সাথে প্রতিস্থাপন করুন:

tty -s && mesg এন

শুভ লিনাক্সিং এবং একটি নতুন বছর আনন্দিত।

জর্জ হার্ট, এলএসইউ


5
দীর্ঘশ্বাস. যদি কেবল উবুন্টু (এবং অন্যান্য?) ডিস্ট্রো (গুলি) এটি স্ট্যান্ডার্ডে ঠিক করে দেয় /root/.profile... যদিও, man ttyম্যাকওএস-এ বলেছেন যে "--s বিকল্পটি` `test -t 0 '' কমান্ডের পক্ষে অবচয় করা হয়েছে।" , তাই আরও ভাল প্রতিস্থাপন হতে পারেtest -t 0 && mesg n
লিন্ডেস

1
এটি স্বয়ংক্রিয় করতে, আপনি ব্যবহার করতে পারেনsed -i -e 's/mesg n .*true/tty -s \&\& mesg n/g'
Gogowitsch

11

দেখে মনে হচ্ছে এই ডিফল্ট একটা পারস্পরিক আদানপ্রদান দ্বারা ঘটিত হয় ভবঘুরে কনফিগারেশন এর config.ssh.shellহতে bash -l(, যা একটি লগ-ইন শেল simulates এইভাবে যেমন লগইন সংক্রান্ত কনফিগারেশন ফাইল প্রক্রিয়াকরণের .profile) একটি লাইন দিয়ে /root/.profileলিনাক্স অন্তত কিছু ডিস্ট্রিবিউশন (সহ ফাইল, উদাহরণস্বরূপ, উবুন্টু / জেনিয়াল vag৪ টি ভিজেন্ট বক্সের মধ্যে একটি ), যা রয়েছে:

mesg n || true

এই ফাইলে এই লাইনটির জন্য আরও ভাল বিকল্পটি সম্ভবত এটির বলা হবে:

test -t 0 && mesg n

... এবং, পৃথক যান্ত্রিক ব্যবহারকারী হিসাবে পরিবর্তন করা শক্ত যে, একটি তাত্ক্ষণিক সমাধান হ'ল -lযোনি কনফিগারেশন থেকে বিকল্পটি বাদ দেওয়া , যেমন (এর মধ্যে Vagrantfile) সহ:

config.ssh.shell="bash"

(ক্যাভিয়েট: এটি অনুমানযোগ্য যে এই পরিবর্তনের ফলে সম্ভাব্য-নেতিবাচক পার্শ্ব প্রতিক্রিয়া হতে পারে It এটি আমার পক্ষে দুর্দান্ত কাজ করেছে বলে মনে হয়েছিল, যদিও কিছু বেসিক শেল প্রভিজারের সাথে apt-get update, যেমন , ইত্যাদি))


এর জন্য আপনাকে অনেক ধন্যবাদ! আমার নেওয়া: ওভাররাইড / রুট
ফেলিক্সুমেল

1

আপনি ভ্যাগ্রান্ট এবং ভার্চুয়ালবক্সের কোন সংস্করণ ব্যবহার করছেন?

ভার্চুয়ালবক্স 5.1.4 (উবুন্টি 16.04 সহ) সহ ভ্যাগ্রান্ট 1.8.5 ব্যবহার করার সময় আমি গতকাল এই সমস্যার মুখোমুখি হয়েছি। যাইহোক, আমি আজ ভ্যাগ্রান্ট ১.৯.২ এবং ভার্চুয়ালবক্স 5.1.14 এ আপগ্রেড করার পরে, সমস্যাটি চলে গেল।

নোট করুন, আপগ্রেড করার আগে, যেমন @ মিনিস্টার আরও উল্লেখ করেছেন, স্ক্রিপ্টটি ইস্যু ছাড়াই কার্যকর করা হয়েছিল। এটি কেবলমাত্র "ttyname ব্যর্থ" বার্তাটি আউটপুট করছিল যা এই ধারণাটি দেয় যে একটি ত্রুটি ঘটেছে, যখন প্রকৃতপক্ষে প্রভিশন স্ক্রিপ্টটি সফলভাবে কার্যকর হয়েছিল exec


0

আমি এই সমস্যাটি একটি ভ্যাগ্র্যান্ট ইনস্টলেশনতে ঘটতে শুরু করেছিলাম যা আমি বছরের পর বছর ধরে ব্যবহার করে আসছি এবং সময়ে সময়ে পাশাপাশি আপগ্রেডও করেছি। আমি সর্বশেষতম ভ্যাগ্র্যান্টে আপগ্রেড করেছি (1.9.1 -> 2.0.3) এবং সমস্যাটি চলে গেল। (এটি এর সাথে পরিচালিত হয়ে ওঠা অন্যান্য স্পর্শকাতর জিনিসও মুছে ফেলে)

নিশ্চিত নয় যে এটি নতুন সংস্করণ যা এটি স্থির করেছিল বা বিদ্যমান ফাইল / কনফিগারগুলি আপগ্রেড প্রক্রিয়াতে বা দুটির সংমিশ্রণে সতেজ করা হয়েছিল।


0

দেখে মনে হচ্ছে এটি কেবল মোজাভে / ক্যাটালিনার জন্য ভার্চুয়ালবক্স v6.0.2 এ কাজ করে! (+ অস্পষ্ট ২.২.২ - যদিও এটি গুরুত্বপূর্ণ তা নিশ্চিত নয়!)

সম্পাদনা করুন:

এটি এখন আপনার হোস্ট ম্যাকের জন্য এটি স্থির করে:

vagrant halt
sudo ifconfig vboxnet0 down
sudo ifconfig vboxnet0 up
vagrant up

https://github.com/hashicorp/vagrant/issues/1941#issuecomment-42274573

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