Я только что создал собственный репозиторий YUM через createrepo
на одном из наших серверов и уведомил об этом другие. У меня в репозитории три RPM:
[foo@one repository]$ ls
jdk-7u4-linux-x64.rpm jdk-7u79-linux-x64.rpm jdk-8u65-linux-x64.rpm repodata
Теперь, когда я ищу доступные пакеты, я получаю следующий результат:
[foo@two ~]$ sudo yum list available jdk*
Available Packages
jdk.x86_64 2000:1.7.0_79-fcs
jdk1.8.0_65.x86_64 2000:1.8.0_65-fcs
Предполагается, что на некоторых серверах уже установлена Java 8, а на некоторых еще должна быть обновлена и работает Java 7. Чтобы обновить это плавно, я бы настроил Ansible для установки определенного пакета Java в зависимости от того, с каким узлом он обращается.
Конечно я могу сказать установить jdk
на серверах Java 7 и установите jdk1.8.0_65
на серверах Java 8, но это кажется рискованным.
Теперь мой вопрос: почему эта версия включена в Java 8 rpm и почему она не включена в Java 7? И есть ли способ сделать версию 7 явной в имени пакета?
Это не странно, так оракул решил выбрать имена.
Для версии 1.7 пакет jdk называется "jdk", у них есть Тег эпохи установлен на 2000 и различные версии (1.7.0_79-fcs, 1.7.0_25-fcs).
Таким образом, вы можете обновлять пакет и устанавливать пакет, выполнив «yum install jdk»
Начиная с версии 1.8 они решили использовать для каждой версии свое имя пакета. Итак, имя пакета теперь «jdk1.8.0_65», эпоха «2000» и версия «1.8.0_65-fcs».
Таким образом, вы больше не сможете установить «стандартный» пакет (jdk), вам нужно знать его имя: «yum install jdk1.8.0_65». Преимущество в том, что вы можете установить несколько jdk и использовать все, что захотите.