ติดตั้ง sun java 6 และ sun java 7 แบบคู่ขนานบน linux (fedora 16) โดยใช้ rpm


8

นี่คือสิ่งที่ฉันต้องการจะประสบความสำเร็จ แต่ฉันล้มเหลว (ฉันเป็นมือใหม่ใน Linux)

ฉันมีกล่อง Fedora 16 (64 บิต) และต้องการติดตั้ง oracle java หลายเวอร์ชัน (java 6 และ java 7 ในขณะนี้) /optฉันพยายามที่จะติดตั้งจาวาโดยใช้ซอฟต์แวร์รอบต่อนาทีและผมอยากจะติดตั้งทั้งสองของพวกเขาภายใต้

ฉันดาวน์โหลดแพ็คเกจที่ต้องการจากไซต์ Oracle:

jdk-6u30-linux-x64-rpm.bin
jdk-7u2-linux-x64.rpm

และแตกแพ็กเกจ rpm จากภายใน.binไฟล์ที่รัน

./jdk-6u30-linux-x64-rpm.bin -x

รับสถานการณ์ต่อไปนี้:

jdk-6u30-linux-amd64.rpm
jdk-7u2-linux-x64.rpm

จากนั้นฉันก็มองเข้าไปข้างในjdk-6u30-linux-amd64.rpm ด้วย:

rpm -qpl ~/Downloads/jdk-7u2-linux-x64.rpm

และรับว่า java 6 จะติดตั้งไฟล์ลงใน:

/etc                   (some files)
/usr/java/jdk1.6.0\_30 (the majority of the files)

ในทำนองเดียวกัน java 7 จะติดตั้งลงใน:

/etc
/usr/java/jdk1.7.0\_02

เพราะผมต้องการที่จะติดตั้งลงใน/optฉันพยายามที่จะติดตั้งโดยใช้การย้ายรอบต่อนาที แพ็กเกจทั้งสองดูเหมือนว่าจะสามารถเปลี่ยนตำแหน่งได้รอบต่อนาทีจริง ๆ แล้ว:

rpm -qpi ~/Downloads/jdk-6u30-linux-amd64.rpm | grep -i reloc

ให้เป็นผล

Relocations : /usr/java

และ

rpm -qpi ~/Downloads/jdk-7u2-linux-x64.rpm | grep -i reloc

ให้เป็นผล

Relocations : /usr/java

พยายาม 1 (ติดตั้ง java 6 และจากนั้น java 7)

sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-6u30-linux-amd64.rpm

มันทำงานได้อย่างราบรื่นเกือบเพราะ rpm บอกว่า

ln: failed to create symbolic link '/usr/java/jdk1.6.0\_30': No such file or directory`

rpm -q jdk

กล่าวว่า

jdk-1.6.0\_30-fcs.x86\_64_ ... OK!

แล้วก็

sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-7u2-linux-x64.rpm

ล้มเหลวอย่างมากพูดว่า:

file /etc/init.d/jexec from install of
jdk-2000:1.7.0\_02-fcs.x86\_64*     conflicts with file from package
jdk-2000:1.6.0\_30-fcs.x86\_64*

พยายาม 2 (ติดตั้ง java 7 และจากนั้น java 6)

มีการติดตั้ง java 6 ฉันจะลบมันก่อน:

sudo rpm -e jdk*
sudo rpm -q jdk*

ให้:

package jdk is not installed* <- OK, uninstalled!

จากนั้นลองติดตั้ง java 7

sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-7u2-linux-x64.rpm*

ให้ข้อผิดพลาดปกติ:

ln: failed to create symbolic link '/usr/java/jdk1.7.0_02': No such file or directory`*

และตอนนี้ java 6

sudo rpm -i --relocate /usr/java=/opt/java ~/Downloads/jdk-6u30-linux-amd64.rpm*

ล้มเหลวในการพูดสองสิ่ง:

package jdk-2000:1.7.0\_02-fcs.x86\_64 (which is newer than jdk-2000:1.6.0\_30-fcs.x86\_64) is already installed*

และ

file /etc/init.d/jexec from install of jdk-2000:1.6.0\_30-fcs.x86\_64
conflicts with file from package jdk-2000:1.7.0\_02-fcs.x86\_64*

