Против Истинного Пути Дебиан
При попытке установить новую версию из пакетов получил от APT такое вот предложение:
# apt-get install dcrawКак говорил почтальон Печкин: "и не надо меня из фоторужья щёлкать: я, может, только жить начинаю - на пенсию перехожу!" :-)
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Будут установлены следующие дополнительные пакеты:
libc6 libc6-dev locales tzdata
Настойчиво рекомендуемые пакеты:
gphoto2 glibc-doc manpages-dev
Пакеты, которые будут УДАЛЕНЫ:
base-config initrd-tools kernel-image-2.6.8-2-386
НОВЫЕ пакеты, которые будут установлены:
tzdata
Пакеты, которые будут обновлены:
dcraw libc6 libc6-dev locales
обновлено 4, установлено 1 новых пакетов, для удаления отмечено 3 пакетов, и 588 пакетов не обновлено.
Необходимо скачать 11,9MБ архивов.
После распаковки объем занятого дискового пространства уменьшится на 41,1MB.
Хотите продолжить? [Д/н] n
Поэтому скачал dcraw.c с сайта Дэйва Коффина и попытался собрать. На сайте есть несколько рекомендаций относительно сборки - для не особо искушённых. При попытке собрать так:
gcc -o dcraw -O4 dcraw.c -lm -ljpeg -llcmsпосыпалась ругань вида:
dcraw.c:45:21: jpeglib.h: No such file or directoryСборка с параметрами
dcraw.c:48:18: lcms.h: No such file or directory
dcraw.c:1920: error: syntax error before "fill_input_buffer"
dcraw.c:1920: error: syntax error before "cinfo"
dcraw.c: In function `fill_input_buffer':
dcraw.c:1927: error: `cinfo' undeclared (first use in this function)
dcraw.c:1927: error: (Each undeclared identifier is reported only once
dcraw.c:1927: error: for each function it appears in.)
dcraw.c:1929: error: `TRUE' undeclared (first use in this function)
dcraw.c: In function `kodak_jpeg_load_raw':
dcraw.c:1934: error: storage size of `cinfo' isn't known
dcraw.c:1935: error: storage size of `jerr' isn't known
dcraw.c:1936: error: `JSAMPARRAY' undeclared (first use in this function)
dcraw.c:1936: error: syntax error before "buf"
dcraw.c:1937: error: `pixel' undeclared (first use in this function)
dcraw.c:1937: error: subscripted value is neither array nor pointer
dcraw.c:1944: error: `TRUE' undeclared (first use in this function)
dcraw.c:1953: error: `buf' undeclared (first use in this function)
dcraw.c:1954: error: `j_common_ptr' undeclared (first use in this function)
dcraw.c:1954: error: `JPOOL_IMAGE' undeclared (first use in this function)
dcraw.c:1959: error: syntax error before ')' token
dcraw.c:1959: error: syntax error before ')' token
dcraw.c: In function `apply_profile':
dcraw.c:6746: error: `cmsHPROFILE' undeclared (first use in this function)
dcraw.c:6746: error: syntax error before "hInProfile"
dcraw.c:6747: error: `cmsHTRANSFORM' undeclared (first use in this function)
dcraw.c:6751: error: `LCMS_ERROR_SHOW' undeclared (first use in this function)
dcraw.c:6753: error: `hInProfile' undeclared (first use in this function)
dcraw.c:6765: error: `hOutProfile' undeclared (first use in this function)
dcraw.c:6782: error: `hTransform' undeclared (first use in this function)
dcraw.c:6782: error: `TYPE_RGBA_16' undeclared (first use in this function)
dcraw.c:6783: error: `INTENT_PERCEPTUAL' undeclared (first use in this function)
gcc -o dcraw -O4 dcraw.c -lm -DNO_JPEG -DNO_LCMSпрошла куда успешнее: всё собралось и в том же каталоге появился dcraw. После этого я скопировал его в /usr/bin от sudo и теперь в системе стоит последняя версия этого замечательного конвертора raw-формата.
Но ведь это же не правильный подход так пакеты собирать.
ОтветитьУдалитьА что делать? Сносить базовый пакет и ставить этчевский, в котором к том уже release-critical bug? Это лучше?
ОтветитьУдалитьЗа это я часто ненавижу пакетную систему...
Лучше этот пакет пересобрать, пофиксив эти страшные баги. Это будет правильный подход.
ОтветитьУдалитьПравильно - сбэкпортить пакет самому.
ОтветитьУдалитьТем более, что он ни от чего не зависит:
делается 3мя командами.
Получается вот такая штука:
http://vice.gq.net.ru/dcraw_8.39-1~backport_i386.deb
2 Tigro said...
ОтветитьУдалитьЛучше этот пакет пересобрать, пофиксив эти страшные баги.
Баги фиксить не умею :-) Я не мейнтейнер, в конце концов. Мне просто программку поставвить...
2 GQ
Правильно - сбэкпортить пакет самому.
Да, но мне вот с камерой надо было работать. Меня вообще добивают такие зависимости - боже мой, ну соберите пакет пользовательской программы статически, неужели для этого ведро мозгов нужно!?
Если не сильно напрягает - киньте в меня этими тремя командами. :-) Собирал в пакет только Mplayer, на остальное пока времени нет. А dcraw был нужен позарез - не до манов было...
Кстати, мне тоже часто леняво собирать по взрослому. Но я обычно кидаю либо в /usr/local/bin либо в ~/bin/
ОтветитьУдалитьВозникла у меня сегодня идея написать большую статью о том как собирать DEB/RPM пакеты. На выходных займусь.
ОтветитьУдалить"За это я часто ненавижу пакетную систему..."
ОтветитьУдалитьдополнение: в Debian =)
В полупакетных дистрибутивах (ArchLinux, Slackware) такого нет...
2 Tigro
ОтветитьУдалитьВозникла у меня сегодня идея написать большую статью о том как собирать DEB/RPM пакеты.
Буду хлопать в ладоши стоя :-)Без шуток, очень полезный был бы пост. Не всё же мне маны читать ;-)
2 Igor
"За это я часто ненавижу пакетную систему..."
дополнение: в Debian =)
В полупакетных дистрибутивах (ArchLinux, Slackware) такого нет...
Нет, слаку нам не надо :-) Патрик нам не бог. Лучше пару программ из исходников соберу.
я вместо прямого копирования воспользовался бы xstow
ОтветитьУдалитьЗначит как я сбэкпортил этот пакет:
ОтветитьУдалить#вытаскиваем исходники
apt-get source dcraw
cd dcraw-8.39-1
#создаем новую версию отличающуюся ~backport на конце
vi debian/changelog
#или что проще dch -i
#собираем сурцовый пакет
dpkg-buildpackage -S -rfakeroot
#собираем бинарный относительно саржа
cd ..
pbuild --dist sarge dcraw_8.39-1~backport.dsc
pbuild - моя обертка вокруг pbuilder
вместо этого можно просто сразу собрать пакет на текущей системе
dpkg-buildpackage -rfakeroot
просто у меня стоит etch и если я буду собирать бинарный пакет на своей системе - то получим зависимости от etch
Меня вообще добивают такие зависимости - боже мой, ну соберите пакет пользовательской программы статически, неужели для этого ведро мозгов нужно!?
А вот это крайне неправильно.
Хотя бы потому, что с libc нельзя линковаться статически, иначе это приведет к серьезным проблемам у людей, которые используют отличный от используемого при сборке nsswitch
PS На самом деле при сборке этого пакета пришлось поправить руками еще 2 файла: в debian/control было указано, что для сборки нужет debhelper версии > 5 а вполне хватает саржевского 4счем-то. и в debian/compat понизить аналогично "уровень совместимости" с 5 до 4.
Щас выложу у себя в блоге скриптик pbuild.
Получайте.
ОтветитьУдалитьhttp://gq.net.ru/2007/03/16/building-deb-packages/
На самом деле есть куча таких небольших debian-tricks которые знаю и которыми хочу поделиться, но черт возьми, сколько времени занимает набрать статью и разметить ее нормально. Кошмар.
2 GQ
ОтветитьУдалитьЗначит как я сбэкпортил этот пакет:
Спасибо. Но знаете, когда у вас за спиной стоят люди и говорят "Миш, ну как там с dcraw" - не до этого. И вообще, часто бесит, что ради установки какой-то маленькой утилиты надо полсистемы обновить. Вот ставил себе Skype - и что? dpkg -i и без проблем...
PS На самом деле при сборке этого пакета пришлось поправить руками еще 2 файла
Во-во-во, замечательно... через 10 минут съёмка эксперимента, а мне руками пакетные скрипты править...
Давно читал у Яна Мёрдока на блоге статью "Software installation in Linux: today it sucks..."
Только теперь её прочувствовал :-)
Во-во-во, замечательно... через 10 минут съёмка эксперимента, а мне руками пакетные скрипты править...
ОтветитьУдалитьЭто все равно быстрее, чем искать, откуда скачать исходники апстрима %)
Кстати Ian читается как Иан. Иначе бы Дебиан назывался бы Дебьян %)
У меня была несколько другая ситуация.
ОтветитьУдалитьЕсть фотоаппарат Canon PowerShot A610 с неофициальной прошивкой, позволяющей вытянуть из него RAW и есть Debian Etch. Старый dcraw 8.39-1 из репозитария ещё не умел работать с A610.
Собирать из исходников полагаю некошерным, а собирать пакеты не умею. По-хорошему надо бы научиться (благо даже повод есть), но было очень лениво. Оказалось, что в /usr/share/doc/dcraw/examples/ присутствовал скрипт getsource.
Я его скопировал в /tmp, снёс старый dcraw с потрохами после чего в этом /tmp под рутом запустил getsource.
getsource сам скачал из Инета последнюю версию, забрал apt-get'ом сырцы (чтобы было откуда брать патчи), сам всё пропатчил и создал пакет dcraw_8.69-1_i386.deb.
Сей пакет был засунут в отдельный локальный репозитарий после чего установлен посредством aptitude. (Ну это мне привычней как-то, чем dpkg -i, да и правильней кажется.)
Не знаю, подойдёт ли такое для бекпортов, но тоже -- простой путь, если нет времени (или лениво) разбираться со сборкой пакетов.
2 Анонимный
ОтветитьУдалитьУ меня была несколько другая ситуация.
Ситуация, насколько я понял, успешно разрешилась? :-) Да, и в бэкпортсах, и в дистрибутиве устаревшая версия. Мне тоже было лень, я плюнул на дебиан-вей и собрал из сырцов, грубо затерев старый бинарник. Работает и каши не просит - у меня тоже был исключительный случай.
Ситуация, насколько я понял, успешно разрешилась?
ОтветитьУдалитьДа, я просто описал, как я решил для себя аналогичную проблему.
И не нужно шаманить с параметрами при сборке: скрипт, входящий в комплект к dcraw -- сам всё сделает как надо. Его нужно просто тупо запустить.
Вопрос к автору собственно по самому dcraw.
ОтветитьУдалитьИспользуете ли Вы его для обработки цифровых фотографий, и если да, то каковы сравнения с Виндовыми конверторами, например с Adobe Camera Raw?
Просто вчера купил цифромыльницу с RAW, ради интереса решил испробовать dcraw. От результата чуть не упал в обморок, похоже что ни sharp, ни noise reduction в dcraw нет напрочь?
P.S. запускал конвертор с параметрами практически по умолчанию:
dcraw -v -o1 -T
2 Dormestmass пишет...
ОтветитьУдалитьИспользуете ли Вы его для обработки цифровых фотографий
Конечно использую, раз пишу :-)
Для обработки RAW-файлов с оптической установки dcraw незаменим. Для художественной обработки есть UFraw - может быть в виде плагина к гимпу. Там ползунки и кнопочки, а тут только конвертер. И это очень правильно.
каковы сравнения с Виндовыми конверторами, например с Adobe Camera Raw?
Все виндовые конверторы сливают по полной программе dcraw как по функционалу, так и по количеству поддерживаемых камер. Хвалёный Adobe Camera Raw не смог открыть RAW-файл моей Casio QV4000, в то время как dcraw справляется с задачей на ура.
От результата чуть не упал в обморок, похоже что ни sharp, ни noise reduction в dcraw нет напрочь?
Noise reduction там есть, на вейвлет-алгоритме. Поднятием резкости должен заниматься графический редактор.
Автор программы, Дэйв Коффин, твёрдо держится UNIX-way - программа должна делать одну вещь и очень хорошо. И это очень правильно: избавляет от комбайнов типа Nero, который умеет всё, кроме прожигания дисков.
Короче: dcraw это мощный конвертор, но консольный. К нему есть графические оболочки - типа UFRaw. Результат очень хороший.
запускал конвертор с параметрами практически по умолчанию: dcraw -v -o1 -T
А чего ж вы хотели? Он поставил баланс белого, выданный камерой (если он записан - иначе автоматический). 8-битный вывод в TIFF...
DCRAW в консольном виде больше подходит для научных применений - собственно, за это мы его и любим :-)
Фотографам лучше пользоваться UFRaw.
Просто огромнейшее спасибо за информацию!
ОтветитьУдалитьБудем посмотреть на UFraw :)