استخدام الكابال (هاسكل)
-
29-09-2019 - |
سؤال
Cabal لديه مشاكل التبعية باستمرار. إنه متعب حقًا. حتى الآن حاولت أن أعمل على عمل العديد من الأشياء ، وهنا أحاول تثبيت SNAP:
$ sudo cabal install snap-server Resolving dependencies... cabal: cannot configure ListLike-1.1.0. It requires mtl >=1.1.0 && 1.2 For the dependency on mtl >=1.1.0 && 1.2 there are these packages: mtl-1.1.0.0, mtl-1.1.0.1, mtl-1.1.0.2 and mtl-1.1.1.0. However none of them are available. mtl-1.1.0.0 was excluded because mtl-2.0.0.0 was selected instead mtl-1.1.0.0 was excluded because monads-fd-0.1.0.3 requires mtl ==2.* mtl-1.1.0.1 was excluded because mtl-2.0.0.0 was selected instead mtl-1.1.0.1 was excluded because monads-fd-0.1.0.3 requires mtl ==2.* mtl-1.1.0.2 was excluded because mtl-2.0.0.0 was selected instead mtl-1.1.0.2 was excluded because monads-fd-0.1.0.3 requires mtl ==2.* mtl-1.1.1.0 was excluded because mtl-2.0.0.0 was selected instead mtl-1.1.1.0 was excluded because monads-fd-0.1.0.3 requires mtl ==2.*
لدي مشاكل مماثلة في تثبيت Happstack ، وما إلى ذلك. ما هو الإجراء لجعل cabal ... العمل؟ لقد حاولت بالفعل:
export PATH=/home/user/.cabal/bin:$PATH
المحلول
المشكلة هي أن Snap-Server-0.2.15 لديه تبعية غير محدودة على Monads-FD. أحدث إصدار ، Monads-FD-0.1.0.3 ، يتطلب MTL-2. لا يمكن الوفاء بكل من هذه القيود في وقت واحد ، لذلك يستسلم كابال.
حاول الجري cabal install snap-server --constrain="monads-fd=0.1.0.2"
. سيؤدي ذلك إلى إجبار نسخة سابقة من Monads-FD التي لا تتطلب MTL ، وأعتقد أن كل شيء سيعمل بشكل صحيح.
إذا كنت تواجه مشاكل مع الكثير من الحزم ، فربما يكون ذلك بسبب الجديد mtl
تم تحميل ذلك مؤخرًا. يمكنك محاولة إضافة --constrain="mtl<2"
, ، والتي قد تساعد.
أخلاقي للمحافظين: اتبع هاسكل PVP و دائماً استخدام حدود التبعية العلوية.
NB حتى إذا قمت بتحميل قائمة جديدة تشبه القائمة التي تعمل مع MTL-2 (والتي سأفعلها قريبًا جدًا) ، فإن هذا لن يصلح مشكلتك لأنه لن يتم تحديد القائمة الجديدة بسبب الحد الأعلى على التكرار.