Fabric: ضع في اعتبارك ارتطام دبوس متطلبات Paramiko بمجرد استقرار Paramiko 2.0.x بالتأكيد

تم إنشاؤها على ٣٠ أبريل ٢٠١٦  ·  19تعليقات  ·  مصدر: fabric/fabric

  • وضعنا 1.10.3 و 1.11.1 مع تثبيت صريح paramiko<2 لمنع بيئات الأشخاص من الترقية / الانهيار بشكل غير متوقع ، منذ فترة.
  • تم إصدار Paramiko 2.0 الآن ولكنه جديد ، ومن المفترض أنه قد يكون هناك بعض الأخطاء التي تحتاج إلى تسوية.
  • سيكون من اللطيف السماح للأشخاص بالترقية إلى Paramiko 2.0 ضمن Fabric 1 إذا كانوا يريدون ذلك صراحة - ومع ذلك لا أرى طريقة في setuptools / pip للقيام بذلك

    • على سبيل المثال ، لا تسمح لك وظيفة extras_require بتجاوز نفس الحزمة / الإصدار كما هو محدد في install_requires ، لذلك لا يمكننا عمل pip install fabric[paramiko-2] أو أي شيء.

    • آمل أن يكون هناك شيء آخر يمكننا القيام به وأنا في عداد المفقودين ، مثل معلمات CLI setup.py - لكن هذه أيضًا ليست حلاً سحريًا لأنها لا تعمل مع العجلات أو أي طريقة تثبيت أخرى غير sdist

    • أود أيضًا تجنب الاضطرار إلى إجراء إدخال / إعداد PyPI ثانٍ رهيب مثل fabric-paramiko2 رغم أن هذا خيار آخر.

  • نظرًا لأن Paramiko 2 متوافق مع واجهة برمجة التطبيقات مع Paramiko 1 ، فإننا _may_ نريد فقط رفع دبوس الإصدار إلى paramiko<3 في إصدارات Fabric لاحقًا ، حتى يتمكن الأشخاص من الاستمرار في الحصول على إصلاحات الأخطاء / الأمان / إلخ من خط Paramiko 2.x

    • إذا قمنا بذلك ، فأنت بحاجة إلى إزالة المكالمة Crypto.atfork في decorators.py (انظر # 1460) والتأكد من عدم وجود أمتعة أخرى من PyCrypto

    • سيظل هذا دائمًا فرصة للكسر للأشخاص الذين لا يستطيعون الحصول على العجلة الثابتة Cryptography.io ؛ سيقومون بترقية Fabric ثم سينفجر إذا لم يكن لديهم libffi-dev أو openssl-dev. لذلك سيكون من المنطقي تمامًا عدم التراجع عن هذا الدبوس مطلقًا ، وبدلاً من ذلك ، استخدم الأشخاص Fabric 2 بمجرد إخراجه.

Packaging Support

التعليق الأكثر فائدة

Grump ، هذا مزعج - شكرًا على الأخبار ، hostep. (لا أحاول أن أكون متعجرفًا ، ولكن - مندهشًا أيضًا من أن MacPorts لا يزال قيد الاستخدام ، كل شخص أعرفه تحول إلى Homebrew منذ سنوات. تذكير جيد بأن "أفضل ما في العقل"! = "اللعبة الوحيدة في المدينة" على ما أعتقد :))

لقد ظهرت 1.12 صغيرًا في نزوة الليلة الماضية (تذكيرًا جيدًا آخر للذات: توقف عن استخدام أرقام الإصدارات الحرفية عند مناقشة خارطة الطريق - فقط قل "إصدار ميزة قادم" أو ما إلى ذلك) ولم أجري هذا التغيير ، ولكنك لا تزال ترغب في ذلك افعل ذلك قريبًا ، لذا ربما يكون الإصدار الثانوي التالي بدلاً من ذلك.

ال 19 كومينتر

ربما ضع في اعتبارك حالة وسيطة ، حيث يتيح الإصدار fabric setup.py كلاً من paramiko>=2 و paramiko<2 إصدار واحد أو إصدارين ، وسيحصل الأشخاص على cryptography افتراضيًا ، ولكن يمكنه فرض إصدار PyCrypto القديم إذا احتاجوا إليه. بمجرد حرق ذلك قليلاً ، يمكنك نقل setup.py لتطلب paramiko>=2 .

لست متأكدًا من أنني سأجعل Fabric 1.x يتطلب paramiko> = 2 ، وأخطط لحفظ ذلك لـ Fabric 2.x. يعتمد على امتصاص Fabric 2.x بمجرد خروجها على ما أعتقد.

أنت محق في أن العودة إلى "لا أهتم ، باراميكو 1 أو 2 على ما يرام" لا يزال قابلاً للحل عن طريق السماح للأشخاص بتقليل مستوى باراميكو يدويًا. كان التثبيت في الغالب محاولة لمنع فيضان من تقارير "onoz u كسر بنياني". لقد حصلنا على بعض ، ولكن ليس طنًا ، سواء كان ذلك بسبب رقم التعريف الشخصي الخاص بي أم لا.

