Традиционное место для хранения моих библиотек Java и приложений в системах на основе UNIX - PullRequest
7 голосов
/ 25 апреля 2010

Я обычно храню приложения Java и файлы JAR, которые я загружаю из Интернета, в папке ~ / Java на моем компьютере (машина с OS X). Я делал это со времен, когда я был пользователем Windows. Однако я думаю, что в системах на основе UNIX локальные пользовательские приложения обычно хранятся в другом каталоге. У меня такое ощущение, что этот каталог должен быть либо /usr/local/, /usr/local/USERNAME, /opt/local, либо /opt/local/USERNAME, но я не уверен. Любые идеи, какой каталог я могу использовать для этой цели?

Обратите внимание, что я имею в виду архивные файлы, которые я загружаю из Интернета, распаковываю и использую локально, а не программы, имеющие сценарии установки или MacPorts и т. Д.

Ответы [ 5 ]

14 голосов
/ 19 марта 2012

Пара-ответ заключается в том, что вам не нужно скачивать банки вручную, вам следует использовать Gradle , Ivy , Maven или нечто подобное, чтобы управлять своими банками для вас. Эти инструменты принимают простую спецификацию ваших зависимостей в качестве входных данных и идут и находят, скачивают, хранят и делают доступными все необходимые файлы JAR. Это требует некоторого привыкания, но довольно замечательно, когда вы в этом разбираетесь.

Прямой ответ, однако, заключается в том, что на ортодоксальном Unix эти файлы принадлежат /usr/local/share. usr потому что это данные только для чтения, которые не являются частью базовой операционной системы, local, потому что они не предоставляются операционной системой (которой принадлежит остальная часть /usr), и share потому что JAR-файлы не зависят от архитектуры.

Обратите внимание, что во FreeBSD система управления пакетами 'ports' помещает файлы в /usr/local, но я полагаю, что делится ими с локальным администратором. Нет другого места, куда попадают чисто локальные файлы.

Если в системе есть соглашение о том, куда идут файлы, управляемые пакетами, скопируйте это в /usr/local. Например, в Ubuntu есть /usr/share/java, поэтому вы должны использовать /usr/local/share/java.

Кроме того, если в системе существует соглашение об обработке версий, скопируйте его. Опять же, в Ubuntu все файлы jar хранятся в одном каталоге с номерами версий в имени, но с символической ссылкой без версии, указывающей на версию по умолчанию / последнюю версию. Итак, у меня есть файл на /usr/share/java/xstream-1.3.1.jar и символическая ссылка на /usr/share/java/xstream.jar, указывающая на него. Я бы использовал тот же подход в /usr/local/share/java.

Так вот, это для православного юникса. Вы на OS X, который не является ортодоксальным Unix. Тем не менее, применяются следующие принципы: найдите, как система хранит предоставляемые ею файлы jar, и перенесите это в пространство файловой системы, управляемой пользователем.

3 голосов
/ 25 апреля 2010

Apple имеет примечание , дающее / Library / Java / Extensions в качестве каталога для общих jar-файлов и ~ / Library / Java / Extensions для jar-файлов только для себя. Эти пути находятся на пути к классам.

Банки могут быть где угодно, если этот каталог находится в вашем пути к классам. (Я использую версию Стиль Турбьёрна Равна Андерсена, который я использую ~ / Library / Jar / jakarta-commons-net-1.1.8 / commons-net.jar)

См. Ответ Тома Андерсона для лучшего способа сделать это, используя плющ и т. Д.

2 голосов
/ 25 апреля 2010

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

Я обычно скачиваю нужные мне jar-файлы в качестве дистрибутива и распаковываю их в свою собственную папку, а затем добавляю jar-файлы в проекты, в которых они мне нужны, в моей IDE. Для библиотек общим подходом является использование Maven и его обработка зависимостей.

Итак, я предлагаю сохранить ваш текущий способ сделать это, если вам это нравится, но иметь каждый проект в отдельной папке, например

~/Java/jakarta-commons-net-1.1.8/commons-net.jar
2 голосов
/ 25 апреля 2010

Возможно, вы захотите прочитать Стандарт иерархии файловой системы / opt или / usr / local, возможно, уместны, но сначала вам следует прочитать определения FHS.

1 голос
/ 29 июня 2016

В системах FreeBSD расположение: ${LOCALBASE}/share/java - и его подкаталоги. Не то чтобы все программные порты уважали это, но они должны.

LOCALBASE обычно /usr/local - если не перезаписано системным администратором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...