Создание порта Macports, который не требует установки, никакой зависимости, только извлечение - PullRequest
0 голосов
/ 20 декабря 2011

Цель

Я пытаюсь создать порт (Macports) для инструмента с открытым исходным кодом на основе Eclipse, который не требует установки, другими словами, это просто " извлечение и использование ". Пользователи могут скачать инструмент с официального сайта проекта и использовать просто так. Таким образом, переменная DESTROOT не установлена.

Поскольку многие пользователи Mac привыкли к удобству Macports, я бы хотел добавить туда инструмент, чтобы пользователи могли мгновенно установить или удалить его.

** Важное замечание: как только пользователи запускают инструмент, он создает каталог " / workspace " в том же месте, где был установлен инструмент, чтобы сохранить предпочтения пользователей, настройки и другие необходимые файлы. Таким образом, когда пользователь запускает инструмент, программа должна иметь доступ для записи в том же каталоге, в котором она была установлена. Текущая версия инструмента не позволяет выбрать местоположение рабочей области.

Задача

Как мне организовать Portfile?

Я установил следующие конфигурации, где я говорю Macports не использовать configure, build, и destroot phase.

set cm_workspace    /workspace

universal_variant   no

use_configure       no

supported_archs     noarch

post-extract {
    file mkdir ${worksrcpath}${cm_workspace}
    destroot.keepdirs-append  ${worksrcpath}${cm_workspace}
}

build {}

destroot {}

Как я понимаю,

  • извлечение фаза распаковки файла,
  • и устанавливают фазы должны архивировать эти файлы,
  • и наконец активировать фаза должна переместить файлы в destroot .

Но я продолжаю получать ошибки.

--->  Extracting cubridmanager
--->  Configuring cubridmanager
--->  Building cubridmanager
--->  Staging cubridmanager into destroot
Error: No files have been installed in the destroot directory!
Error: Please make sure that this software supports 'make install DESTDIR=${destroot}' or implement an alternative destroot mechanism in the Portfile.
Error: Files might have been installed directly into your system, check before proceeding.
Error: Target org.macports.destroot returned: Staging cubridmanager into destroot failed
Log for cubridmanager is at: /opt/local/var/macports/logs/_Users_nbp_macports_databases_cubridmanager/cubridmanager/main.log
Error: Status 1 encountered during processing.
To report a bug, see <http://guide.macports.org/#project.tickets>

Я хочу внести свой вклад в это сообщество с открытым исходным кодом, но я не могу пройти этот шаг.

Ответы [ 2 ]

3 голосов
/ 21 декабря 2011

Вы неправильно поняли фазы, обычный рабочий процесс выглядит следующим образом:

  1. извлечение распаковывает загруженный файл
  2. патч применяется любойлокальные исправления
  3. запускает ./configure
  4. сборка запускает make
  5. уничтожает запускает make installDESTDIR = $ {destroot}
  6. install упаковывает файл в области Destroot в архив
  7. активировать перемещает файлы в префикс $ {

Итак, в вашем случае вам не нужны шаги 2, 3 и 4. Но вам все равно нужно скопировать файлы в область уничтожения на шаге 5, этап уничтожения.В противном случае MacPorts не знает, какие файлы предполагается установить.

supported_archs     noarch
use_configure no

build {}
destroot {
    copy ${worksrcpath} ${destroot}${prefix}/some/path
}

Обратите внимание, что MacPorts не рекомендует устанавливать файлы вне каталога префикса, поскольку установка должна быть автономной.Путь / рабочее пространство звучит как довольно плохая идея.Скорее, вы должны использовать путь внутри домашнего каталога пользователей для сохранения любых данных, так как в противном случае его нельзя использовать на компьютере с несколькими учетными записями пользователей.Конечно, фактические исполняемые файлы могут находиться в префиксе MacPorts.

Обычно программное обеспечение UNIX отделяет двоичные файлы, библиотеки и общие данные в / usr (или в случае MacPorts, / opt / local) от пользовательскогоданные в домашнем каталоге.Если ваш инструмент не соответствует этому соглашению, разработчики должны сначала это исправить.

1 голос
/ 20 декабря 2011

Я не думаю, что этот инструмент подходит для macports по смежным причинам

Все файлы из macports должны находиться в одном из поддерживаемых каталогов, т.е. уничтожать и заканчиваться в / opt / local
Проект пытается писать в подкаталоги, что не очень хорошо здесь
Каталоги, записанные в bu macports, могут быть записаны только пользователем macports, чтобы минимизировать возможность влиять на среду сборки и запуска.
В многопользовательской системе кому принадлежит каталог для записи? например macports устанавливаются как пользовательские macports и запускаются как кто-то другой. Также, если в каталог записано более одного обычного пользователя?

Я думаю, что вам нужно пропатчить инструмент, чтобы ему передавали каталог для создания рабочего пространства, когда его запускает обычный пользователь, но инструмент устанавливается как ownwd с помощью macports в / opt / local / bin

...