Available Languages: | Deutsch | English | Español | Français | 日本語 (Nihongo) | Português | Русский (Russkiy) | 中文 (简) (Simplified Chinese) |

Часто задаваемые вопросы Fink

Ниже вы найдете список Ч.З.В. о Fink. Как и большинство Ч.З.В., некоторые из них реальные, а некоторые составленные. Фактически это документ в стиле оперативных вопросов и ответов.

Ч.З.В. занимают несколько страниц - по одной на каждый раздел. Все вопросы приведены с соответствующими ссылками в содержании.

Contents

1 Общие вопросы

Q1.1: Что такое Fink?

A: Целью Fink является максимальный перенос ПО Unix в Mac OS X, из чего вытекают две основные задачи:

Задача номер один: перенос ПО в Mac OS X. Это значит, что мы берем ПО Unix с открытым исходным кодом и вносим корректировки, необходимые для его компилирования и работы в Mac OS X. Иногда это нетрудно, но в некоторых случаях бывает крайне сложно и даже невозможно для некоторых пакетов. Мы стараемся предоставлять инструменты и документацию для облегчения этого процесса.

Задача номер два: обеспечение доступа обычным пользователям к результатам работы. Для этого мы основываем дистрибуцию на применении инструментов управления пакетами, перенесенных из Linux, а именно dpkg и apt-get, созданными в рамках проекта Debian GNU/Linux и предназначенными для него же. При бинарной дистрибуции используется пакетный формат.deb. Для построения пакетов на основе исходного кода у нас имеется собственный инструмент, названный fink, который создает пакетные файлы .deb.

Q1.2: Что означает название Fink?

A: Ничего, это просто имя. Это даже не аббревиатура.

Вообще-то Fink - это немецкий вариант слова Finch (зяблик), названия породы птиц. Я искал название для проекта и название Darwin OS навело на мысль о Чарльзе Дарвине, Галапагосских островах и эволюции. Я со школьных времен помнил о так называемых зябликах Дарвина и их клювах, и вот ...

Q1.3: Чем Fink отличается от механизма переноса BSD (включая OpenPackages и GNU-Darwin)?

A: Некоторые главные преимущества:

Q1.4: Почему Fink ничего не инсталлирует в /usr/local?

A: Для этого есть несколько причин, но в основном "потому что произойдет сбой в работе".

Первая причина: ПО третьих лиц. /usr/local является хорошим местом для размещения ПО, которое не является частью системы, поставленной первоначальным продавцом. Это хорошее место для размещения всякой всячины. Но это также значит, что и другие будут там что-нибудь размещать. Большинство программ инсталляции будут просто записывать поверх того, что там находится - это также относится и к dpkg. Конечно, можно решить не инсталлировать ПО третьих лиц в /usr/local. Но к сожалению, большинство инсталляторов не предупреждают заранее о том, что и где они установят.

Вторая причина: /usr/local/bin находится в PATH по умолчанию. Это значит, что ваша оболочка найдет инсталлированные программы без дополнительных мер. Но это также значит, что вам надо принять дополнительные меры, если вы не хотите использовать программы. В наихудших случаях это может также повлиять на саму систему - многие части зависят от скриптов оболочки.

Третья причина: Цепочка инструментов компилятора находит /usr/local по умолчанию. Компилятор находит /usr/local/include для файлов заголовков, а компоновщик производит поиск /usr/local/lib для библиотек. Опять же, иногда это безусловно удобно, но очень трудно сделать дезактивацию в случае необходимости. Можно без труда дезактивировать компилятор, поместив файл с ненужными данными, названный stdio.h, в /usr/local/include.

С учетом всего сказанного, можно инсталлировать Fink в /usr/local. Скрипт инсталляции сделает предупреждение, но продолжит выполнение после подтверждения с вашей стороны, что вы делаете это на свой страх и риск.

Q1.5: Тогда почему вы выбрали /sw?

A: Данный выбор совершенно произвольный, но возможно, мы на нем остановимся в обозримом будущем по практическим соображениям (обновление), а также потому, что это безопасно, т.к. предотвращается конфликт с другими системами пакетирования.

2 Связь с другими проектами

Q2.1: Предоставляете ли вы свои патчи координаторам исходного ПО?

A: Мы стараемся это делать. Иногда отправка патчей с нашей стороны несложна и все довольны, когда очередной выпуск версии пакета завершен. К сожалению, дело с большинством пакетов обстоит не так просто. Вот некоторые типичные проблемные ситуации:

Q2.2: Какое отношение вы имеете к проекту Debian? Переносите ли вы Debian Linux в Mac OS X?

A: Официальных отношений между Fink и Debian нет. Fink не является портом дистрибуции Debian GNU/Linux. Хотя мы перенесли инструменты управления пакетами Debian (dpkg, dselect, apt-get) и используем их бинарный пакетный формат .deb, фактические пакеты сделаны специально для Mac OS X / Darwin и не используют исходный пакетный формат Debian.

Q2.3: Какое отношение вы имеете к Apple?

A: Apple знает о Fink и обеспечил нам определенную поддержку в качестве части своей деятельности по развитию отношений в работе над открытым исходным кодом. Летом и осенью 2001 г. они предоставили нам предварительные начальные числа для новых версий Mac OS X в надежде на то, что пакеты Fink могут быть адаптированы к моменту их выхода. Цитируем: "Надеемся, это подчеркнет нашу приверженность, потому что многие думают, что мы к этому не стремимся. Со временем наше участие в игре в открытый исходный код станет активнее." Благодарим Apple!

Q2.4: Какое отношение вы имеете к Darwinports?

A: Darwinports и Fink являются взаимодополняющими проектами. Они имеют некоторые точки соприкосновения и несколько человек являются участниками обоих проектов - и Fink, и OpenDarwin. Например, Benjamin Reed делает пакеты KDE для обоих проектов. Darwinports/OpenDarwin использует патчи, разработанные проектом Fink, и мы обсуждаем форму сотрудничества на основе новых взаимоотношений.

OpenDarwin начался с попытки опробовать иной подход к системе пакетирования. См. заявление на сайте OpenDarwin.org для получения более подробной информации.

3 Зеркала Fink

Q3.1: Что такое зеркала Fink?

A: Зеркала Fink являются серверами rsync, отражающими текущие и постоянные файлы описания, используемые Fink для построения пакетов на основе исходного кода.

Q3.2: Почему я должен использовать зеркала rsync?

A: Rsync - очень быстрый протокол. Он обновит файлы описания быстрее, чем старый метод обновления CVS. К тому же обновление CVS всегда выполняется на основе sourceforge.net, тогда как обновление rsync можно сделать на основе близкого к вам зеркала.

Q3.3: Где можно найти более подробную информацию о зеркалах Fink?

A: Все зеркала Fink объединены в пределах домена finkmirrors.net. Более подробная информация предоставляется на веб-сайте http://finkmirrors.net/.

Q3.4: Не устанавливается соединение с сервером rsync. Что делать?

A: Иногда очень строгие брандмауэры не позволяют подсоединяться к услугам rsync. Если это ваш случай, просто продолжайте использовать метод CVS.

Q3.5: После перехода на метод rsync исчезли все информационные файлы на неиспользованных деревьях

A: Это нормально. Метод обновления rsync будет обновлять только ваше активное дерево, н-р 10.3, а также удалит подкаталоги CVS.

Q3.6: Как можно переключаться между методами?

A: При помощи fink selfupdate-rsync или fink selfupdate-cvs можно перейти к rsync или CVS соответственно.

Q3.7: Что такое зеркало Distfiles?

A: Иногда сложно извлечь определенную версию исходных кодов из Интернета. Зеркала Distfile удерживают и отражают пакеты исходных кодов, которые необходимы fink для построения своих пакетов исходных кодов.

4 Обновление Fink (проблемы, связанные с версиями)

Q4.1: Fink doesn't see new packages even after I've run an rsync or cvs selfupdate.

A: This is a current issue for people on OS 10.5 using the binary installer. Check your version:

fink --version

If you currently have fink-0.27.13-41, which is the version that comes with the installer, or fink-0.27.16-41, then there are a couple of options.

Either will bring you the newest fink version.

Q4.2: When I try to install stuff I get 'Can't resolve dependency "fink (>= 0.28.0)"'

A: Apply the fix from the prior entry.

Q4.3: Fink tells me to run 'sudo apt-get install libgettext3-dev=0.14.5-2' to clear up inconsistent dependencies but I'm still stuck.

A: There is a timestamp issue with the libgettext3 package description: 0.14.5-2 is an outdated version. Run

fink index -f
fink update libgettext3-dev	
	

to update the package description cache and then the package.

Q4.4: Fink tells me 'Can't resolve dependency "dpkg (>= 1.10.21-1229)" for package "dpkg-base-files-0.3-1"'. How do I solve this?

A: There is a timestamp issue with the updated dpkg package description. Run

fink index -f
fink selfupdate
	

to update the package description cache and then to install dpkg and dpkg-base-files.

5 Инсталляция, использование и поддержка Fink

Q5.1: Как можно узнать, какие пакеты поддерживает Fink?