bitprophet FWIW ، لدي بعض البيانات! على مدار الأسبوعين الماضيين (وهذا يشمل بضعة أيام قبل إصدار paramiko 2.0 فعليًا) ، إليك أكثر إصدارات Paramiko تنزيلًا من PyPI:

| الإصدار | التنزيلات |
| --- | --- |
| 1.16.0 | 411903 |
| 2.0.0 | 308131 |
| 1.17.0 | 77360 |
| 1.15.2 | 47677 |
| 1.15.1 | 23893 |

بالنسبة لي ، يشير هذا العدد الكبير جدًا من عمليات التثبيت 2.0 إلى أنه من المحتمل أن يكون آمنًا ، وبالتالي فإن إزالة الحد <2 غير ضروري ، بالنسبة لمعظم الأشخاص ، سيعمل بشكل جيد (أو يمكن معالجته بسهولة) ، وبالنسبة لأولئك الذين يمكنهم لن يؤدي إجراء pip install paramiko<2 قبل pip install fabric ببساطة إلى إصلاحه.

هل من الممكن على الأقل استخدام علامة بيئة لإخبار النسيج باستخدام paramiko> 2 لـ PyPy على الأقل ، حيث أن الوضع الراهن هو أن النسيج لن يتم تثبيته بأي حال من الأحوال؟

alex متأخرًا ، هل تقصد "إزالة <2 المقيد آمن"؟ (بدلاً من "غير ضروري"): د

@ جوليان أفترض أنك تقصد بضعة أسطر أخرى من "تغيير install_requires بناءً على المترجم الحالي"؟ لا تعارض ذلك مرتجلا. (على الرغم من توقف مثل هذه الاختراقات من IIRC عن العمل مع العجلات ، لذلك بدأنا في الابتعاد عنها ...؟)

أوه ، نعم ، لقد قصدت أنها آمنة.

bitprophet للعجلات تفعل الشيء نفسه ، فقط بـ extras_require بعلامة البيئة.

في الأساس ، تقوم بفرك بطن dstufft وينبثق الجني.

