تحديث الجوهرة على نظام التشغيل Windows - هل هو معطل؟

StackOverflow https://stackoverflow.com/questions/134581

  •  02-07-2019
  •  | 
  •  

سؤال

هذه متابعة ل هذا السؤال.

عندما أقوم بإصدار gem update الأوامر على Windows ، كلما وصل الأمر إلى جوهرة لا تحتوي أحدث إصدار على ثنائيات Windows ، فسوف يحاول بناء الامتداد الأصلي الذي سيفشل بالطبع.على سبيل المثال:

Updating sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)
  ERROR: Failed to build gem native extension.

c:/ruby/bin/ruby.exe extconf.rb update
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no

nmake
'nmake' is not recognized as an internal or external command,
operable program or batch file.

السلوك القديم قبل 1.x لطلب النظام الأساسي المطلوب على الأقل جعل التحديث ممكن.الآن لا يمكنني التحديث على الإطلاق إلا إذا قمت بإلغاء تثبيت الأحجار الكريمة المزعجة (حاليًا SQLite3-Ruby و HPRICOT) ، قم بتشغيل التحديث ، ثم أعد تثبيت الأحجار الكريمة باستخدام مفتاح التحويل.

فهل أحد عنده حل لهذه المشكلة أم أننا عالقون فيها؟


ملحوظة:

$ gem -v
1.2.0

$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

ملحوظة (26 سبتمبر 2008): لقد قمت للتو بالتحديث إلى الإصدار 1.3.0 من الأحجار الكريمة ولا تزال هذه المشكلة قائمة.

ملحوظة (18 نوفمبر 2008): تم التحديث للتو إلى الإصدار 1.3.1 من الأحجار الكريمة ولا تزال المشكلة قائمة.

ملحوظة (28 أبريل 2009): الاصدار الاخير من الجواهر (1.3.2) يتخطى الآن أي جواهر يفشل فيها إنشاء الملحقات الأصلية أثناء التحديث؛بمعنى آخر، تم إصلاح المشكلة.مرحا!

هل كانت مفيدة؟

المحلول

الأحجار الكريمة، اعتبارا من الإصدار 1.3.2, ، سوف يتخطى الآن الأحجار الكريمة التي فشل إنشاؤها، لذا قم بتحديث Rubygems إلى الإصدار الأحدث ويجب حل المشكلة التي تمت مناقشتها هنا.

gem update --system

تم الآن إهمال الحل التالي، لكنني أتركه هنا للسجل.

أنا بدأت موضوعا حول هذه المسألة في منتدى روبي (إنها واجهة أمامية للقائمة البريدية).هناك بعض المناقشات المثيرة للاهتمام.إنه يستحق القراءة.يوجد أيضًا حل مبتكر للغاية لهذه المشكلة:

`gem.bat outdated`.split(/\n/).map{|z|z.scan(/^[^[:space:]]+/)}.flatten.each{|z| `gem.bat update #{z}`}

ويطلق على gem outdated الأمر ويبني قائمة بجميع الأحجار الكريمة التي عفا عليها الزمن.ثم يتكرر على القائمة والمكالمات gem update لكل جوهرة عفا عليها الزمن على حدة.إذا فشل أحدهم، فإنه ينتقل فقط إلى التالي.

نصائح أخرى

يبدو أننا عالقون.لقد وجدت هنا أنه لا يوجد جوهرة mswin32 للإصدار الأخير (1.2.4)، حاولت تثبيته على جهاز الكمبيوتر الخاص بي وحصلت على نفس المشكلة.

تثبيت الإصدار السابق يعمل بشكل جيد:

gem install sqlite3-ruby --version '1.2.3'

قم بتنفيذ الأمر أدناه ويجب أن يعمل:

gem install sqlite3-ruby --platform=mswin32

أنظر إلى قائمة ملفات روبي فورج بالنسبة لـ sqlite3-Ruby يكشف أن الإصدار 1.2.3 يحتوي على جواهر تم إنشاؤها باستخدام Visual Studio 6 وMinGW (sqlite3-ruby-1.2.3-mswin32.gem & sqlite3-ruby-1.2.3-x86-mingw32.gem).ومع ذلك، الإصدار 1.2.4 لا يحتوي على أي من هذه الجواهر المعدة مسبقًا.

إذا كان لديك Visual Studio 6 أو مين جيجاو تم تثبيته وإعداد متغيرات بيئة المترجم (على الأقل لـ Visual Studio 6 ولكن لست متأكدًا من MinGW)، يجب إنشاء الجوهرة أثناء التثبيت.لست متأكدًا مما إذا كانت الأحجار الكريمة سيتم إنشاؤها ضمن الإصدارات الأحدث من Visual Studio.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top