لا يمكن تثبيت روبي الأحجار الكريمة - zlib خطأ

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

  •  09-06-2019
  •  | 
  •  

سؤال

انا احاول تثبيت بعض روبي الأحجار الكريمة حتى أتمكن من استخدام روبي أن يخطر لي عندما أحصل على رسائل تويتر.ومع ذلك ، بعد القيام gem update --system, أنا الآن الحصول على zlib خطأ في كل مرة أحاول القيام gem install من أي شيء.أدناه هو وحدة الإخراج عندما تحاول تثبيت روبي الأحجار الكريمة.(جنبا إلى جنب مع الإخراج من gem environment).

C:\data\ruby>gem install twitter
ERROR:  While executing gem ... (Zlib::BufError)
    buffer error

C:\data\ruby>gem update --system
Updating RubyGems
ERROR:  While executing gem ... (Zlib::BufError)
    buffer error

C:\data\ruby>gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.2.0
  - RUBY VERSION: 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
  - INSTALLATION DIRECTORY: c:/ruby/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: c:/ruby/bin/ruby.exe
  - EXECUTABLE DIRECTORY: c:/ruby/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mswin32-60
  - GEM PATHS:
     - c:/ruby/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
هل كانت مفيدة؟

المحلول

أنا فقط بدأت هذه الليلة أيضا.غوغلينغ ظهرت مجموعة من الاقتراحات التي لم تحقق نتائج

gem update --system

وبعض لصق في رمز من jamis التي من المفترض أن تحل محل وظيفة في الحزمة.rb ولكن الأصل هو من المفترض أن تحل محل هو مكان يمكن العثور عليها.

إعادة تثبيت جواهر روبي لم يساعد.أنا إعادة تثبيت روبي الآن.........و هو ثابت.الألم على الرغم من.

نصائح أخرى

وجدت!كان عندي نفس المشكلة على ويندوز (ظهرت فجأة ودون عمل التحديث, ولكن أيا كان):

قد تفعل شيئا مع متعددة متضاربة zlib إصدارات (على ما أظن).

في روبي/lib/روبي/1.8/i386-msvcrt ، تأكد من أن هناك zlib.لذلك الملف.في حالتي كان بالفعل هناك.إن لم يكن, يمكنك محاولة تثبيت روبي-zlib.

ثم انتقل إلى روبي/lib/روبي/site_ruby/1.8./i386-msvcrt وحذف zlib.حتى الملف هناك.

في روبي/بن ، ينبغي أن يكون هناك zlib1.dll.لسبب بلدي نسخة روبي لم تستخدم هذا dll.أنا تحميل أحدث إصدار (1.2.3) وتثبيته هناك.اضطررت إلى إعادة تسمية zlib.dll من أجل استخدامها.

و تادا!جواهر روبي عملت مرة أخرى.

ويساعد هذا الأمل.

أولا أشكر الشخص الذي جاء مع الحل في عداد المفقودين zlib المشكلة.(لم يكن لي.:-)

للأسف لقد فقدت رابط المنشور الأصلي ، ولكن جوهر الحل على لينكس هو تجميع روبي حين zlib رأس الملفات متاحة روبي تكوين البرنامج النصي.على دبيان فهذا يعني أن zlib حزم تطوير يجب أن تكون مثبتة قبل أن يبدأ في تجميع روبي.

بقية النص هنا لا تحتوي على أي شيء جديد وشجع إسقاطها ، إذا كنت تشعر بالراحة في تخصيص بيئة التنفيذ على يونكس مثل أنظمة التشغيل.وفيما يلي مجموعة من مقدمة موجزة إلى بعض القواعد و التعليمات خطوة بخطوة.

------في-بداية-من-- - - -كيفية-------------------------

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

echo $PATH

على سبيل المثال, إذا كان هناك 2 إصدارات المجلس في نظام واحد مثبت من قبل "مسؤول" حزمة إدارة النظام, دعنا نقول, يم أو apt-get إلى /usr/bin/irb والأخرى التي يتم جمعها من قبل مستخدم يدعى سكوبى دو و يقيم في /الوطن/scoobydoo/ourcompiledruby/bin ثم السؤال الذي يطرح نفسه, وهو واحد من اثنين من المجلس s يحصل على تنفيذها.

إذا واحد يكتب إلى /home/scoobydoo/.bashrc خط مثل:

export PATH="/home/scoobydoo/ourcompiledruby/bin:/usr/bin"

و إعادة تشغيل باش قذيفة قبل إغلاق نافذة المحطة وفتح واحدة جديدة ، ثم عن طريق كتابة المجلس إلى وحدة التحكم ، /home/scoobydoo/ourcompiledruby/بن/irb يعدم.إذا واحد كتب

export PATH="/usr/bin:/home/scoobydoo/ourcompiledruby/bin"

إلى /home/scoobydoo/.bashrc ثم /usr/bin/irb سوف تحصل على تنفيذها.

في ممارسة أحد يريد أن يكتب

export PATH="/home/scoobydoo/ourcompiledruby/bin:$PATH"

لأن هذا prepends كل القيم أن الطريق كان قبل هذه المهمة إلى /home/scoobydoo/ourcompiledruby/بن.وإلا لن يكون هناك مشاكل, لأن ليس كل الأدوات المشتركة يقيمون في /usr/bin واحد ربما يريد أن يكون متعددة مبنية خصيصا التطبيقات في استخدام.

نفس المنطق ينطبق على المكتبات ، إلا أن اسم متغير البيئة LD_LIBRARY_PATH

