paramiko<2
لمنع بيئات الأشخاص من الترقية / الانهيار بشكل غير متوقع ، منذ فترة.extras_require
بتجاوز نفس الحزمة / الإصدار كما هو محدد في install_requires
، لذلك لا يمكننا عمل pip install fabric[paramiko-2]
أو أي شيء.setup.py
- لكن هذه أيضًا ليست حلاً سحريًا لأنها لا تعمل مع العجلات أو أي طريقة تثبيت أخرى غير sdistfabric-paramiko2
رغم أن هذا خيار آخر.paramiko<3
في إصدارات Fabric لاحقًا ، حتى يتمكن الأشخاص من الاستمرار في الحصول على إصلاحات الأخطاء / الأمان / إلخ من خط Paramiko 2.xCrypto.atfork
في decorators.py
(انظر # 1460) والتأكد من عدم وجود أمتعة أخرى من PyCryptoربما ضع في اعتبارك حالة وسيطة ، حيث يتيح الإصدار 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 أشهر:
وآخر أسبوعين:
أصبح 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
.
التعليق الأكثر فائدة
Grump ، هذا مزعج - شكرًا على الأخبار ، hostep. (لا أحاول أن أكون متعجرفًا ، ولكن - مندهشًا أيضًا من أن MacPorts لا يزال قيد الاستخدام ، كل شخص أعرفه تحول إلى Homebrew منذ سنوات. تذكير جيد بأن "أفضل ما في العقل"! = "اللعبة الوحيدة في المدينة" على ما أعتقد :))
لقد ظهرت 1.12 صغيرًا في نزوة الليلة الماضية (تذكيرًا جيدًا آخر للذات: توقف عن استخدام أرقام الإصدارات الحرفية عند مناقشة خارطة الطريق - فقط قل "إصدار ميزة قادم" أو ما إلى ذلك) ولم أجري هذا التغيير ، ولكنك لا تزال ترغب في ذلك افعل ذلك قريبًا ، لذا ربما يكون الإصدار الثانوي التالي بدلاً من ذلك.