วิธีถอนการติดตั้ง OpenJDK


38

ฉันไม่ต้องการOpenJDKติดตั้งบนระบบ Ubuntu 13.04 ของฉัน แต่พยายามที่จะถอนการติดตั้งให้openjdk-7-jreผลข้อความต่อไปนี้:

$ sudo apt-get purge openjdk-7-jre
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  gcj-4.7-base gcj-4.7-jre gcj-4.7-jre-headless gcj-4.7-jre-lib gcj-jre gcj-jre-headless icedtea-6-jre-cacao icedtea-6-jre-jamvm libgcj-common libgcj13 libgcj13-awt
  openjdk-6-jre-headless openjdk-6-jre-lib
Suggested packages:
  fastjar gcj-4.7-jdk gcj-jdk libgcj13-dbg sun-java6-fonts fonts-ipafont-gothic fonts-ipafont-mincho ttf-telugu-fonts ttf-oriya-fonts ttf-kannada-fonts
  ttf-bengali-fonts
The following packages will be REMOVED:
  default-jre* icedtea-7-plugin* icedtea-netx* icedtea-plugin* libatk-wrapper-java* libatk-wrapper-java-jni* openjdk-7-jre*
The following NEW packages will be installed:
  gcj-4.7-base gcj-4.7-jre gcj-4.7-jre-headless gcj-4.7-jre-lib gcj-jre gcj-jre-headless icedtea-6-jre-cacao icedtea-6-jre-jamvm libgcj-common libgcj13 libgcj13-awt
  openjdk-6-jre-headless openjdk-6-jre-lib
0 upgraded, 13 newly installed, 7 to remove and 4 not upgraded.
Need to get 57,0 MB/57,2 MB of archives.
After this operation, 156 MB of additional disk space will be used.
Do you want to continue [Y/n]?

ฉันจะทำอะไรต้องทำเพื่อให้ไม่มีแพคเกจใหม่ที่ฉันจำเป็นต้องใครจะถูกติดตั้งเมื่อถอดopenjdk-7?


คำตอบ:


29

คุณสามารถใช้คำสั่งต่อไปนี้:

sudo apt-get purge openjdk-8-jre openjdk-8-jre-headless openjdk-7-jre gcj-4.7-base gcj-4.7-jre openjdk-6-jre-headless

ด้วยวิธีนี้จะไม่มีการติดตั้งแพ็คเกจใหม่ นี่คือผลลัพธ์ของฉันสำหรับคำสั่งด้านบน:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'gcj-4.7-base' is not installed, so not removed
Package 'gcj-4.7-jre' is not installed, so not removed
Package 'openjdk-6-jre-headless' is not installed, so not removed
The following packages will be REMOVED:
  default-jre* icedtea-7-plugin* icedtea-netx* libatk-wrapper-java*
  libatk-wrapper-java-jni* libreoffice-base* minecraft-installer*
  openjdk-7-jre*
0 upgraded, 0 newly installed, 8 to remove and 6 not upgraded.
After this operation, 10,3 MB disk space will be freed.
Do you want to continue [Y/n]? n

แต่ฉันไม่แนะนำให้คุณทำเช่นนี้ ในหนึ่งวันคุณจะต้องแน่ใจว่า OpenJDK (6 หรือ 7)


4
ถ้าฉันต้องการ JDK จริงๆฉันต้องการใช้ JDK ของ Oracle แทน OpenJDK
Fynn

สิ่งนี้ไม่ได้ผลสำหรับฉัน
jgomo3

@ radu-rdeanu เพื่อทำสิ่งนี้ฉันต้องติดตั้ง gcj ก่อน เมื่อฉันลองวิธีแก้ปัญหาของคุณแล้วก็บ่นว่า gcj ไม่ได้ติดตั้ง ฉันติดตั้ง gcj และลบแพ็คเกจทั้งหมดที่คุณพูด แต่หลังจากนั้นคำสั่ง java ยังคงอยู่ที่นั่น ดังนั้นฉันต้องมีสภาพแวดล้อมแบบใช้สาย
jgomo3

@ jgomo3 อย่างที่คุณเห็นจากผลลัพธ์ของฉันสิ่งนี้ไม่ได้เกิดขึ้นกับฉัน เกี่ยวกับสิ่งที่รุ่นของgcjคุณพูด?
Radu Rădeanu

66

คำถามที่ดีฉันสงสัยตัวเองนี้

ฉันพบว่าคุณสามารถใช้สิ่งต่อไปนี้เพื่อลบ openjdk-7-jre บน Ubuntu 13.04:

sudo apt-get autoremove openjdk-7-jre

กด 'y' จากนั้นกด Enter เมื่อได้รับแจ้งเพื่อยืนยันการเปลี่ยนแปลงนี้ สิ่งนี้ควรล้างไลบรารีการพึ่งพาเพิ่มเติมทั้งหมดที่ติดตั้งไว้ด้วย

ฉันยังพบว่าคุณสามารถใช้คำสั่งต่อไปนี้เพื่อทำการล้างข้อมูลเพิ่มเติม:

sudo apt-get purge openjdk*

หากคุณใช้คำสั่งต่อไปนี้:

java -version

คุณไม่ควรเห็น openjdk-7-jre ติดตั้งอีกต่อไป!

หวังว่านี่จะช่วยได้ :)


2
@ jgomo3 คำตอบนี้ช่วยคุณได้หรือไม่? โดยเฉพาะอย่างยิ่งsudo apt-get remove --purge openjdk*บิต?
landroni

1
@landroni ฉันต้องทดสอบมัน เพื่อที่จะแก้ปัญหา radu-rdeanu ฉันต้องติดตั้ง gcj ก่อน วิธีที่ฉันสามารถ "ลบ" มัน ฉันจะลองใช้วิธีนี้ในการถอนการติดตั้ง Oracle Java อันดับที่สองติดตั้ง openjdk และอื่น ๆ และ "autoremoving" ครั้งสุดท้าย
jgomo3

แจ้งให้เราทราบว่าคุณจะขึ้นได้อย่างไรจำไว้ว่าคุณกำลังใช้งานอยู่autoremoveคุณต้องระบุรุ่นที่ถูกต้องของ openjdk คุณอาจใช้งาน openjdk-6-jre นอกจากนี้ยังเป็นที่น่าสังเกตว่าหากคุณใช้งาน openjdk หลายเวอร์ชันpurgeคำสั่งจะลบการติดตามทั้งหมดของพวกเขาดังนั้นโปรดใช้ความระมัดระวังโดยขึ้นอยู่กับสิ่งที่คุณต้องการจะทำ
Raouf Aghrout

2
sudo apt-get purge openjdk*ใช้งานได้สำหรับฉัน แต่มันยังถอนการติดตั้งการติดตั้ง Jenkins ของฉัน (ซึ่งขึ้นอยู่กับแพ็คเกจ openjdk 7) :(
RobertG

1
ตัวเลือกแรกลบออก 7 แต่ติดตั้ง 6 ตัวที่สองทำงาน: sudo apt-get purge openjdk *
Pablo Pazos

4

ทำไมสิ่งนี้เกิดขึ้น

สิ่งนี้อาจเกิดขึ้นเนื่องจากแพ็คเกจอื่นในระบบของคุณขึ้นอยู่กับ Java ขณะลบopenjdk-7-jreโปรดapt-getดูว่าหากถอนการติดตั้ง OpenJDK บางแพ็คเกจจะมีการพึ่งพาแบบไม่แน่นอน เพื่อแก้ปัญหานี้จะติดตั้งแพคเกจอื่นซึ่งให้ Java

หากต้องการค้นหาสาเหตุที่ทำให้เกิดปัญหานี้ให้รันคำสั่งเหล่านี้ในเทอร์มินัล:

packages=(default-jre default-jre-headless icedtea-6-plugin icedtea-7-plugin java-compiler java-jdk java-runtime java-runtime-headless java-sdk java-virtual-machine java2-jdk java2-runtime java2-runtime-headless java2-sdk java5-jdk java5-runtime java5-runtime-headless java5-sdk java6-jdk java6-runtime java6-runtime-headless java6-sdk java7-jdk java7-runtime java7-runtime-headless java7-sdk openjdk-6-jdk openjdk-6-jre openjdk-6-jre-headless openjdk-7-jdk openjdk-7-jre openjdk-7-jre-headless oracle-java7-bin oracle-java7-fonts oracle-java7-jdk oracle-java7-jre oracle-java7-plugin sun-java6-bin sun-java6-fonts sun-java6-jdk sun-java6-jre sun-java6-plugin)
for pkg in "${packages[@]}"; do
    apt_cache_out="$(apt-cache --installed rdepends "$pkg" | grep -E '^ [| ]\S')"
    if (( $? == 0 )); then
        echo -----------------------
        echo "$pkg"
        echo "$apt_cache_out"
    fi
done

ตัวอย่างเอาต์พุต (ย่อ):

-----------------------
openjdk-7-jre
 |libreoffice-filter-mobiledev
 |libreoffice
 |libreoffice-writer
 |libreoffice-base
 |libreoffice-filter-mobiledev
 |libreoffice
 |libreoffice-writer
 |libreoffice-base

นี้แสดงให้เห็นว่าทุกแพคเกจ LibreOffice openjdk-7-jreจะขึ้นอยู่กับ ตราบใดที่มีการติดตั้งแพ็คเกจเหล่านี้ OpenJDK จะไม่สามารถถอนการติดตั้งโดยไม่ต้องติดตั้ง Java สำรองโดยอัตโนมัติ

เพื่อลบ openjdk-7-jre

หากคุณต้องการลบopenjdk-7-jre(โดยไม่ต้องติดตั้งแพ็คเกจอื่น) คุณจะต้องถอนการติดตั้งแพ็กเกจทั้งหมดซึ่งขึ้นอยู่กับมันก่อน

จากเอาต์พุตตัวอย่างนั่นคือ:

sudo apt-get remove oracle-java7-installer libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base

3

ฉันสังเกตว่าคุณบอกว่าคุณต้องการใช้ JDK ของ Oracle หากคุณต้องการติดตั้ง JDK ของ Oracle แทนคุณสามารถดาวน์โหลดและแตกไฟล์ในตำแหน่งที่คุณต้องการ

จากนั้นคุณเพียงใช้ตัวเลือกอัปเดตเพื่อบอกระบบของคุณว่าติดตั้ง Java ไว้ หากคุณไม่แน่ใจเกี่ยวกับไวยากรณ์ของการปรับปรุงทางเลือกคุณสามารถใช้ส่วนหน้าของมัน galternatives

ตัวอย่างเช่น ... ฉันใช้ JDK ของ Oracle ค่อนข้างที่นี่

ฉันแยกมันเป็น / opt / java /

จากนั้นดังนั้นไบนารีของ Oracle Java ทั้งหมดเป็นสาธารณูปโภคหลักสำหรับสิ่งที่เกี่ยวข้องกับ Java ฉันทำต่อไปนี้ด้วยทางเลือกปรับปรุง:

for j in `ls /opt/java/bin` ; do update-alternatives --install /usr/bin/"$j" "$j" /opt/java/bin/"$j" 1 ; done

สิ่งนี้ใช้ยูทิลิตี Oracle Java ทั้งหมดที่คุณแตกก่อนหน้านี้และให้ลำดับความสำคัญอันดับแรกในกรณีที่คุณติดตั้ง Java เวอร์ชันอื่น (เนื่องจาก Ubuntu อนุญาตให้คุณติดตั้งยูทิลิตี้เดียวกันหลายรุ่น)


1

นอกเหนือจากคำตอบที่เหลือ - คุณได้ตรวจสอบ.bashrcไฟล์ของคุณเพื่อให้แน่ใจว่าสภาพแวดล้อม JAVA_HOME ไม่ได้อยู่ที่นั่นหรือไม่? การลบบรรทัดนั้นควรทำเคล็ดลับในการเพิ่ม Ubuntu ของคุณจาก openjdk เหมือนตัวอย่าง:

 JAVA_HOME=/usr/local/java/jdk1.7.0_45
 export PATH=$JAVA_HOME:$PATH

หากคุณเห็นอะไรเช่นนั้นให้ลบสองบรรทัดนี้แล้วรีบูต


0

หากต้องการถอนการติดตั้ง OpenJDK คุณต้องเรียกใช้คำสั่งเหล่านี้ในเทอร์มินัลของคุณ ctrlคุณจะได้รับขั้วโดยใช้ปุ่มเหล่านี้ shift+ enter+

ลบ Openjdk เท่านั้น:

$ sudo apt-get remove openjdk*

ลบ Openjdk พร้อมกับการอ้างอิง:

$ sudo apt-get remove --auto-remove openjdk*

ลบ Openjdk และเป็นไฟล์กำหนดค่า:

$ sudo apt-get purge openjdk*

ลบ Openjdk พร้อมกับการพึ่งพาและเป็นไฟล์กำหนดค่า:

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