استخدام LD_LIBRARY_PATH و مسار تسمح للمستخدمين العاديين الذين لم يكن لديك وصول الجذر أو الذين يرغبون في تجربة مع عدم أن البرامج الموثوق بها ، لبناء واستخدامها دون الحاجة إلى أي امتيازات الجذر.

بقية هذا مصغرة كيف يفترض أن نكون بناء النسخة الخاصة من روبي و استخدام نسخة منه تقريبا بغض النظر عن ما هو مثبت على النظام من خلال توزيع الرسمي حزمة برمجيات إدارة.

1)=============================

أول واحد يخلق بعض المجلدات و تعيين متغيرات البيئة ، بحيث المجلدات "مفيدة".

mkdir /home/scoobydoo/ourcompiledruby
mkdir -p /home/scoobydoo/lib/our_gems

واحد يضيف التالية 2 خطوط /home/scoobydoo/.bashrc

export PATH="/home/scoobydoo/ourcompiledruby/bin:$PATH"
export GEM_HOME="/home/scoobydoo/lib/our_gems"

إعادة تشغيل باش قذيفة عن طريق إغلاق المحطة الحالية النافذة وفتح واحدة جديدة أو عن طريق كتابة

bash

على سطر الأوامر من النافذة المفتوحة.التغييرات /home/scoobydoo/.bashrc لا يكون له أي تأثير على المحطة الطرفية windows/الدورات التي بدأت قبل توفير نسخة معدلة من /home/scoobydoo/.bashrc الفكرة هي أن /home/scoobydoo/.bashrc يتم تنفيذها تلقائيا في بداية الدورة حتى لو واحد بتسجيل الدخول عبر ssh.

2)=============================

الآن واحد يتأكد أن zlib التنمية الحزم المتوفرة على النظام.اعتبارا من نيسان / أبريل 2011 لم فرز تفاصيل ذلك ، ولكن

apt-get install zlibc zlib1g-dev zlib1g

يبدو أن يكون كافيا على نظام دبيان.الفكرة هي أن كل من مكتبة الملف و رأس الملفات متوفرة في النظام "الرسمي" مسار البحث.عادة apt-get و على حد سواء وضع رأس الملفات إلى /usr/تشمل مكتبة الملفات إلى /usr/lib

3)=============================

تحميل و فك المصدر tar.gz من http://www.ruby-lang.org

./configure --prefix=/home/scoobydoo/ourcompiledruby
make
make install

4)=============================

إن وحدة القيادة مثل

which ruby

يطبع إلى وحدة التحكم

/home/scoobydoo/ourcompiledruby/bin/ruby

ثم جمعت حديثا الإصدار هو الذي يعدم على الأمر

ruby --help

5)=============================

بقية البرامج, جوهرة, irb ، وما إلى ذلك ، ويمكن تنفيذها بشكل صحيح باستخدام الأوامر مثل:

ruby `which gem` install rake
ruby `which irb`

فإنه لا ينبغي أن يكون مثل ذلك ولكن اعتبارا من نيسان / أبريل 2011 لم أعرف أي أكثر أناقة طرق للقيام بذلك.إذا كان

ruby `which gem` install rake

يعطي zlib المفقودين الخطأ مرة أخرى ، ثم ينبغي للمرء أن مجرد محاولة معرفة كيفية جعل zlib تشمل ملفات المكتبة المتاحة روبي تكوين النصي إعادة ترجمة.(آسف, حاليا ليس لدي حل أفضل من هذا العرض.)

قد يكون القذرة ربما يكون الحل أضف الأسطر التالية إلى /home/scoobydoo/.bashrc

alias gem="`which ruby` `which gem` "
alias irb="`which ruby` `which irb` "

في الواقع, أنا عادة استخدام

alias irb="`which ruby` -KU "

ولكن جوهرة يجب أن تنفذ دون إعطاء روبي "كو" وسائط, لأن خلاف ذلك سوف تكون هناك أخطاء.

------في-نهاية-من-- - - -كيفية------------------------

إعادة تثبيت روبي فرز هذه المسألة.ليس هذا ما أردت ؛ أردت أن أعرف لماذا أنا كان الحصول على هذه القضية ، ولكن انتهى الأمر.

فإنه غالبا ما يظهر عند فشل تحميل-أيلديك الفاسدة جوهرة بسبب شبكة مهلة ، خلل تحميل يدوي أو أيا كان.فقط حاول مرة أخرى أو تحميل الأحجار الكريمة يدويا نقطة gem في الملفات.

إذا gem update --system لا يعمل و إعادة تسمية ruby/bin/zlib1.dll إلى zlib.dll لا يساعد محاولة:

فتح الملف RUBY_DIR\lib\ruby\site_ruby\1.8\rubygems.rb

واستبدال موجودة def self.gunzip(data) قبل هذا:

  def self.gunzip(data)
    require 'stringio'
    require 'zlib'
    data = StringIO.new data

    # Zlib::GzipReader.new(data).read
    data.read(10) # skip the gzip header
    zis = Zlib::Inflate.new(-Zlib::MAX_WBITS)
    is = StringIO.new(zis.inflate(data.read))
  end

ماذا عن القرص المضغوط في rubysrc/ext/zlib ، ثم ruby extendconf.rb, ثم make, make install.

بعد القيام بذلك, تثبيت روبي.

أنا فعلت هذا على أوبونتو 10.04 و كانت ناجحة.

حاول تحديث ZLib قبل أن تفعل أي شيء آخر.كان لي مشكلة مماثلة على OS X و تحديث ضغط::Zlib (Perl واجهة ZLib) الشفاء من ذلك - لذا أعتقد نسخة قديمة من ZLib (هو الآن 1.2.3) حيث تكون المشكلة تكمن...

تثبيت نقية روبي zlib إذا فشل كل شيء آخر

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