2013-10-24 3 views
9

Я начинаю новый проект, который, мы надеемся, будет использовать gtk2hs. Однако я не могу установить этот пакет на свой довольно типичный Linux-ящик. Вот неисправность:GTK2HS не удается установить с последними версиями cabal

[1 of 2] Compiling SetupWrapper  (/tmp/cairo-0.12.4-4201/cairo-0.12.4/SetupWrapper.hs, /tmp/cairo-0.12.4-4201/cairo-0.12.4/dist/dist-sandbox-58b5f9c6/setup/SetupWrapper.o) 

/tmp/cairo-0.12.4-4201/cairo-0.12.4/SetupWrapper.hs:94:45: 
    Ambiguous occurrence `moreRecentFile' 
    It could refer to either `SetupWrapper.moreRecentFile', 
          defined at /tmp/cairo-0.12.4-4201/cairo-0.12.4/SetupWrapper.hs:149:1 
          or `Distribution.Simple.Utils.moreRecentFile', 
          imported from `Distribution.Simple.Utils' at /tmp/cairo-0.12.4-4201/cairo-0.12.4/SetupWrapper.hs:8:1-32 

/tmp/cairo-0.12.4-4201/cairo-0.12.4/SetupWrapper.hs:95:45: 
    Ambiguous occurrence `moreRecentFile' 
    It could refer to either `SetupWrapper.moreRecentFile', 
          defined at /tmp/cairo-0.12.4-4201/cairo-0.12.4/SetupWrapper.hs:149:1 
          or `Distribution.Simple.Utils.moreRecentFile', 
          imported from `Distribution.Simple.Utils' at /tmp/cairo-0.12.4-4201/cairo-0.12.4/SetupWrapper.hs:8:1-32 
Failed to install cairo-0.12.4 
[1 of 2] Compiling SetupWrapper  (/tmp/glib-0.12.4-4201/glib-0.12.4/SetupWrapper.hs, /tmp/glib-0.12.4-4201/glib-0.12.4/dist/dist-sandbox-58b5f9c6/setup/SetupWrapper.o) 

/tmp/glib-0.12.4-4201/glib-0.12.4/SetupWrapper.hs:94:45: 
    Ambiguous occurrence `moreRecentFile' 
    It could refer to either `SetupWrapper.moreRecentFile', 
          defined at /tmp/glib-0.12.4-4201/glib-0.12.4/SetupWrapper.hs:149:1 
          or `Distribution.Simple.Utils.moreRecentFile', 
          imported from `Distribution.Simple.Utils' at /tmp/glib-0.12.4-4201/glib-0.12.4/SetupWrapper.hs:8:1-32 

/tmp/glib-0.12.4-4201/glib-0.12.4/SetupWrapper.hs:95:45: 
    Ambiguous occurrence `moreRecentFile' 
    It could refer to either `SetupWrapper.moreRecentFile', 
          defined at /tmp/glib-0.12.4-4201/glib-0.12.4/SetupWrapper.hs:149:1 
          or `Distribution.Simple.Utils.moreRecentFile', 
          imported from `Distribution.Simple.Utils' at /tmp/glib-0.12.4-4201/glib-0.12.4/SetupWrapper.hs:8:1-32 
Failed to install glib-0.12.4 

Это, похоже, связано с недавними версиями cabal, так как раньше это использовалось. Кажется, что это известная ошибка (http://trac.haskell.org/gtk2hs/ticket/1292, http://trac.haskell.org/gtk2hs/ticket/1291 и http://trac.haskell.org/gtk2hs/ticket/1289), однако она не двигалась неделями. Я недостаточно компетентен, чтобы предложить хорошее исправление, поэтому я хотел бы получить ваш совет. Это очень раздражает, так как я застрял в этом важном проекте, и мне больно думать, что основной графический интерфейс нашего языка был сломан в течение многих недель.

междусобойчик установить версию 1.18.0.2, используя версию 1.18.1.1 из Кабал библиотеки/GHC 7.4.1

Спасибо за вашу помощь

+2

Вы можете отредактировать 'Setup.hs' и изменить его для использования явного импорта. –

+1

Из вашего сообщения об ошибке видно, что проблема находится в пакете 'cairo', в файле' SetupWrapper.hs', который определяет функцию 'moreRecentFile', но также импортирует функцию с тем же именем из' Distribution.Simple. Utils' (часть библиотеки такси). Предположительно, это новая функция, добавленная в cabal, поскольку пакет 'cairo' был протестирован. [Здесь] (http://www.mail-archive.com/[email protected]/msg01338.html) - это патч, который я нашел с быстрым поиском google; не знаю статус. – jberryman

+0

Спасибо. Действительно, корень проблемы легко исправить. Я никогда не использовал файлы setup.hs, я думаю, это меня смутило. Я, вероятно, займусь этим путем и, возможно, попытаюсь получить этот фиксированный восходящий поток. –

ответ

3

Правильное решение на данный момент состоит в том, чтобы строить из дарков. Подробные инструкции приведены в разделе Getting the latest and greatest инструкций по установке; короткая версия:

darcs get --lazy http://code.haskell.org/gtk2hs 
cd gtk2hs 
sh bootstrap.sh 

EDIT: Официальный релиз 0.12.5 gtk2hs с декабря 2013 года не поддерживает Кабалы 1.18, так что выше инструкция Darcs больше не нужно. Полные инструкции по установке по-прежнему доступны с Gtk2Hs download page; короткая версия:

cabal install gtk2hs-buildtools 
cabal install gtk gtk3 
+0

Спасибо, Дэниел. Я новичок в gtk2hs, вы знаете, скоро ли они планируют выпуск исправлений в Hackage? Часть моей мотивации, придя сюда, - это понять, что исправлено для всех, а не только для меня. С уважением, –

+0

@PaulR Real Soon Now –

+0

при этом я получаю: «По крайней мере, следующие зависимости отсутствуют: cairo> = 0.12.0 && <0.13" плюс множество других отсутствующих зависимостей. –

2

Вы можете попробовать с более старыми Cabal версии с помощью cabal install --cabal-lib-version=1.16.0 gtk.

+0

@jozefg говорит 'cabal-install', какую версию« Cabal »он должен использовать для компиляции' Setup.hs'. Это поможет, потому что 'moreRecentFile' не существует в' Cabal-1.16.0'. Проблема с 'moreRecentFile' не единственная, я пытался установить' gtk2hs' несколько недель назад, и трюк '--cabal-lib-version' был самым простым решением, которое я нашел. – Yuras

+0

Спасибо Юра за этот совет. Я мог бы использовать его, если я действительно спешу, однако моя главная цель теперь - разобраться и разобраться в каждом. –

 Смежные вопросы

  • Нет связанных вопросов^_^