A: Начиная с Fink 0.2.3 существует команда list. Благодаря ей вы получаете список всех пакетов, известных вашей инсталляции Fink. Пример:

fink list

Если вы используете бинарную дистрибуцию, dselect предоставит вам удобный просматриваемый список имеющихся пакетов. Имейте в виду, что вы должны выполнить эту команду в качестве суперпользователя, если хотите выбрать и инсталлировать пакеты в dselect.

Также на веб-сайте есть база данных по пакетам.

Q5.2: Я нахожусь за брандмауэром. Как надо конфигурировать Fink для использования прокси HTTP?

A: Команда fink поддерживает явные настройки прокси, которые переданы на wget/curl. Если вам не были заданы вопросы относительно прокси при первоначальной инсталляции, вы можете выполнить fink configure для его настройки. Вы также можете использовать эту команду в любой момент для реконфигурации команды fink. Если следовать указаниям руководства по инсталляции и использовать /sw/bin/init.csh (или /sw/bin/init.sh), то apt-get и dselect также будут использовать эти настройки прокси. Надо убедиться, что вы поместили протокол перед прокси, н-р:

ftp://proxy.yoursite.somewhere

Если проблемы не устраняются, войдите в System Preferences, выберите область Network, затем Proxies tab и убедитесь, что отмечено поле "Use Passive FTP Mode (PASV)".

Q5.3: Как можно обновить имеющиеся пакеты при помощи CVS, если я за брандмауэромl?

A: Пакет cvs-proxy может проложить туннель через прокси HTTP.

Если fink не конфигурируется для использования вашего прокси, измените настройки при помощи команды:

fink configure.

Q5.4: Можно ли переместить Fink на другое место после инсталляции?

A: Нет. Т.е. конечно вы можете перемещать файлы при помощи mv или Finder, но 99% программ перестанут после этого работать. В основном потому, что все ПО Unix зависит от неизменяемых путей доступа к поиску файлов данных, библиотек и другого.

Q5.5: Если переместить Fink после инсталляции и предоставить символический указатель (алиас) прежнего размещения, будет ли результат успешным?

A: Возможно. Вообще это должно сработать, но где-то могут быть скрытые ловушки.

Q5.6: Как полностью деинсталлировать Fink?

A: Почти все файлы, инсталлированные Fink, находятся в /sw (или там, где вы решили их инсталлировать). Таким образом, чтобы избавиться от Fink, введите команду:

sudo rm -rf /sw

Единственным исключением из этого правила является XFree86 или X.org. Если вы инсталлировали сервер X через Fink (т.е. инсталлировали пакеты xfree86, xfree86-rootless или xorg вместо использования system-xfree86) и хотите его удалить, вам понадобится дополнительно ввести следующее:

sudo rm -rf /usr/X11R6 /etc/X11 /Applications/XDarwin.app

Если вы не планируете вновь инсталлировать Fink, вы также захотите удалить при помощи текстового редактора строку "source /sw/bin/init.csh", которую вы добавили к вашему файлу .cshrc или, в зависимости от ваших настроек, строку "source /sw/bin/init.sh", добавленную к вашему файлу .bashrc.

Q5.7: База данных по пакетам на веб-сайте указывает в списке пакет xxx, но apt-get и dselect ничего об этом не знают. Что неправильно?

A: И то, и другое правильно. База данных по пакетам знает о каждом пакете, включая пакеты, которые все еще находятся в нестабильном разделе. Инструменты dselect и apt-get, с другой стороны, знают только о пакетах, существующих как предварительно компилированные бинарные пакеты. Многие пакеты не существуют в предварительно компилированной форме через посредство этих инструментов по многим причинам. Пакет должен быть в стабильном разделе последней рассматриваемой версии и должен пройти дополнительные проверки для соответствия политике, а также лицензионным и патентным ограничениям.

Если вы хотите инсталлировать пакет, который недоступен через dselect / apt-get, надо компилировать его на основе исходного кода с использованием fink install packagename . Надо убедиться, что у вас имеются Developer Tools, инсталлированные до того, как вы попытаетесь это сделать. (Если нет инсталлятора для Developer Tools в вашей папке /Applications, вы можете получить их от Apple Developer Connection после бесплатной регистрации). См. также далее вопросы о разделе нестабильных пакетов.

Q5.8: Я хочу инсталлировать пакет из категории нестабильных, но fink сообщает, что 'пакет на найден' ('no package found') . Как его можно инсталлировать?

A: First make sure you understand what 'unstable' means. Packages in the unstable tree are not in stable for any number of reasons. It could be because there are known issues, validation errors, or just not enough people giving feedback that the package works for them. For that reason, Fink doesn't search the unstable tree by default.

If you do enable unstable, please remember to e-mail the maintainer if something works (or even if it doesn't). Feedback from users like you is what we use to determine if something is ready for stable! To find out the maintainer of a package, run fink info packagename.

For fink-0.26 and later: If you run fink configure one of the questions will ask whether you want to turn the unstable trees on.

To configure Fink to use unstable when you have an earlier version of the fink tool than 0.26, edit /sw/etc/fink.conf, and add unstable/main and unstable/crypto to the Trees: line.

If you use Fink Commander, then there is a Preference to use unstable packages.

None of these options actually download the unstable tree's package descriptions.You'll need to turn on rsync or cvs updating to do this, which is not set up by default on a new Fink installation. The following command sequence will set you up on a new Fink installation:

fink selfupdate

followed by

fink selfupdate-rsync

or

fink selfupdate-cvs

and then

fink index -f
fink scanpackages

Note: There are Fink Commander analogs for everything except fink index -f. You will have to use the command line for that.

If you're already set up with rsync or cvs updating, then the following command sequence (or the Fink Commander analogs) will suffice:

fink selfupdate
fink index
fink scanpackages
	

If you're not sure what your update method is, check fink --version in at a command line and see if that mentions cvs or rsync.

If you don't want to install any more from unstable than your specific package(s) and its (their) dependencies, (and any base packages that got updated) don't use the update-all command until you turn the unstable tree back off.

Q5.9: Do I really need to enable all of unstable just to install one unstable package that I want?

A: No, but it is highly recommended you do. Mixing and matching can cause unforeseen issues that make it difficult to debug problems when they do arise.

That said, if you only want one or two specific packages, and nothing else from unstable, then you need to switch over to CVS updating (i.e. use fink selfupdate-cvs), because rsync only updates the trees that are active in your fink.conf. Edit /sw/etc/fink.conf and add local/main to the Trees: line, if not present. Then you'll need to run fink selfupdate to download the package description files. Now copy the relevant .info files (and their associated .patch files, if there are any) from /sw/fink/dists/unstable/main/finkinfo (or /sw/fink/dists/unstable/crypto/finkinfo) to /sw/fink/dists/local/main/finkinfo. However, note that your package may depend on other packages (or particular versions) which are also only in unstable. You will have to move their .info and .patch files as well. After you move all of the files, make sure to run fink index, so that Fink's record of available packages is updated. Once you're done you can switch back to rsync (fink selfupdate-rsync) if you want.

Q5.10: Мне надоело каждый раз печатать свой пароль в sudo. Можно ли с этим что-то сделать?

A: Если вы не страдаете паранойей, вы можете конфигурировать sudo так, чтобы не было запроса о пароле. Для этого надо запустить visudo в качестве суперпользователя и добавить такую строку:

username ALL =(ALL) NOPASSWD: ALL

Конечно, надо заменить username вашим действительным именем пользователя. Данная строка позволяет запускать любую команду через sudo без внесения пароля.

Q5.11: Когда я пытаюсь выполнить init.csh или init.sh, получаю сообщение "Нет разрешения" ("Permission denied"). Что я делаю неправильно?

A: init.csh и init.sh не предназначены для выполнения как нормальные команды. Эти файлы устанавливают такие переменные величины среды, как PATH и MANPATH, в вашей оболочке. Для длительного эффекта в оболочке должна быть произведена обработка при помощи команды source для csh/tcsh или команды . для bash/zsh, н-р таким образом:

для csh/tcsh:

source /sw/bin/init.csh

для bash/zsh:

. /sw/bin/init.sh

Q5.12: Помогите! Я использовал ввод меню "[A]ccess" в dselect и больше не могу скачивать пакеты!

A: Возможно, вы отметили apt в зеркале Debian, которое конечно не имеет файлов Fink. Вы можете решить проблему мануально или через dselect. В ручном режиме в качестве суперпользователя проредактируйте /sw/etc/apt/sources.list в текстовом редакторе. Удалите строки, упоминающие debian.org и замените их следующим:

deb http://us.dl.sourceforge.net/fink/direct_download release main crypto
deb http://us.dl.sourceforge.net/fink/direct_download current main crypto

(Если вы живете в Европе, можете использовать eu.dl.sourceforge.net вместо us.dl.sourceforge.net)

Для исправления через dselect выполните снова "[A]ccess", выберите метод "apt" и внесите следующую информацию:

URL: http://us.dl.sourceforge.net/fink/direct_download - Distribution: release - Components: main crypto

Затем внесите уточнение, что хотите добавить другой исходный код, и повторите процесс с "current" вместо "release".

Исправленная версия пакета apt (со скриптом конфигурации в виде плагина для dselect) теперь работает через CVS.

Q5.13: При попытке выполнения fink selfupdate или "fink selfupdate-cvs" получаю сообщение об ошибке Updating using CVS failed. Check the error messages above."

A: Если сообщение следующее:

Can't exec "cvs": No such file or directory at 
/sw/lib/perl5/Fink/Services.pm line 216, <STDIN> line 3.
### execution of cvs failed, exit code -1

то вам надо инсталлировать инструменты разработчика - Developer Tools.

Но если последняя строка следующая:

### execution of su failed, exit code 1

то надо сделать обратный просмотр для уточнения ошибки. Если вы увидите сообщение, что вам отказано в соединении:

(Logging in to anonymous@fink.cvs.sourceforge.net)
CVS password:
cvs [login aborted]: connect to fink.cvs.sourceforge.net:2401 failed: 
Connection refused
### execution of su failed, exit code 1
Failed: Logging into the CVS server for anonymous read-only access failed.

или сообщение типа следующего:

cvs [update aborted]: recv() from server fink.cvs.sourceforge.net: 
Connection reset by peer 
### execution of su failed, exit code 1 
Failed: Updating using CVS failed. Check the error messages above.

или

cvs [update aborted]: End of file received from server

или

cvs [update aborted]: received broken pipe signal

то возможно, что серверы cvs перегружены и вам надо попытаться сделать обновление позже.

Другое объяснение: у вас нет соответствующих разрешений в ваших каталогах CVS, в этом случае вы получите сообщения "Permission denied":

cvs update: in directory 10.2/stable/main: 
cvs update: cannot open CVS/Entries for reading: No such file or directory
cvs server: Updating 10.2/stable/main 
cvs update: cannot write 10.2/stable/main/.cvsignore: Permission denied
cvs [update aborted]: cannot make directory 10.2/stable/main/finkinfo: 
No such file or directory 
### execution of su failed, exit code 1 Failed: 
Updating using CVS failed. Check the error messages above.

В данном случае вам надо перенастроить свои каталоги cvs. Используйте команду

sudo find /sw/fink -type d -name 'CVS' -exec rm -rf {}\
; fink selfupdate-cvs

Если вы не увидите вышеуказанных сообщений, это почти всегда означает, что вы модифицировали файл на вашем дереве /sw/fink/dists и теперь координатор изменил его. Просмотрите ввод selfupdate-cvs в строках, начинающихся с "C", так-то:

C 10.2/unstable/main/finkinfo/libs/db31-3.1.17-6.info 
... (other info and patch files) ... 
### execution of su failed, exit code 1 
Failed: Updating using CVS failed. Check the error messages above.

"C" означает, что у CVS был конфликт при попытке обновления последней версии. Исправление заключается в удалении всех файлов, начинающихся с "C" при вводе selfupdate-cvs; затем надо попробовать снова:

sudo rm /sw/fink/10.2/unstable/main/finkinfo/libs/db31-3.1.17-6.info
fink selfupdate-cvs

If you get errors that mention cvs.sourceforge.net:

cvs [update aborted]: connect to cvs.sourceforge.net(66.35.250.207):
2401 failed: Operation timed out

this is because of a restructuring of the CVS servers at sourceforge.net in 2006. Fink files are now at fink.cvs.sourceforge.net.

Check your Distribution version, e.g. via

fink --version

If that shows 10.4-transitional, then you need to update to the regular 10.4 distribution. An update script has been created to assist with that.

Q5.14: При использовании Fink мой компьютер зависает/глючит/вырубается. Помогите!

A: Последние сообщения в списке рассылки fink-users mailing list отразили проблемы (в т.ч. панику ядра и бесконечные зависания) при использовании Fink для компилирования пакетов, когда инсталлировано антивирусное ПО. Возможно, вам надо будет отключить любое антивирусное ПО прежде, чем использовать Fink.

Q5.15: Пытаюсь инсталлировать пакет, но Fink не может его скачать. Сайт скачивания отражает номер более поздней версии пакета, чем показывает Fink. Что делать?

A: Исходные коды пакетов перемещаются апстрим-сайтами при выпуске новых версий.

Первое, что надо сделать - выполнить fink selfupdate. Возможно, координатор пакета уже это исправил, и вы получите обновленное описание пакета либо с более свежей версией, либо с измененным URL для скачивания.

Если это не поможет, большинство исходных кодов можно найти на http://distfiles.master.finkmirrors.net/ (спасибо Rob Braun) и вы можете запустить fink configure с выбором поиска зеркал исходного кода "Master", чтобы Fink автоматически произвел там поиск.

Если это не сработает, сообщите координатору пакета (при помощи "fink describe packagename "), что URL не работает, т.к. не все координаторы регулярно читают списки рассылки.

Для получения работающего исходного кода надо во-первых попытаться "поохотиться" в районе удаленного сайта в других каталогах в поисках той же версии исходного кода, которую хочет Fink (н-р в "старом" каталоге). Но имейте в виду, что некоторые удаленные сайты любят выбрасывать старые версии своих пакетов. Если на официальном сайте его нет, попытайте счастья в web - иногда можно найти неофициальные сайты, где есть необходимый вам тарбол. Еще одно место, где можно поискать - http://us.dl.sourceforge.net/fink/direct_download/source/, где Fink хранит файлы исходного кода из пакетов, выпущенных в бинарной форме. Если все указанное не поможет, можно поместить объявление в fink-users mailing list с запросом о том, не имеет ли кто-нибудь старый исходный код, чтобы вам его предоставить.

Когда найдете соответствующий тарбол исходного кода, скачайте его вручную и затем поместите файл по месту нахождения вашего исходного кода Fink (н-р для Fink по умолчанию надо инсталлировать "sudo mv package-source.tar.gz /sw/src/". Затем укажите 'fink install packagename ' как normal.

Если не получилось достать файл исходного кода, надо подождать, пока координатор решит проблему. Он может либо сделать связку со старым исходным кодом, либо обновить файлы .info и .patch для использования более свежей версии.

Q5.16: Получаю сообщения об ошибке "command not found", когда запускаю Fink или то, что инсталлировано при помощи Fink.

A: If this always happens, then you may have inadvertently modified (or failed to modify) your startup scripts. Run the /sw/bin/pathsetup.sh script in a terminal window. This program will attempt to detect your default shell and add a command to load Fink's shell initialization script into your shell's configuration. You'll then need to open a new terminal session so that your environment settings are loaded. Note: Some older versions fink called this script pathsetup.command instead of pathsetup.sh. Alternately, you can run the pathsetup.app application on the Fink binary distribution disk image.

On the other hand, if you only have problems in the Apple X11 terminal, the easy solution is to modify the "Terminal" entry in the X11 Application menu via the Applications->Customize Menu... option. Instead of just

xterm

change the command field to read

xterm -ls

ls here means login shell, and the result is that your full login setup gets used (just like the OS X Terminal).

These /sw/bin/init.* scripts do much more than just add /sw/bin to your PATH. Many packages will not work correctly without these additional actions.

Q5.17: Хочу спрятать /sw в Finder, чтобы пользователи не повредили настройки Fink.

A: Это возможно. Если у вас инсталлированы Developer Tools, выполните следующую команду:

sudo /Developer/Tools/SetFile -a V /sw

Это сделает /sw невидимым, как стандартные системные папки (/usr и т.п.). Если у вас нет Developer Tools, есть разные приложения третьих лиц, которые позволяют управлять атрибутами и делать /sw невидимым.

Q5.18: Не могу ничего инсталлировать из-за следующей ошибки: "install-info: unrecognized option `--infodir=/sw/share/info'"

A: Обычно это происходит из-за проблемы в вашем PATH. Напечатайте в окне терминала:

printenv PATH

Если/sw/sbin не появится совсем, надо настроить свою среду согласно - инструкциям в Руководстве пользователя. Если /sw/sbin есть, но впереди находятся другие каталоги (н-р /usr/local/bin), то вам надо либо реорганизовать свой PATH так, чтобы /sw/sbin находился близко к началу, либо, если вам очень надо расположить другой каталог перед /sw/sbin и такой каталог включает другой каталог install-info, то надо временно переименовать этот подкаталог install-info при использовании Fink.

Q5.19: Ничего не могу инсталлировать или удалить из-за проблемы с файлом списка файлов ("files list file").

A: Обычно такие ошибки имеют следующую форму:

files list file for package packagename contains empty filename

или

files list file for package packagename is missing final newline

Это исправляется без труда. Если у вас в системе имеется файл .deb для пакета, содержащего ошибку, проверьте его целостность при помощи

dpkg --contents full-path-to-debfile
                

например:

dpkg --contents /sw/fink/debs/libgnomeui2-dev_2.0.6-2_darwin-powerpc.deb

Если вы снова получили список каталогов и файлов, значит, ваш .deb в порядке. Если выводится что-то другое, а не каталоги и файлы, или у вас нет файла .deb file, все равно вы можете продолжать, т.к. ошибка не помешает вам в компоновке.

Если вы делаете инсталляцию на основе бинарной дистрибуции или точно знаете, что версия в бинарной дистрибуции такая же, как инсталлированная версия (н-р проверив package database), можно получить файл .deb, применив sudo apt-get install --reinstall --download-only packagename . В противном случае вы можете построить ее с помощью fink rebuild packagename , но она все еще не инсталлируется.

Когда у вас будет действующий .deb, вы можете восстановить файл. Сначала надо стать суперпользователем при помощи sudo -s (при необходимости введите свой административный пароль пользователя) и затем использовать следующую команду:

dpkg -c full-path-to-debfile | awk '{if ($6 == "./"){ print "/."; } \
else if (substr($6, length($6), 1) == "/")\
{print substr($6, 2, length($6) - 2); } \
else { print substr($6, 2, length($6) - 1);}}'\ 
> /sw/var/lib/dpkg/info/packagename.list

например:

dpkg -c /sw/fink/debs/libgnomeui2-dev_2.0.6-2_darwin-powerpc.deb | awk \
'{if ($6 == "./") { print "/."; } \
else if (substr($6, length($6), 1) == "/") \
{print substr($6, 2, length($6) - 2); } \
else { print substr($6, 2, length($6) - 1);}}' \ 
> /sw/var/lib/dpkg/info/libgnomeui2-dev.list

Это поможет извлечь содержимое файла .deb, удалить все, кроме названий файлов, и внести их в файл .list.

Q5.20: Я получил кучу мусора, когда выбирал пакеты в dselect. Как теперь можно его использовать?

A: Есть проблематичные вопросы между dselect и Terminal.app. Решением может быть ввод следующей команды:

для пользователей tcsh:

setenv TERM xterm-color

для пользователей bash:

export TERM=xterm-color

перед выполнением dselect. Вы также можете сделать это в вашем файле инициализации (н-р .cshrc | .profile), чтобы всегда иметь возможность использовать.

Q5.21: Не получается обновить версию Fink.

A: Если fink selfupdate и sudo apt-get update ; sudo apt-get dist-upgrade не делают обновление до новой версии Fink, вам возможно надо будет скачать более позднюю версию пакета fink вручную. Соответствующие команды:

Q5.22: Можно ли разместить Fink в томе или каталоге с пробелом в его имени?

A: Мы не рекомендуем размещать ваше дерево каталогов Fink в каталог с пробелами в его имени. Не стоит этого делать.

Q5.23: При попытке бинарного обновления появляется много сообщений со словами "File not found"

A: Если вы видите что-то вроде следующего:

Err file: local/main Packages 
File not found 
Ign file: local/main Release 
Err file: stable/main Packages 
File not found 
Ign file: stable/main Release 
Err file: stable/crypto Packages 
File not found 
Ign file: stable/crypto Release 
...
Failed to fetch file:/sw/fink/dists/local/main/binary-darwin-powerpc/Packages
File not found 
Failed to fetch file:/sw/fink/dists/stable/main/binary-darwin-powerpc/Packages
File not found
Failed to fetch file:/sw/fink/dists/stable/crypto/binary-darwin-powerpc/Packages
File not found 
Reading Package Lists... Done 
Building Dependency Tree...Done 
E: Some index files failed to download, 
they have been ignored, or old ones used instead. 
update available list script returned error exit status 1.

то вам надо запустить fink scanpackages. Это поможет найти файлы.

If you get an error of the following form:

W: Couldn't stat source package list file: unstable/main Packages
(/sw/var/lib/apt/lists/_sw_fink_dists_unstable_main_binary-darwin-
powerpc_Packages) - stat (2 No such file or directory)

then you should run

sudo apt-get update
fink scanpackages

to fix it.

Q5.24: Я изменил OS | Developer Tools, но Fink не признает изменение.

A: При изменении дистрибуции Fink (подмножествами которой являются исходные и бинарные distros), Fink нуждается в получении информации о том, что произошло. Для этого вы можете выполнить скрипт, который обычно запускается при первоначальной инсталляции Fink:

/sw/lib/fink/postinstall.pl

Выполнив это, вы укажете Fink правильное место.

Q5.25: Получаю сообщения об ошибках с приложениями gzip | dpkg-debI из пакета fileutils ! Помогите!

A: Ошибки типа:

gzip -dc /sw/src/dpkg-1.10.9.tar.gz | /sw/bin/tar -xf - 
### execution of gzip failed, exit code 139

или

gzip -dc /sw/src/aquaterm-0.3.0a.tar.gz | /sw/bin/tar -xf -
gzip: stdout: Broken pipe 
### execution of gzip failed, exit code 138

или

dpkg-deb -b root-base-files-1.9.0-1 /sw/fink/dists/unstable/main/binary-darwin-powerpc/base

### execution of dpkg-deb failed, exit code 1
Failed: can't create package base-files_1.9.0-1_darwin-powerpc.deb

или ошибки сегментации при использовании утилитов из fileutils, н-р ls или mv, вероятно обусловлены предварительно связывающей ошибкой в библиотеке и могут быть устранены следующим образом:

sudo /sw/var/lib/fink/prebound/update-package-prebinding.pl -f

Q5.26: Когда я открываю окно Terminal, получаю сообщение "Your environment seems to be correctly set up for Fink already.", и сеанс завершается.

A: Дело в том, что каким-то образом программе OSX Terminal поступило указание выполнять команду /sw/bin/pathsetup.command каждый раз, когда вы начинаете сеанс. Это можно исправить, удалив файл Preferences: ~/Library/Preferences/com.apple.Terminal.plist.

Если у вас есть другие преференции, которые вы хотите оставить, можно отредактировать файл при помощи текстового редактора и убрать ссылку на /sw/bin/pathsetup.command.

Q5.27: Мой Fink инсталлирован отдельно от главного сегмента и я не могу обновить пакет fink на основе исходного кода. Появляются сообщения об ошибках с упоминанием chowname.

A: Если сообщение об ошибке выглядит так:

This first test is designed to die, so please ignore the error
message on the next line.
# Looks like your test died before it could output anything.
./00compile............................ok
./Base/initialize......................ok
./Base/param...........................ok
./Base/param_boolean...................ok
./Command/cat..........................ok
./Command/chowname.....................#     
Failed test (./Command/chowname.t at line 27)
#          got: 'root'
#     expected: 'nobody'

то надо использовать Get Info на носителе/сегменте, где Fink инсталлирован, и отменить выбор "Ignore ownership".

Q5.28: Fink не хочет обновлять мои пакеты, т.к. утверждает, что не может найти зеркало 'gnu'.

A: Если вы получили сообщение об ошибке, которое оканчивается на

Failed: No mirror site list file found for mirror 'gnu'.

то наиболее вероятно вам надо обновить пакет fink-mirrors , н-р через:

fink install fink-mirrors

Q5.29: Не могу обновить Fink, т.к. он не может убрать /sw/fink..

A: Эта ошибка:

Failed: Can't move "/sw/fink" out of the way.

обычно обусловлена, хотя и утверждает иное, ошибками разрешений в одном из временных каталогов, создаваемых в процессе автообновления - selfupdate. Удалите

sudo rm -rf /sw/fink.tmp /sw/fink.old

Q5.30: I get a message that says "No fonts found".

A: If you see the following (so far only seen on OS 10.4):

No fonts found; this probably means that the fontconfig
library is not correctly configured. You may need to
edit the fonts.conf configuration file. More information
about fontconfig can be found in the fontconfig(3) manual
page and on http://fontconfig.org.

then you can fix it by running

sudo fc-cache

Q5.31: I can't install Fink via the Installer package, because I get "volume doesn't support symlinks" errors.

A: This message commonly means that you've tried to run the Fink installer as user who doesn't have administrative privileges. Make sure to log in at the login screen as such a user or switch to such a user in the Finder (i.e. fast user switching) before starting the Fink installer.

If you're having trouble even when using an admin account, then it's likely a problem with the permissions on your top-level directory. Use Apple's Disk Utility (from the Utilities sub-folder in your Applications folder), select the hard drive in question, choose the First Aid tab, and press Repair Disk Permissions. If that doesn't work, then you may need to set your permissions manually via:

sudo chmod 1775 /	  
	

Q5.32: I can't update Fink, because package architecture (darwin-i386) does not match system (darwin-powerpc).

A: This error occurs if you use a PowerPC installer package on an Intel machine. You'll need to flush your Fink installation, e.g.:

sudo rm -rf /sw

and then download the disk image for Intel machines from the downloads page.

6 Проблемы компиляции - Общие вопросы

Q6.1: Скрипт конфигурации жалуется, что не может найти "acceptable cc". Что это значит?

A: В следующий раз прочтите документы. При компилировании пакетов на основе исходного кода надо инсталлировать Developer Tools, которые в числе прочего содержат компилятор C - cc.

Q6.2: При попытке выполнения "fink selfupdate-cvs" получаю сообщение: "cvs: Command not found."

A: Вам надо инсталлировать Developer Tools.

Q6.3: Получил сообщение об ошибке, которое упоминает make

A: Если сообщение в такой форме:

make: command not found

или

Can't exec "make": 
No such file or directory at /sw/lib/perl5/Fink/Services.pm line 190.

это значит, что вам надо инсталлировать Developer Tools.

С другой стороны, если сообщение об ошибке выглядит таким образом:

make: illegal option -- C

значит, вы заменили версию GNU утилита make, инсталлированного в качестве части Developer Tools, версией make BSD. Многие пакеты основываются на специальных параметрах, поддерживаемых только GNU make. Надо убедиться, что /usr/bin/make является алиасом gnumake, а не bsdmake. Кроме того, убедитесь, что /usr/local/bin/ не содержит другую копию make.

Q6.4: Я получаю странное сообщение от команды head об использовании. Что не в порядке?

A: Если вы видите следующее:

Unknown option: 1 Usage: head [-options] <url>...

и затем следует список описаний опций, значит, у вас не в порядке выполняемый файл head. Это происходит, когда вы инсталлируете библиотеку Perl libwww в томе системы HFS+. Она пытается создать новую команду /usr/bin/HEAD, которая переписывает существующую команду head , т.к. файловая система не учитывает регистр клавиатуры. head является стандартной командой, используемой во многих скриптах оболочки и Makefiles. Вам надо опять раздобыть оригинальный выполняемый файл head, если вы хотите использовать Fink.

Скрипт самозагрузки версии исходного кода теперь это проверяет, но вы можете с этим столкнуться, если используете бинарную версию для первоначальной инсталляции или инсталлируете libwww после инсталляции Fink.

О возникновении этой проблемы также сообщалось в связи с инсталляцией /sw/bin/HEAD (но не через посредство каких-либо пакетов Fink). Это решается легче: надо переименовать /sw/bin/HEAD.

Q6.5: При попытке инсталляции пакета получаю сообщение об ошибке в связи с тем, что есть попытка перезаписать файл, находящийся в другом пакете.

A: Это иногда происходит с разделенными пакетами (т.e. пакетами с -dev, -shlibs и т.д.), когда файл переносится из одной раздельной части в другую (н-р из foo в foo-shlibs. Надо записать поверх файла файл из пакета, который вы пытаетесь инсталлировать (т.к. они номинально являются одним и тем же):

sudo dpkg -i --force-overwrite filename
                

где filename файл .deb, соответствующий пакету, который вы хотите инсталлировать.

Q6.6: Что означает "execution of mv failed, exit code 1", когда я пробую построить пакет?

A: Если у вас инсталлировано приложение StuffIt Pro, возможно у вас активирован режим "Archive Via Real Name". Проверьте область окна преференции StuffIt в инструменте System Preferences и дезактивируйте "ArchiveViaRealName" в случае его действия. Оно повторно выполняет несколько важных системных запросов, которые вызывают ряд подобных странных временных ошибок.

В противном случае ошибка mv обычно означает, что произошла другая ошибка в компоновке,но процесс компоновки не остановился. Для обратного отслеживания файла(-ов) с ошибкой надо произвести поиск в компоновке несуществующего файла, н-р если у вас что-то вроде этого:

mv /sw/src/root-foo-0.1.2-3/sw/lib/libbar*.dylib \
/sw/src/root-foo-shlibs-0.1.2-3/sw/lib/ 
mv: cannot stat `/sw/src/root-foo-0.1.2-3/sw/lib/libbar*.dylib': 
No such file or directory 
### execution of mv failed, exit code 1 
Failed: installing foo-0.1.2-3 failed

надо искать libbar где-то в выводе вашей попытки компоновки.

Q6.7: Не могу инсталлировать пакет | обновление, т.к. получил сообщение, что узел ("node") уже существует.

A: Эти ошибки иногда выглядят так:

Failed: Internal error: node for system-xfree86 already exists

Проблема заключается в том, что процессор взаимозависимости запутался из-за изменений в некоторых информационных файлах пакета. Для решения проблемы надо:

Q6.8: Слышал, что библиотеки и заголовки, инсталлированные в /usr/local, иногда вызывают проблемы для Fink в построении. Правда ли это?

A: Это частый источник проблем, т.к. скрипт конфигурации пакета находит заголовки и библиотеки в /usr/local и решает использовать их, а не те, которые находятся на маршуте Fink. Если у вас проблемы с построением, которые не отражены в других Ч.З.В., надо проверить, есть ли у вас библиотеки в /usr/local/lib или заголовки в /usr/local/include. Если да, надо попытаться переименовать /usr/local во что-либо другое, н-р:

sudo mv /usr/local /usr/local.moved

сделать построение и затем поместить /usr/local обратно:

sudo mv /usr/local.moved /usr/local

Q6.9: Когда я пытаюсь построить пакет, получаю сообщение, что содержание ("table of contents") устарело. Что делать?

A: Ввод дает намек на то, что делать. Обычно сообщение выглядит так:

ld: table of contents for archive: 
/sw/lib/libintl.a is out of date; 
rerun ranlib(1) (can't load from it)

Надо применить ranlib (в качестве суперпользователя) в любой библиотеке, где возникла проблема. В качестве примера, для вышеприведенного случая надо выполнить:

sudo ranlib /sw/lib/libintl.a

Q6.10: Fink Commander зависает, когда я пытаюсь инсталлировать atlas.

A: Это происходит потому, что одно из действий при построении atlas включает опцию, чтобы экран Fink Commander ничего не отображал. Вместо этого надо использовать fink install atlas.

Q6.11: I get messages saying that I'm missing stddef.h | wchar.h | stdlib.h | crt1.o, or that my C compiler cannot create executables.

A: Both of these problems are typically due to the absence of essential headers that are provided by the DevSDK package of the Developer Tools. Check whether /Library/Receipts/DevSDK.pkg exists on your system. If not, then run the Dev Tools Installer again, and install the DevSDK package using a Custom Install.

The cannot create executables error can also occur when your Developer Tools version is for an earlier OS version.

Q6.12: Не могу сделать обновление, т.к. Fink не может разрешить конфликт версий многих взаимозависимостей ("unable to resolve version conflict on multiple dependencies").

A: Попытайтесь обновить один пакет и затем использовать снова "fink update-all".Если опять получите сообщение, повторите процесс.

Q6.13: Не могу ничего инсталлировать, т.к. получил сообщение "dpkg: parse error, in file `/sw/var/lib/dpkg/status'"!

A: This means that somehow your dpkg database got damaged, usually from a crash or some other unrecoverable error. This most often occurs with a buildlock, e.g:

package `fink-buildlock-foo-1.2.3-4':  missing version

(of course, replace foo-1.2.3-4 with the package name you are seeing).

When this happens, you should edit /sw/var/lib/dpkg/status as a superuser. Then go near the line number which shows up in the error message. You should see a fink-buildlock-foo-1.2.3-4 package whose Status field is marked

install ok installed

Change that to

purge ok not-installed

Under other circumstances, there may be garbage in the file. You can fix this situation by copying the previous version of the database, like so:

sudo cp /sw/var/lib/dpkg/status-old /sw/var/lib/dpkg/status

You may need to re-install the last couple of packages you installed before the problem started occurring.

Q6.14: Получаю сообщения об ошибках с упоминанием freetype.

A: Есть несколько видов таких ошибок. If you get the following:

/usr/bin/ld: can't locate file for: -lfreetype

check whether you have an extraneous freetype-config excutable by running

where freetype-config

if you're using tcsh, or

type -a freetype-config

if you're using bash. The Mono Framework has been known to install a /usr/bin/freetype-config that is a symbolic link to a file in that framework.

Если сообщение выглядит так:

/sw/include/pango-1.0/pango/pangoft2.h:52: 
error: parse error before '*' token 
/sw/include/pango-1.0/pango/pangoft2.h:57:
error: parse error before '*' token
/sw/include/pango-1.0/pango/pangoft2.h:61: 
error: parse error before '*' token 
/sw/include/pango-1.0/pango/pangoft2.h:86: 
error: parse error before "pango_ft2_font_get_face"
/sw/include/pango-1.0/pango/pangoft2.h:86: 
warning: data definition has no type or storage class 
make[2]: *** [rsvg-gz.lo] Error 1
make[1]: *** [all-recursive] Error 1 
make: *** [all-recursive-am] Error 2 
### execution of make failed, exit code 2 
Failed: compiling librsvg2-2.4.0-3 failed

или

In file included from vteft2.c:32: 
vteglyph.h:64: error:
parse error before "FT_Library" 
vteglyph.h:64: warning: 
no semicolon at end of struct or union vteft2.c: 
In function `_vte_ft2_get_text_width': 
vteft2.c:236: error: 
dereferencing pointer to incomplete type 
vteft2.c: In function `_vte_ft2_get_text_height':
vteft2.c:244: error: 
dereferencing pointer to incomplete type
vteft2.c: In function `_vte_ft2_get_text_ascent': 
vteft2.c:252: error:
dereferencing pointer to incomplete type 
vteft2.c: In function `_vte_ft2_draw_text': 
vteft2.c:294: error: 
dereferencing pointer to incomplete type 
vteft2.c:295: error: 
dereferencing pointer to incomplete type
make[2]: *** [vteft2.lo] Error 1 
make[1]: *** [all-recursive] Error 1 
make: *** [all] Error 2 
### execution of make failed, exit code 2
Failed: compiling vte-0.11.10-3 failed

или

checking for freetype-config.../usr/X11R6/bin/freetype-config 
checking For sufficiently new FreeType (at least 2.0.1)... no 
configure: error: pangoxft 
Pango backend found but did not find freetype libraries 
make: *** No targets specified and no makefile found. Stop. 
### execution of LD_TWOLEVEL_NAMESPACE=1 failed, exit code 2 
Failed: compiling gtk+2-2.2.4-2 failed
checking for freetype-config.../usr/X11R6/bin/freetype-config 
checking For sufficiently new FreeType (at least 2.0.1)... no 
configure: error: pangoxft 
Pango backend found but did not find freetype libraries 
make: *** No targets specified and no makefile found. Stop. 
### execution of LD_TWOLEVEL_NAMESPACE=1 failed, exit code 2 
Failed: compiling gtk+2-2.2.4-2 failed

значит, проблема возникла из-за путаницы между заголовками в пакете freetype | freetype-hinting и заголовками freetype2, сопровождающими X11 | XFree86.

fink remove freetype freetype-hinting

удалит любой вариант, который вы инсталлировали. С другой стороны, если ваша ошибка выглядит так:

ld: Undefined symbols: _FT_Access_Frame

это обычно по причине файла, оставшегося после предыдущей инсталляции X11. Инсталлируйте снова X11 SDK.

Q6.15: Получил сообщение об ошибке построения с упоминанием `Dl_info'.

A: Если сообщение выглядит так:

unix_dl.c: In function `rep_open_dl_library':
unix_dl.c:328: warning: assignment discards qualifiers from pointer target type 
unix_dl.c: In function `rep_find_c_symbol': 
unix_dl.c:466: error: `Dl_info' undeclared (first use in this function)
unix_dl.c:466: error: (Each undeclared identifier is reported only once 
unix_dl.c:466: error: for each function it appears in.)
unix_dl.c:466: error: parse error before "info" 
unix_dl.c:467: error: `info' undeclared (first use in this function) 
make[1]: *** [unix_dl.lo] Error 1

то скорее всего ваш файл заголовка /usr/local/include/dlfcn.h несовместим с Panther. Надо его убрать.

Обычно его инсталлирует Open Office и вам надо заменить этот файл заголовка, а также библиотеку /usr/local/lib/libdl.dylib на символические указатели (алиасы) встроенных файлов Panther

sudo ln -s /usr/include/dlfcn.h /usr/local/include/dlfcn.h
sudo ln -s /usr/lib/libdl.dylib /usr/local/lib/libdl.dylib

Q6.16: Fink утверждает, что мне не хватает gcc2 или gcc3.1, но их инсталляция не представляется возможной.

A: Это потому, что gcc2 и gcc3.1 являются виртуальными пакетами для отражения наличия gcc-2.95 и gcc-3.1, соответственно, в вашей системе. Инсталлируйте пакет gcc2.95 и/или gcc3.1 из XCode Tools (в более ранних версиях OS есть gcc-2.95 и gcc-3.1 как часть основной инсталляции Developer Tools).

Q6.17: Fink утверждает: Failed: Can't resolve dependency "system-java14-dev", но такого пакета нет.

A: Это виртуальный пакет. Ошибка данного типа имеет место, когда Java обновляется при помощи Software Update: файлы заголовков удаляются и это приводит к тому, что пакет -dev не воспроизводится.

Надо скачать соответствующий пакет Java Developer Tools из Apple. В данном отдельном случае это Java 1.4.2 Developer Tools.

Q6.18: При попытке инсталляции ч.-л. получаю сообщение: dpkg (subprocess): failed to exec dpkg-split to see if it's part of a multiparter: No such file or directory. Как это исправить?

A: Вообще это исправляется при помощи правильной настройки среды, см. этот Ч.З.В..

Q6.19: Получил такое сообщение: configure: error: XML::Parser perl module is required for intltool. Что делать?

A: Надо убедиться, что у вас правильный вариант пакета xml-parser-pm для соответствия версии Perl в вашей системе. Н-р, в Panther надо иметь xml-parser-pm581, а не xml-parser-pm560 (у вас также может быть заполнитель xml-parser-pm), т.к. у вас Perl-5.8.1, а не Perl-5.6.0. Если вы в Jaguar и используете по умолчанию системную версию Perl, у вас будет вариант pm560, а если вы инсталлировали Perl 5.8.0, у вас может быть вариант pm580.

Q6.20: Пытаюсь скачать пакет, а Fink выходит на какой-то загадочный сайт с distfiles в названии, а файла там нет.

A: Дело в том, что Fink пытается использовать одно из т.н. зеркал Master. Они созданы для обеспечения доступности исходных кодов для пакетов Fink даже тогда, когда апстрим-сайт их убирает. Как правило, такие ошибки случаются, когда новая апстрим-версия пакета выпущена, но еще не попала в зеркала Master.

Для исправления примените fink configure и установите порядок поиска для использования зеркал Master в последнюю очередь.

Q6.21: Хочу, чтобы Fink использовал разные опции при построении пакета.

A: Прежде всего надо направить координатору пакета запрос о варианте. Это может быть относительно легко. Если вы не получите ответа от координатора, если увидите новые пакеты или захотите попробовать сами другую опцию, см. Пособие по пакетированию и Учебник по пакетированию.

Прим.: Fink сознательно создан таким образом, чтобы все официальные бинарные файлы были идентичными, независимо от того, на какой машине они созданы, и таким образом явления типа оптимизации G5 не произойдут с официальным пакетом. Если вам это нужно, придется сделать это самостоятельно.

Q6.22: Whenever I try to build from source, Fink keeps waffling between alternate versions of the same library.

A: Often, in a complicated build tree, you may find that some of the packages depend on a particular version of a library, and other depend on a different one (e.g. db47 vs. db44). Consequently, Fink may try to switch to whichever one isn't currently installed in order to satisfy the build dependency for the current package that you're trying to update.

Unfortunately, due to limitations in the build-dependency engine, you may wind up with the dreaded

Fink::SysState: Could not resolve inconsistent dependencies

message when trying a sufficiently complicated update-all. This generally gives you a command to try to resolve the issue:

fink scanpackages
sudo apt-get update
sudo apt-get install foo=1.23-4	
      

but this may not work for sufficiently complicated updates. You might need to update packages one-by-one, at least for a while.

Q6.23: I get errors involving MACOSX_DEPLOYMENT_TARGET when I try to build a Python module.

A: For errors that look like the following:

running build
running build_ext
Traceback (most recent call last):
  File "setup_socket_ssl.py", line 21, in ?
    depends = ['socketmodule.h'] )
  File "/sw/src/root-python24-2.4.1-1/sw/lib/python2.4/distutils/core.py", line 166, in setup
SystemExit: error: $MACOSX_DEPLOYMENT_TARGET mismatch: now "10.4" but "10.3" during configure
### execution of /sw/bin/python2.4 failed, exit code 1

the problem occurs because the python2* packages write the current MACOSX_DEPLOYMENT_TARGET to a configuration file when they're built and the python build utilities use this value when compiling modules. This means that if you have, for example, a python24 package on 10.4 that was built on 10.3, either by upgrading 10.3 => 10.4, or via the 10.4-transitional binary distribution, in which python24 wasn't rebuilt, there will be a mismatch between what python thinks MACOSX_DEPLOYMENT_TARGET should be (10.3) and what it actually is (10.4).

The fix is to rebuild the offending python package, e.g. fink rebuild python24 for the case above.

For runtime errors that give the same type of error message as above, rebuild the module after rebuilding the appropriate python2* package.

Q6.24: I get unrecognized option `-dynamic' errors from libtool.

A: This error:

 libtool: unrecognized option `-dynamic'

typically means that you've replaced Apple's /usr/bin/libtool with a GNU libtool. Unfortunately, the two libtools do not do the same thing.

The only way to solve this is to get a working Apple libtool from somewhere. It is installed as part of the DeveloperTools.pkg package of the XCode Tools, and you can reinstall that whole package if you first clear out its receipt in /Library/Receipts (drag it to the Trash for OS 10.4 and later, or use sudo rm -rf /Library/Receipts/DeveloperTools.pkg for 10.3).

7 Проблемы компиляции - специальные пакеты

Q7.1: Не получается создать пакет и появляются ошибки с упоминанием sed.

A: Это может происходить, когда ваш скрипт регистрации (н-р ~/.cshrc) сделал нечто, после чего терминал получил сообщение, н-р "echo Hello" или xttitle. Для исправления проблемы наиболее легкое решение - сделать комментарий вне проблемных строк.

Если хотите сохранить эхоотображение, можно сделать нечто вроде следующего:

if ( $?prompt) then 
	echo Hello 
endif

Q7.2: Хочу перейти на пакеты Fink's XFree86, но не могу инсталлировать xfree86-base | xfree86, т.к.он конфликтует с system-xfree86.

A: Все прелести X11, к сожалению, действительно должны быть инсталлированы в /usr/X11R6. Поэтому пакеты Fink xfree86-base и xfree86-rootless также в нем установлены. Тем не менее, поскольку Fink не удалит файлы, которые не находятся в его базе данных, это не заменит автоматически инсталляцию X11, выполненную без Fink.

Как надо поступить:

Прим.: пользователи 10.2.x с новейшими версиями Fink (>= 0.16.2) и пользователи 10.3.x должны пропустить действие 1 в числе нижеуказанных (в любом случае это не сработает).

1. Удалите system-xfree86. Если у вас нет пакетов, зависящих от X11, это просто. Однако зачастую есть много инсталлированных пакетов, зависящих от X11. Чтобы не пришлось их деинсталлировать, можно использовать

sudo dpkg --remove --force-depends system-xfree86

для удаления и оставить все на своем месте. Если у вас нет инсталлированной system-xfree86, переходите к действию 3.

2. Вручную удалите все XFree86. Это можно сделать при помощи

sudo rm -rf /Applications/XDarwin.app /usr/X11R6 /etc/X11

Если вы переключаетесь с Apple X11, удалите приложение X11 также.

3. Для XFree86-4.2.1 инсталлируйте пакеты Fink xfree86-base и xfree86-rootless обычным образом: "fink install" для пользователей исходного кода, "apt-get install" или dselect для бинарных файлов.

-или-

3a. Для XFree86-4.3.x и более поздних версий инсталлируйте пакет Fink xfree86 с "fink install xfree86"--последняя версия (XFree86-4.4.x от 25 мая 2004 г.) пока еще не в бинарном distro и на данный момент находится только на нестабильном дереве [см. как инсталлировать нестабильные пакеты].

Q7.3: Как можно поменять несвязную версию пакетов Fink XFree86 на связную версию (или наоборот)?

A: Если вы выполняете версию Fink XFree86 и хотите переключиться между связными и несвязными версиями Fink, надо вручную удалить старую версию. Это выполняется на строке команд при помощи команд:

sudo dpkg -r --force-depends xfree86-base 
sudo dpkg -r --force-depends xfree86-shlibs 
sudo dpkg -r --force-depends xfree86-rootless 
sudo dpkg -r --force-depends xfree86-rootless-shlibs

или путем удаления связных версий:

sudo dpkg -r --force-depends xfree86-base-threaded 
sudo dpkg -r --force-depends xfree86-shlibs-threaded 
sudo dpkg -r --force-depends xfree86-rootless-threaded 
sudo dpkg -r --force-depends xfree86-rootless-threaded-shlibs

В FinkCommander также есть способ удаления пакетов. В окне исходного кода выберите пакет и затем в Source Menu примените "Force Remove."

Если вы используете system-xfree86, см. предыдущий вопрос относительно ее удаления.

Инсталлируйте необходимую вам версию xfree86:

xfree86-base и xfree86-rootless

xfree86-base-threaded и xfree86-rootless-threaded

обычным образом: "fink install" для пользователей исходного кода, "apt-get install" или dselect для бинарных файлов.

Q7.4: При попытке инсталляции KDE получил сообщение: 'Can't resolve dependency "cctools (>= 446-1)"'

A: Это зашифрованное сообщение означает, что вам надо инсталлировать Developer Tools за декабрь 2002 г.

Q7.5: Не могу обновить libiconv.

A: Если вы получили сообщение об ошибке в таком виде:

libtool: link: cannot find the library `/sw/lib/libiconv.la'

можно решить проблему при помощи

fink remove gettext-dev 
fink install libiconv

Q7.6: i can't install a package because c++filt is missing. Where do I get it?

A: If you get errors of the form

xgcc: installation problem, cannot exec `c++filt': No such file or directory

since updating to Tiger, then you need to do the following:

You also might also need to make sure you don't have any ancient Developer/Xcode Tools stuff laying around:

1) Flush out your old 2) Reinstall BSD.pkg (from your main OS install)

Q7.7: Fink refuses to update the gettext package, complaining that the dependencies are in an inconsistent state.

A: After running fink selfupdate to be sure you have the latest versions, try fink update gettext-tools. An old version of the gettext-tools package may be preventing you from updating gettext.

Q7.8: I can't install gtk+2 on OS 10.5

A: Typically this involves missing libraries, such as: /usr/X11/lib/libXrandr.2.0.0.dylib or /usr/X11/lib/libXdamage.1.1.0.dylib (or other versions of libraries in /usr/X11/lib/).

The current wisdom on the best fix for such an issue is to install Xcode 3.1.3 or later.

Q7.9: I'm having issues with a package that isn't listed here.

A: Since package problems tend to be transient, we've decided to put them up on the Fink wiki. Check the Package issues page.

8 Проблемы использования пакетов - Общие вопросы

Q8.1: Я получаю много сообщений типа "locale not supported by C library". Это плохо?

A: Ничего страшного, просто это значит, что программа будет использовать сообщения, форматы дат и т.д. по умолчанию на английском языке. Программа будет работать нормально, но иным образом. См. документ "Выполнение X11" в .

Q8.2: В моей системе вдруг появилось несколько странных пользователей с такими именами, как "mysql", "pgsql" и "games". Откуда они взялись?

A: Вы использовали Fink для инсталляции пакета, который зависит от другого пакета - passwd. passwd инсталлирует ряд дополнительных пользователей в вашей системе из соображений безопасности -- в системах Unix файлы и процессы принадлежат "владельцам", которые позволяют системным администраторам производить точную настройку системы разрешений и безопасности. Такие программы, как Apache и MySQL, нуждаются во "владельце", и было бы небезопасно позволять этим демонам укрепиться (представьте, что может произойти, если Apache будет поставлена под угрозу и вдруг выдаст разрешение всем файлам системы). Таким образом, пакет passwd производит работу по настройкам дополнительных пользователей для тех пакетов Fink, которые этого требуют.

Может вызвать беспокойство внезапное обнаружение нескольких неожиданных пользователей в вашей области "System Preferences: Users" (в 10.2.x) или "System Preferences: Accounts" (в 10.3.x), но лучше подавить желание удалить их:

Fink запрашивает разрешение на инсталляцию дополнительных пользователей в вашей системе в процессе инсталляции пакета passwd, и таким образом это не должно быть сюрпризом.

Q8.3: Как можно компилировать что-нибудь самостоятельно с применением ПО, инсталлированного с помощью Fink?

A: When compiling something yourself outside of Fink, the compiler and linker need to be told where to find the Fink-installed libraries and headers. It is also necessary to tell the compiler to use the appropriate target architecture. For a package that uses standard configure/make process, you need to set some environment variables:

-bash-

export CFLAGS=-I/sw/include 
export LDFLAGS=-L/sw/lib 
export CXXFLAGS=$CFLAGS 
export CPPFLAGS=$CXXFLAGS 
export ACLOCAL_FLAGS="-I /sw/share/aclocal"
export PKG_CONFIG_PATH="/sw/lib/pkgconfig"
export PATH=/sw/var/lib/fink/path-prefix-10.6:$PATH
export MACOSX_DEPLOYMENT_TARGET=10.5

-tcsh-

setenv CFLAGS -I/sw/include 
setenv LDFLAGS -L/sw/lib 
setenv CXXFLAGS $CFLAGS 
setenv CPPFLAGS $CXXFLAGS 
setenv ACLOCAL_FLAGS "-I /sw/share/aclocal"
setenv PKG_CONFIG_PATH "/sw/lib/pkgconfig"
setenv PATH /sw/var/lib/fink/path-prefix-10.6:$PATH
setenv MACOSX_DEPLOYMENT_TARGET 10.5

(assuming that the build system is running OS 10.5 or later)

It is often easiest just to add these to your startup files (e.g. .cshrc | .profile) so they are set automatically. If a package does not use these variables, you may need to add the "-I/sw/include" (for headers) and "-L/sw/lib" (for libraries) to the compile lines yourself. Some packages may use similar non-standard variables such as EXTRA_CFLAGS or --with-qt-dir= configure options. "./configure --help" will usually give you a list of the extra configure options.