(مثال أكثر جدية: https://github.com/Julian/jsonschema/blob/master/setup.py#L25 لكنك استبدلت python_version بـ python_interpreter لإرسالها بدلاً من ذلك).

سأحاول وضع ذلك في العلاقات العامة حتى تتمكن من رؤية كيف يبدو ، إلا إذا كنت على وشك تحقيق ذلك في كلتا الحالتين؟

يا أنيق ، أتذكر بشكل غامض فقط تعلم هذه الأشياء منذ فترة. ثم نسيت بوضوح. أنا بالتأكيد مع القيام بذلك إذا كان سيساعد بعض الناس ولن يؤذي الأغلبية. سيكون موضع تقدير العلاقات العامة.

إعادة: المشكلة الخارجية ، أعتقد في هذه المرحلة أنني أتعامل مع دفع الدبوس إلى <3 في Fabric 1.12+ (جنبًا إلى جنب مع عمليات تطهير Crypto الأخرى المذكورة سابقًا ، على الرغم من أنها يجب أن تصبح شروطًا ما لم أرغب في ذلك فعل paramiko>=2,<3 ، وهو ما لا أؤيده كثيرًا. سنرى كيف تحصل الأشياء القبيحة عندما أزعج هذا وأحاول التأكد من أن نفس فرع Fabric يجتاز الاختبارات في نسختين منفصلتين ، أحدهما مع Crypto و Paramiko 1 ، أخرى بدون Crypto و Paramiko 2)

اهلا ياجماعة

إضافة صغيرة لهذه المناقشة:
نستخدم Macports لتثبيت منفذ Fabric الذي يعتمد على منفذ Paramiko في محطات عمل
لكن في الآونة الأخيرة ، قررت Macports ترقية Paramiko من الإصدار 1.16.0 إلى 2.0.1 وعندما نقوم الآن بتشغيل Fabric ، لم يعد يعمل:

➜ fab deploy
Traceback (most recent call last):
  File "/opt/local/bin/fab", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2927, in <module>
    <strong i="13">@_call_aside</strong>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2913, in _call_aside
    f(*args, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 637, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 650, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 829, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'paramiko<2.0,>=1.10' distribution was not found and is required by Fabric

لقد تمكنت من التغلب على ذلك عن طريق خفض تصنيف Paramiko إلى الإصدار 1.16.0 باستخدام Macports ، والذي كان معقدًا بعض الشيء يدويًا ، ولكن في النهاية جعلته يعمل مرة أخرى.

أعتقد أن هذا خطأ من Macports ، كان ينبغي عليهم الانتظار لترقية Paramiko في شجرتهم حتى يتوافق Fabric.

ولكن على أي حال ، سيكون من الرائع إصدار نسخة جديدة من Fabric مع دعم Paramiko> 2.0 حتى نتمكن من جعل كل شيء يعمل مرة أخرى باستخدام Macports مع أحدث الإصدارات من جميع المنافذ.

Grump ، هذا مزعج - شكرًا على الأخبار ، hostep. (لا أحاول أن أكون متعجرفًا ، ولكن - مندهشًا أيضًا من أن MacPorts لا يزال قيد الاستخدام ، كل شخص أعرفه تحول إلى Homebrew منذ سنوات. تذكير جيد بأن "أفضل ما في العقل"! = "اللعبة الوحيدة في المدينة" على ما أعتقد :))

لقد ظهرت 1.12 صغيرًا في نزوة الليلة الماضية (تذكيرًا جيدًا آخر للذات: توقف عن استخدام أرقام الإصدارات الحرفية عند مناقشة خارطة الطريق - فقط قل "إصدار ميزة قادم" أو ما إلى ذلك) ولم أجري هذا التغيير ، ولكنك لا تزال ترغب في ذلك افعل ذلك قريبًا ، لذا ربما يكون الإصدار الثانوي التالي بدلاً من ذلك.

FWIW ، لقد واجهنا (FreeBSD) نفس المشكلة واضطررنا إلى إنشاء منفذ paramiko1 وحزمة يعتمد عليها py-fabric. أنظر أيضا:

https://bugs.freebsd.org/bugzilla/show_bug.cgi؟id=213893
https://bugs.freebsd.org/bugzilla/show_bug.cgi؟id=214379

TLDR: تبعيات <= و == مؤلمة / مزعجة للغاية وتخلق مشاكل أكثر مما تدعي حلها.

هناك قدر أقل بكثير من الألم بالنسبة للمستخدمين المتلقين للمعلومات والحزم / الحمالين عندما يختبر المنبع بشكل استباقي مقابل أحدث إصدارات تبعياتهم (قيد التطوير ، قبل الإصدارات هو أفضل وقت للقيام بذلك) ولا يصف أو يقيد إصدار التبعية ما لم هناك إصدارات تكسر التوافق بشكل صريح.

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

فائدة هذه الطريقة هي أنها تعلم المنبع (ومنابع المنبع) أن القرارات التي يتخذونها تؤثر فعليًا على مستخدميهم في الممارسة (ليس فقط من الناحية النظرية) ، ومع هذه المعرفة ، نأمل أن تقلل من احتمالية حدوثها مرة أخرى في المستقبل.

لإضافة المزيد من المعلومات حول مشكلة Macports ، يبدو أنه تم إصلاحها لأنهم أضافوا تصحيحًا أثناء التثبيت الذي يغير متطلبات Paramiko من <2.0 إلى <3.0
نقوم الآن بتشغيل Fabric v1.12.0 و Paramiko v2.0.2 على محطات عمل macOS الخاصة بنا وليس لدينا مشاكل في ذلك.

hostep شكرًا لك على إبراز ذلك

hostep بالفعل هناك أوقات *_requires (من <= / == إلى >= أو '' ) في FreeBSD المنافذ ، إذا اجتازت مجموعة الاختبار بإصدار لاحق من التبعية. ومع ذلك ، يعتمد هذا على الاختبارات الرائعة لذلك يمكن أن يكون محفوفًا بالمخاطر ، وعلى الرغم من أننا جزء من Fabric ، إلا أننا لا نرغب في كسر بيئات مستخدمنا (المصب) أيضًا :)

المزيد من تحديثات الأرقام ... نظرة عامة على آخر 6 أشهر:

screen shot 2016-12-05 at 6 27 27 pm

وآخر أسبوعين:

screen shot 2016-12-05 at 6 35 09 pm

أصبح Paramiko 2.0.x الآن نصف جميع التنزيلات بسهولة. وأنا أتساءل عن نسبة الـ 50٪ المتبقية بسبب عدم دمج هذه التذكرة :) سوف نكتشف ذلك قريبًا!

أعتقد أنني سأنفذ هذا وأظهره كـ Fab 1.13.0.

أعدت النظر في ما Julian إلى الوراء ولكن هذا السحر extras_require يبدو ضروريًا فقط إذا أردت قصر التغيير على PyPy ؛ في هذه المرحلة ، أفعل فقط جملة "السماح لباراميكو <3" ...

هناك PyPI

جاه ، بالطبع نسيت تذكرة الأشقاء رقم 1462! 1.13.1 على الطريق ... تحرير: ودمجها / تحريرها.

الصيحة!

في 9 كانون الأول (ديسمبر) 2016 ، الساعة 20:14 ، كتب "Jeff Forcier" [email protected] :

جاه ، بالطبع نسيت تذكرة الأشقاء رقم 1462
https://github.com/fabric/fabric/pull/1462 ! 1.13.1 على الطريق ...

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/fabric/fabric/issues/1461#issuecomment-266111875 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/AAUIXlbJBlS0po_zKgQsUp7-y7I7WgbTks5rGbajgaJpZM4ITeNm
.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات