Stasroot1 писал(а): ↑07.05.2010 22:30
Прочитал вашу ссылку, спасибо, все разложилось по полочкам, доступно и понятно.
Назрел вопрос: можно ли скомпилировать программу локально скажем в виртуальной машине и уже скомпелированную установить на хостинг? По идее как я понял можно, но вот только как ее на хостинге познакомить с ОС на хостинге... Ведь при установке/компиляции, моя домашняя система будет знать об этой проге, а вот ОС на хостинге то ничего не знает!
Можно собрать программу из порта, затем создать пакет. Пакет соответсвенно тем или иным путем загрузить на сервер и установить.
Желательно чтобы при этом на сервере и в системе в которой идет сборка были одинаковые версии портов и одинаковые версии ОС (хотя бы одной ветки).
Допустим мне надо создать пакет с собранным mc:
Создаем каталог куда поместим пакет с зависимостями:
# mkdir /usr/mc_package
Переходим в этот каталог.
# cd /usr/mc_package
Смотрим имя пакета:
# pkg_info -Ix mc
Ответом будет сообщение:
mc-4.7.0.2_2 Midnight Commander, a free Norton Commander Clone
Затем создаем пакет со всеми зависимостями при помощи утилиты pkg_create:
# pkg_create -R -jb mc-4.7.0.2_2
После выполнения команды посмотрим список пакетов сформировавшихся пакетов:
# ls -la
total 34682
drwxr-xr-x 2 root wheel 512 11 май 08:46 ./
drwxr-xr-x 22 root wheel 512 11 май 08:42 ../
-rw-r--r-- 1 root wheel 105276 11 май 08:46 gamin-0.1.10_3.tbz
-rw-r--r-- 1 root wheel 2558505 11 май 08:46 gettext-0.17_1.tbz
-rw-r--r-- 1 root wheel 11025 11 май 08:46 gio-fam-backend-2.22.4.tbz
-rw-r--r-- 1 root wheel 1970274 11 май 08:46 glib-2.22.4.tbz
-rw-r--r-- 1 root wheel 1491463 11 май 08:45 libiconv-1.13.1_1.tbz
-rw-r--r-- 1 root wheel 1018667 11 май 08:45 libslang2-2.2.2_1.tbz
-rw-r--r-- 1 root wheel 1703003 11 май 08:44 mc-4.7.0.2_2.tbz
-rw-r--r-- 1 root wheel 609372 11 май 08:45 pcre-8.02.tbz
-rw-r--r-- 1 root wheel 13903649 11 май 08:45 perl-5.10.1.tbz
-rw-r--r-- 1 root wheel 51122 11 май 08:45 pkg-config-0.23_1.tbz
-rw-r--r-- 1 root wheel 230421 11 май 08:45 png-1.4.1_1.tbz
-rw-r--r-- 1 root wheel 11615166 11 май 08:45 python26-2.6.4.tbz
Вот собственно и все, теперь эти пакеты можно переносить на другую систему и устанавливать при помощи команды pkg_add. Пакет содержит уже собранные модули программы и установится за небольшое к-во времени. Установленный таким образом пакет регистрируется в базе данных установленного ПО, как и собранный порт. Как работать с пакетами я подробно описывал на своем сайте:
http://www.bsdnotes.ru/?lnk=sys_packages
Проблемы могут возникнуть если на этих ОС допустим установлено старое ПО, а Вы ставите уже свежее новое, зависимости у свежих пакетов других версий и не факт что пакет установится. В этом случае в консоль будут выданы сообщения об ошибках и т.д. Так же проблемы могут возникнуть скажем если Вы собрали пакет на FreeBSD 8.0 и несете его в систему FreeBSD 6.2 допустим. В этом случае может быть все что угодно, т.е. так делать тоже не рекомендуется. Вполне нормально получается (по крайней мере у меня проблем не было), если пакет собран скажем на FreeBSD 7.2 а устанавливается в FreeBSD 7.1 (т.е. в пределах ветки). Но лучше всего конечно иметь аналогичные ОС для сборки.