In addition, you may need to install the development headers (e.g. foo-1.0-1-dev) for the library packages that you are using, if they aren't already installed.

Q8.4: Не могу запустить ни одно из приложений, инсталлированных при помощи Fink, через меню Applications в Apple X11.

A: Apple X11 не отслеживает настройки среды Fink, а это означает, что меню Applications не имеет правильную настройку PATH для нахождения приложений Fink. Для решения проблемы надо поместить перед именем приложения, инсталлированного при помощи Fink, следующее:

source /sw/bin/init.sh ;

Н-р, если вы хотите запустить GIMP, инсталлированный при помощи Fink, вставьте

source /sw/bin/init.sh ; gimp

в облать Command вашей записи GIMP.

Можно также отредактировать ваш файл .xinitrc (в вашем каталоге пользователя) и добавить:

source /sw/bin/init.sh

после первой строки.

Q8.5: Я озадачен опциями X11: Apple X11, XFree86 и т.д. Что надо инсталлировать?

A: Это варианты в XFree86 (основанные на коде XFree8), которые немного различаются между собой. Есть разные опции в Panther и Jaguar.

В Panther можно сделать выбор между следующими опциями:

Самые популярные решения в Jaguar и пакеты Fink для их работы:

Есть также другие варианты. Более подробно см. в документе Выполнение X11.

Q8.6: При попытке запуска приложения получил сообщение "cannot open display:". Что надо сделать?