คำถามของฉันคือ:

  1. ปัญหาการสร้างลิงค์สัญลักษณ์: มีวิธีแก้ไขไหม กระบวนการติดตั้งดูเหมือนจะไม่ทราบว่าฉันพยายามใช้กลไกการย้ายแม้ว่าแพคเกจจะสามารถเปลี่ยนตำแหน่งได้ (เท่าที่ฉันเห็น)
  2. ฉันขาดอะไรบางอย่างในกระบวนการติดตั้ง เป็นไปได้หรือไม่ที่จะมีทั้ง java 6 และ java 7 บนเครื่องลีนุกซ์เดียวกัน? อย่างไร? ผมทำอะไรผิดหรือเปล่า?
  3. มีวิธีอื่นในการบรรลุเป้าหมายของฉันหรือไม่

PS: นี่เป็นคำถามแรกของฉันที่นี่ ฉันขอโทษล่วงหน้าหากมีสิ่งผิดปกติ (จากภาษาอังกฤษเป็นรูปแบบและอะไรก็ตาม) PS2: ฉันพยายามเพิ่มแท็กsun-java7-jdkให้กับคำถามนี้ แต่ฉันไม่มีชื่อเสียงพอที่จะทำ ... แท็กนี้ควรทำหรือไม่ ถูกสร้างขึ้น?

คำตอบ:


3

ฉันมีปัญหาคล้ายกันที่ทำให้ Oracle java และ OpenJDK อยู่เคียงข้างกันใน Fedora 16 ฉันทำตามคำแนะนำในIf Not True แล้ว Falseและมันทำงานได้อย่างสมบูรณ์


5
คุณสามารถสรุปบทความได้ที่นี่ เราต้องการให้คุณไม่เพียงแค่ลิงก์บทความที่นี่
Simon Sheehan

14

นี่เป็นวิธีที่ง่ายกว่าเมื่อคุณได้รับข้อผิดพลาดนี้:

package jdk.... (which is newer than jdk...) is already installed

ใช้การ--forceตั้งค่าสถานะเพื่อติดตั้งหลายรุ่น

ตัวอย่างเช่น:

sudo rpm -ivh --force jdk-6u35-linux-amd64.rpm

2

jdk-7u2-linux-x64.rpmใหม่กว่าjdk-6u30-linux-amd64.rpmและเครื่องมือการจัดการแพ็คเกจ RPM นั้นฉลาดพอที่จะเขียนทับมันด้วยรีลีสที่ใหม่กว่า

วิธีที่ง่ายที่สุดในการติดตั้ง sun java 6 และ sun java 7 แบบเคียงข้างกันคือการดาวน์โหลด Java tarballs จาก Oracle และแยกออกเป็น /opt


1

ฉันคิดว่า Dejan ถูกต้องเกี่ยวกับการติดตั้ง Java tarballs แทน RPM หากคุณตั้งค่าJAVA_HOMEและPATHใช้งานอย่างถูกต้องส่วนใหญ่จะไม่จำเป็นต้องมีการตั้งค่าเพิ่มเติมที่การติดตั้ง RPM มอบให้คุณ (ดูหน้านี้สำหรับรายละเอียดเกี่ยวกับสิ่งที่ jexec ใช้งานจริง )

ปัญหาหนึ่งที่อาจเป็นไปได้ว่าบางรุ่นของ JDK ไม่ทำให้ tarball (ที่*.tar.gz) ใช้ได้ แต่เพียงแค่ให้คุณและ*-rpm.bin *.binในกรณีนี้*.binไฟล์เป็นเพียงการแยกไฟล์เก็บถาวรของตัวเองซึ่งส่งผลให้ไดเร็กทอรี JAVA_HOME ปกติเมื่อคุณเรียกใช้


0

ในการติดตั้ง Java Runtime Environment บน Fedora, Oracle Linux, Red Hat Enterprise Linux ฯลฯ

# yum install java-1.7.0-openjdk

เพื่อรวมแพ็คเกจสำหรับการพัฒนาโปรแกรมโดยใช้ Java บน Fedora, Oracle Linux, Red Hat Enterprise Linux และอื่น ๆ

# yum install java-1.7.0-openjdk-devel

จากhttp://namhuy.net/1195/how-to-install-oracle-java-jdk-7.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.