0. Intro
По моему личному мнению существует лишь два некоммерческих дистрибутива Linux, пригодных для использования на продакшене: CentOS и Debian GNU/Linux. С первым я знаком достаточно хорошо, а второй использую редко и Debian specific навыков не имею. Так что, в статье возможны серьезные неточности и нерациональности. По заказу целевой аудитории статья будет обильно снабжена скриншотами…. консоли.
1. Установка минимального набора ПО
Свежая инсталяция Debian GNU/Linux 6.0.4 (стандартная установка БЕЗ графических компонентов) радует такой вот консолью с отмазками от ответственности во первых строках.
Меня, как пришельца из мира CentOS пугают некоторые стандартные программы Debian GNU/Linux, а тот же vi пугает меня независимо от дистрибутива, так что, первым делом я сделал это:
Дал команду apt-get install mc
Дождался успешного завершения её выполнения
Дал команду mc
Создал директории /opt/dspace и /opt/dspace_src для будущей инсталляции DSpace и размещения исходных кодов DSpace. То же самое можно было сделать и из командной строки, дав команды mkdir /opt/dspace и mkdir /opt/dspace_src
2. Получение DSpace и подготовка исходных кодов
Для начала, DSpace нужно скачать.
Для этого перейдя в директорию /opt необходимо использовать утилиту wget.
Набор команд будет выглядеть как на картинке выше:
cd /opt
wget http://citylan.dl.sourceforge.net/project/dspace/DSpace%20Stable/1.8.2/dspace-1.8.2.-src-release.tar.gz
Результатом выполнения этих команд станет файл dspace-1.8.2.-src-release.tar.gz, скачаный в директорию /opt
Далее, исходные коды из архива необходимо извлечь в директорию /opt/dspace_src. Это делается последовательностью команд:
cd /opt/dspace_src
tar xvzf /opt/dspace-1.8.2-src-release.tar.gz
С результатом выполнения данных команд можно ознакомиться на картинке ниже:
3. Настройка репозиториев
Либо я чего-то не понял, либо так оно и есть, но Apache Maven отсутствует в обычных репозиториях Debian/Gnu Linux, зато присутствует в Testing. Для подключения Testing необходимо сделать следующее:
Посредством редактора mcedit открыть файл /etc/apt/sources.lst
Откроется окно редактора:
И добавить в него строку deb http://ftp.debian.org/debian testing main contrib non-free
После чего сохранить файл и дать команды apt-get update && apt-get upgrade
Это перестроит кэш менеджера пакетов и обновит систему. В процессе менеджер пакетов несколько раз спросит пользователя, уверен ли тот в своём желании установить выбранные пакеты и скачать указанный объем данных из сети.
4. Установка ПО
Не зная тонкостей дистрибутива я решил дать команду aptitude install maven2 ant tomcat6 postgresql openjdk-6-jdk но наверное и apt-get install maven2 ant tomcat6 postgresql openjdk-6-jdk сработало бы
Команда будет выполняться долго и с вопросами:
Соглашаемся с предложением пакетного менеджера скачать файлы
Меняем No на Yes
Наблюдаем процесс выполнения и результат
Проверить как всё прошло можно последовательно дав команды:
ant -version
mvn -version
java -version
5. Настройка PostgreSQL
Устанавливаем верную локаль базы, для этого даем команды
pg_dropcluster —stop 9.1 main
pg_createcluster —locale ru_RU.UTF-8 —start 9.1 main
Регистрируем роль и базу давая последовательность команд
su postgres
createuser -d -A -P
createdb -O dspace -E UNICODE dspace
После ввода второй команды придется ответить на вопросы мастера. И для логина и пароля в тестовой инсталляции я использовал dspace.
6. Настройка и установка DSpace
Открываем конфигурационный файл текстовым редактором:
Вносим правки:
dspace.dir = /opt/dspace
dspace.baseurl = http://localhost:8080/jspui
dsspace.url = ${dspace.baseUrl}/jspui
Вносим правки:
db.name = postgres
db.username = dspace
db.password = dspace
Вносим правки:
default.locale = ru
Вносим правки:
default.language = ru
Переходим в директорию сборки командой cd /opt/dspace_src/dspace-1.8.2-src-release/dspace запускаем сборку командой mvn package
Наблюдаем за процессом сборки
Результат успешной сборки выглядит так:
Переходим в целевую директорию командой cd /opt/dspace_src/dspace-1.8.2-src-release/dspace/target/dspace-1.8.2-build даем команду установки ant fresh_install
Результат успешной установки выглядит так:
Даем права сервису Tomcat на директорию с содержимым архива:
Копируем jspui из целевой директории DSpace в рабочую директорию Tomcat:
7. Проверка
Узнаем адрес сервера:
И вбиваем в строку браузера:
Уведомление: Elena Serpentina Davydova (elenaserpentinadavydova) | Pearltrees
Пакет maven2 присутствует на официальных репозитариях Debian. Вы просто не указали эти репозитарии в файле /etc/apt/sources.list. Возможно, на первом DVD-диске пакета не обнаружилось.
deb http://ftp.ua.debian.org/debian/ squeeze main
deb-src http://ftp.ua.debian.org/debian/ squeeze main
deb http://ftp.ru.debian.org/debian/ squeeze main
deb-src http://ftp.ru.debian.org/debian/ squeeze main
По команде
# apt-cache show maven
определяем, что версия пакета maven2 — 2.2.1-5
На картинках в общем видно что и как. на момент написания заметки, maven2 был ЛИШЬ в testing.
Даже на момент написания статьи пакет находился на официальных репозитариях.
Не собирается по команде mvn package
Листинг из консоли:
[INFO] Scanning for projects…
[INFO] ————————————————————————
[ERROR] FATAL ERROR
[INFO] ————————————————————————
[INFO] Error building POM (may not be this project’s POM).
Project ID: org.dspace:dspace-parent:pom:1.8.3
Reason: Cannot find parent: org.sonatype.oss:oss-parent for project: org.dspace:dspace-parent:pom:1.8.3 for project org.dspace:dspace-parent:pom:1.8.3
[INFO] ————————————————————————
[INFO] Trace
org.apache.maven.reactor.MavenExecutionException: Cannot find parent: org.sonatype.oss:oss-parent for project: org.dspace:dspace-parent:pom:1.8.3 for project org.dspace:dspace-parent:pom:1.8.3
at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:404)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:272)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.project.ProjectBuildingException: Cannot find parent: org.sonatype.oss:oss-parent for project: org.dspace:dspace-parent:pom:1.8.3 for project org.dspace:dspace-parent:pom:1.8.3
at org.apache.maven.project.DefaultMavenProjectBuilder.assembleLineage(DefaultMavenProjectBuilder.java:1396)
at org.apache.maven.project.DefaultMavenProjectBuilder.buildInternal(DefaultMavenProjectBuilder.java:823)
at org.apache.maven.project.DefaultMavenProjectBuilder.buildFromSourceFileInternal(DefaultMavenProjectBuilder.java:508)
at org.apache.maven.project.DefaultMavenProjectBuilder.build(DefaultMavenProjectBuilder.java:200)
at org.apache.maven.DefaultMaven.getProject(DefaultMaven.java:604)
at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:487)
at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:391)
… 12 more
Caused by: org.apache.maven.project.InvalidProjectModelException: Not a v4.0.0 POM. for project org.sonatype.oss:oss-parent at /root/.m2/repository/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
at org.apache.maven.project.DefaultMavenProjectBuilder.readModel(DefaultMavenProjectBuilder.java:1599)
at org.apache.maven.project.DefaultMavenProjectBuilder.readModel(DefaultMavenProjectBuilder.java:1571)
at org.apache.maven.project.DefaultMavenProjectBuilder.findModelFromRepository(DefaultMavenProjectBuilder.java:562)
at org.apache.maven.project.DefaultMavenProjectBuilder.assembleLineage(DefaultMavenProjectBuilder.java:1392)
… 18 more
[INFO] ————————————————————————
[INFO] Total time: < 1 second
[INFO] Finished at: Thu Sep 25 21:19:48 EEST 2014
[INFO] Final Memory: 1M/5M
[INFO] ————————————————————————
Отвечу сам!
Ссылка на ответ первоисточника
http://dspace.2283337.n4.nabble.com/Maven-Error-td4673583.html
Необходимо удалить каталог /.m2. Подправить файл pom.xml.
Сервис oss.sonatype.org изменил протокол http на https.
На сайте sourceforge.net архивы не обновлены на момент написания комментария.
К сожалению, теперь у нас при сборке из коробки куча проблем со сборщиком 🙁 Core-team теперь работает на условиях парт тайма а в остальное время принимает участие в обучении волонтеров и многоумных дискуссиях о конкуренции с КРИС системами и изменению правил вебометрикса 🙁 Реально фигово когда поддерживаемый 1.8.3 из коробки не собирается, и 4.1 не собирался… я привык на примере 1.7 и 1.8 что диспейс железобетонный, первый звоночек был в 3.х, когда 3.0 было реально невозможно пользоваться. Сейчас версия 3.3, но OAI до сих пор не валидируется… круто, да? Про версию 4.х и говорить не хочется.
Да, я таки думаю надо с дискуссией на гпнтб-шный форум возвращаться, у меня «проходимость» нулевая. да и шаблон для коментов дюже дурацкий, а там полезнее будет и народу больше увидит.
Были еще проблемы с нехваткой оперативной памяти. Если в консоле получаете сообщение типа «OutMemory», то это именно такой случай. Создавал VM c ОЗУ в 64 мб. После поднятия до 512 Мб все успешно собралось. Вывод: машина должна иметь для нормальной работы (хотя бы установка) не менее 512 Мб.
Результаты по команде free
total used free shared buffers cached
Mem: 515296 482668 32628 0 17556 304192
-/+ buffers/cache: 160920 354376
Swap: 473080 10424 462656
По команде top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1694 tomcat6 20 0 282m 120m 5008 S 0.3 23.9 0:53.71 java
Про это на гпнтбшном форуме писалось неоднократно 🙂 причем память ключом -Xmx в /bin/dspace.sh поднять надо и в параметрах томкэта тоже. Ибо это «разные явы».
http://irbis.gpntb.ru/read.php?53,75093,81054#msg-81054 во 🙂
но 64 мб озу — это как-то не серьезно, учитывая jvm heap в 256 из коробки. Кста, линукс имеет обыкновение очень часто показывать 0 мегабайт или около того при вызове free -m, ибо всё что не сожрали процессы, отдаётся под кэш чтения.