A: Эта значит, что система не соединяет вас с вашим дисплеем X. Надо убедиться, что вы сделали следующее:

1. Запустить X (Apple X11, XFree86, ...).

2. Убедиться, что настройка переменной величины среды вашего ДИСПЛЕЯ правильная. Если вы используете настройку по умолчанию для X, можно сделать

setenv DISPLAY :0

если вы выполняете tcsh, либо

export DISPLAY=:0

если вы выполняете bash.

Q8.7: Я не нахожу свою любимую программу в Fink. Как можно предложить новый пакет для внесения в Fink?

A: Поместите запрос в Package Request Tracker на странице проекта Fink.

Имейте в виду, что для этого вам надо иметь SourceForge id.

Q8.8: Что это за "виртуальные пакеты" system-*, которые иногда представлены, но я вроде как не могу инсталлировать или удалить их самостоятельно?

A: Пакеты с такими именами, как system-perl, являются пакетами-заполнителями. Они не содержат настоящих файлов, а просто являются для fink механизмом для сообщения сведений о программах, инсталлированных вручную вне fink.

Начиная с дистрибуции 10.3 большинство заполнителей даже не являются реальными пакетами, которые можно инсталлировать или удалить. Вместо этого они являются "Virtual Packages", пакетными структурами данных, создаваемыми самой программой fink в ответ на предварительно конфигурированный список программ, инсталлированных вручную. По каждому виртуальному пакету fink проверяет определенные файлы в определенных местах и если находит их, считает виртуальный пакет "инсталлированным".

Можно запустить программу fink-virtual-pkgs (часть пакета fink) для получения точного списка того, что fink считает инсталлированным. Добавление флажка --debug даст много диагностической информации о том, какие именно файлы fink проверяет.

К сожалению, нет механизма, через который вы можете инсталлировать произвольную программу самостоятельно (вне fink) так, чтобы fink признал ее вместо того, чтобы пытаться инсталлировать свою собственную версию этой программы. Очень сложно в целом иметь способность проверять флажки конфигурации, компиляции, имена маршрута и т.д.

Далее приведены наиболее важные виртуальные пакеты, которые fink определяет (начиная с fink-0.19.2):

9 Проблемы использования пакетов - Специальные пакеты

Q9.1: Нет ни звука от XMMS

A: Убедитесь, что у вас есть "eSound Output Plugin", отмеченный в преференциях XMMS. По какой-то странной причине он выбирает плагин записывающего устройства диска по умолчанию.

Если все еще нет звукового вывода или XMMS жалуется, что не может найти аудиокарту, попробуйте сделать следующее:

Надо учитывать, что esd разработан для выполнения обычным пользователем, а не суперпользователем. Обычно он осуществляет связь через гнездо файловой системы /tmp/.esd/socket. Вам могут понадобиться выключатели -tcp и -port, если вы хотите управлять клиентами esd или другой машиной через сеть.

Также имеются сообщения об отказах и зависании XMMS в 10.1. Мы еще не проанализировали и не устранили эту проблему.

Q9.2: Когда во время редактирования файла в nedit я открываю другой файл, его окно появляется, но не работает.

A: Это известная проблема, которая наблюдается в последних версиях nedit и lesstif на всех платформах. Обойти ее можно так: открыть новое окно при помощи File-->New, а затем открыть следующий файл, с которым вы хотите работать.

Сейчас эта проблема решена в nedit-5.3-6, который зависит от openmotif3 в большей степени, чем от lesstif.

Q9.3: Помогите! Когда запускаю XDarwin, она сразу завершает работу!

A: Не паникуйте. Документ "Выполнение X11" сейчас имеет большой раздел Выявление и устранение проблем по данному общему вопросу.

Q9.4: При попытке запуска XDarwin получил сообщение "xinit: No such file or directory (errno 2): no server "/usr/X11R6/bin/X" in PATH".

A: Во-первых, надо убедиться, что вы основываетесь на init.sh при запуске X ~/.xinitrc.

В Jaguar иногда все пакеты xfree86 поддаются построению, но только xfree86-base и xfree86-base-shlibs инсталлируются. Проверьте, есть ли у вас инсталлированные xfree86-rootless и xfree86-rootless-shlibs. Если нет, то проблема в fink install xfree86-rootless.

Если да, то надо попробовать fink rebuild xfree86-rootless. Если это не сработает, проверьте, есть ли у вас /usr/bin/X11R6 в PATH.

Q9.5: Хочу стереть клавишу в Apple X11.app для поведения, как в XDarwin.

A: Некоторые пользователи сообщают, что поведение клавиши delete в XDarwin отличается от ее поведения в Apple X11. Это можно исправить путем добавления строк к соответствующим файлам инициализации X:

.Xmodmap:

keycode 59 = Delete

.Xresources:

xterm*.deleteIsDEL: true xterm*.backarrowKey: false
                    xterm*.ttyModes: erase ^?

.xinitrc

xrdb -load $HOME/.Xresources 
xmodmap $HOME/.Xmodmap

Q9.6: Я сделал обновление от GNOME 1.x дo GNOME 2.x и теперь gnome-session не открывает менеджер окон.

A: Тогда как в GNOME 1.x gnome-session активизирует менеджер окон sawfish автоматически, в GNOME 2.x надо запускать менеджер окон в ~/.xinitrc до выполнения gnome-session, н-р:

... 
exec metacity & exec gnome-session

Прим.: это больше не относится к GNOME 2.4. Выполнение gnome-session активизирует менеджер окон.

Q9.7: Я сделал обновление до Apple X11 в Panther и теперь у меня не хватает строк заголовков в окнах.

A: Вы не обновили X11 до версии "X11 1.0 - XFree86 4.3.0", включенной в Panther. Вы можете инсталлировать X11 из X11.pkg на Disk 3.

Q9.8: I'm having problems with X11 and Fink.

A: There are two possibilities to consider.

Q9.9: Я меня остались проблемы с X11и Fink.

A: Если подсказки в ответах по поводу проблем: Fink просит инсталлировать XFree86 или X.org и X11 и обновление от 10.2 не помогают или неприменимы к вашей ситуации, возможно, вам надо убрать свою инсталляцию X11, удалить все старые заполнители и частично/полностью инсталлированные пакеты, связанные с X11:

On Leopard, use

sudo pkgutil --forget com.apple.pkg.X11User
sudo pkgutil --forget com.apple.pkg.X11SDKLeo

Then, on either 10.4 or 10.5, run

sudo dpkg -r --force-all system-xfree86 system-xfree86-42 system-xfree86-43 \
xorg xorg-shlibs xfree86 xfree86-shlibs \
xfree86-base xfree86-base-shlibs xfree86-rootless xfree86-rootless-shlibs \
xfree86-base-threaded xfree86-base-threaded-shlibs \
xfree86-rootless-threaded xfree86-rootless-threaded-shlibs
rm -rf /Library/Receipts/X11SDK.pkg /Library/Receipts/X11User.pkg
fink selfupdate; fink index

(the first line may give you warnings about trying to remove nonexistent packages). Then, reinstall Apple's X11 (and the X11SDK, if needed), or, if you're on 10.4, an alternative X11 implementation, like XFree86 or X.org.

If you are still having problems then you can run

fink-virtual-pkgs --debug

для получения информации о том, чего не хватает.

Если вы используете более раннюю версиюfink, существует скрипт Perl (благодарим Martin Costabel), который можно скачать и выполнить для получения информации.

Q9.10: After updating to Tiger (OS 10.4), whenever I use a GTK app, I get errors involving _EVP_idea_cbc.

A: This is caused by an apparent bug in Tiger's dynamic linker (current as of 10.4.1), but looks to be fixed in 10.4.3, and Fink has had a workaround in the guise of base-files-1.9.7-1 or later.

If you haven't updated Tiger and/or base-files yet, you can work around this issue by prefixing the name of the software you want to run as follows:

env DYLD_FALLBACK_LIBRARY_PATH=: 

E.g., if you want to use gnucash, you'd use

env DYLD_FALLBACK_LIBRARY_PATH=: gnucash

This method works for applications that are launched via the Application Menu in Apple's X11 as well as a terminal.

You may find it preferable to set this globally (e.g. in your startup script, and/or in your .xinitrc, which you may need to do to run GNOME). Put

export DYLD_FALLBACK_LIBRARY_PATH=:

in your .xinitrc (regardless of your login shell) or your .profile (or other startup script) for bash users and:

setenv DYLD_FALLBACK_LIBRARY_PATH :

is the corresponding command to use in e.g. your .cshrc file for tcsh users.

Note: this will automatically be done if you install a recent enough base-files.

Q9.11: I can't get the help to work for any GNOME application.

A: You need to install the yelp package. This package was not placed within the GNOME bundle because it uses cryptography, and it was decided not to place all of GNOME in the crypto tree just to use the help system.


Copyright Notice

Copyright (c) 2001 Christoph Pfisterer, Copyright (c) 2001-2015 The Fink Project. You may distribute this document in print for private purposes, provided the document and this copyright notice remain complete and unmodified. Any commercial reproduction and any online publication requires the explicit consent of the author.


Generated from $Fink: faq.ru.xml,v 1.17 2012/11/11 15:20:14 gecko2 Exp $