2012-04-06 19 views
8

Tôi muốn cài đặt Typesafe Stack vào Ubuntu Server qua repo Deb của họ, nhưng không tải xuống tất cả các gói OpenJDK. Tôi đã cài đặt Oracle JDK 6 và trong PATH của tôi qua các lựa chọn thay thế cập nhật và cài đặt OpenJDK sẽ phá vỡ một số nội dung.Làm thế nào để sử dụng repo Typesafe Stack deb với Oracle Java 6 thay vì OpenJDK?

Cách tốt nhất để làm điều này là gì? Nó không xuất hiện mà tôi có thể sử dụng apt-get --no-cài đặt-khuyến cờ cho điều này:

$> sudo apt-get install --no-install-recommends typesafe-stack sbt 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
The following extra packages will be installed: 
    ca-certificates-java default-jre default-jre-headless g8 java-common libaccess-bridge-java libaccess-bridge-java-jni openjdk-6-jre 
    openjdk-6-jre-headless openjdk-6-jre-lib 
Suggested packages: 
    equivs icedtea-plugin sun-java6-fonts ttf-sazanami-gothic ttf-kochi-gothic ttf-sazanami-mincho ttf-kochi-mincho ttf-telugu-fonts ttf-oriya-fonts 
    ttf-kannada-fonts ttf-bengali-fonts 
Recommended packages: 
    icedtea-netx icedtea-6-jre-cacao icedtea-6-jre-jamvm 
The following NEW packages will be installed: 
    ca-certificates-java default-jre default-jre-headless g8 java-common libaccess-bridge-java libaccess-bridge-java-jni openjdk-6-jre 
    openjdk-6-jre-headless openjdk-6-jre-lib sbt typesafe-stack 
0 upgraded, 12 newly installed, 0 to remove and 7 not upgraded. 
Need to get 33.0 MB of archives. 
After this operation, 86.9 MB of additional disk space will be used. 
Do you want to continue [Y/n]? n 
Abort. 

PS - Tôi biết các thành phần typesafe Ngăn xếp làm việc với thiết lập hiện tại của tôi, vì tôi đã có nó được cài đặt và chạy tốt với trình cài đặt trước của họ.

+1

Tôi đang tìm cách loại bỏ OpenJDK 6 trong Ubuntu 11.10 vì tôi không bao giờ cần Java 6 (mọi thứ tôi cần làm tốt với Java 7) và thích Oracle JDK hơn OpenJDK, nhưng tất cả các gói phụ thuộc vào java trong tất cả repos kéo OpenJDK 6. Thật khó chịu nhưng tôi đã từ bỏ. – Ivan

+0

Tôi cuối cùng đã từ bỏ trên repo deb, và sử dụng [Universal cài đặt của họ ở dưới cùng của trang download của họ] (http://typesafe.com/stack/download) để thay thế. Giải nén tarball vào/opt/typesafe, thêm/opt/typesafe/bin vào ~/.profile PATH, giống với Oracle JDK 6, sau đó là gtg. – Kurtosis

+1

Đối với hậu thế, tôi sử dụng 'cập nhật thay thế' cho tất cả mọi thứ bây giờ, đây là kịch bản của tôi cho [Java] (https://github.com/byrongibson/scripts/tree/master/install/java), [Scala] (https: //github.com/byrongibson/scripts/tree/master/install/scala) và [Haskell] (https://github.com/byrongibson/scripts/tree/master/install/haskell). Xem Haskell readme để biết chi tiết. – Kurtosis

Trả lời

0

Câu hỏi cũ, đã được trả lời trong một thời gian dài bây giờ trong các ý kiến ​​của tôi theo OP của tôi, chỉ cần làm cho nó chính thức bây giờ. Trên các hệ thống dựa trên Debian chỉ sử dụng Debian Alternatives, hãy xem các kịch bản thiết lập trong các nhận xét của tôi ở trên. Thật tuyệt vời, chỉ hoạt động và cung cấp các lợi ích sau:

  1. Sử dụng phiên bản chính xác của Java/Scala/Haskell/etc bạn muốn, không có gì trong bản thử nghiệm Debian/Ubuntu/etc. Hữu ích khi phiên bản repo chậm phiên bản hiện tại hoặc ứng dụng của bạn yêu cầu phiên bản cụ thể của nền tảng khác với phiên bản repo.
  2. Nền tảng Haskell. Cài đặt nhiều phiên bản GHC và Haskell Platform cạnh nhau, nói trong/opt/haskell/ghc/[phiên bản] và/opt/haskell/platform/[phiên bản] và dễ dàng chuyển đổi giữa chúng với update-alternatives --config. Tương tự với Java, Scala, hoặc bất kỳ sdk/nền tảng khác.
  3. Nâng cấp lên phiên bản mới của GHC và Nền tảng Haskell (hoặc Java, Scala, v.v.) mà không ghi đè hoặc xóa trước đó. Nếu điều này gây ra các hồi quy trong ứng dụng của bạn, bạn có thể dễ dàng quay lại phiên bản hoạt động trước đó với một đơn giản update-alternatives --config.
  4. Giữ tất cả các tệp của GHC và Nền tảng Haskell cùng nhau ở một vị trí như/opt/haskell/ghc/[phiên bản] và/opt/haskell/platform/[version], thay vì trải rộng trên/usr/bin,/usr/lib và/usr/share như với cài đặt apt-get hoặc dpkg -i. Các tập tin được lưu giữ trong/opt/haskell/và thay thế cập nhật mềm liên kết chúng vào thư mục hệ thống của họ.
  5. Dễ dàng gỡ cài đặt với update-alternatives --remove-all (bao gồm tập lệnh) và rm -rf /opt/haskell.
  6. Chạy haskell qua hệ thống PATH thay vì PATH của người dùng (ví dụ: không cần thêm/opt/haskell/ghc/bin vào PATH của bạn trong .profile)
  7. Được sử dụng để sử dụng các lựa chọn thay thế cập nhật, đó là một công cụ tuyệt vời làm cho việc quản lý cài đặt theo cách thủ công, phần mềm đa phiên bản không gây đau đớn. Java, Scala và bất kỳ nền tảng nhị phân hoặc biên dịch nào khác đều hoạt động tốt với nó.
0

Tôi hiện đang xem các gói 'scala' và 'thư viện scala' tại kho lưu trữ 'vũ trụ' của Ubuntu, thay vì kho lưu trữ Typesafe. Các gói này phụ thuộc vào 'java6-runtime' (tôi chạy Ubuntu 12.10, 'Quantal'). Điều này có thể không phải là trường hợp cho các gói được tìm thấy tại kho lưu trữ Typesafe, nhưng nguyên tắc phải giống nhau.

Các equivs gói có thể được sử dụng để tạo ra một gói cuống giả (ví dụ Package: local-java-runtime) mà cách sai lầm để cung cấp các JRE không mong muốn (ví dụ .: Provides: java6-runtime). Bằng cách này bạn có thể tự cài đặt bất kỳ JRE hỗ trợ Scala nào bạn muốn, sau đó cài đặt gói gốc bạn đã tạo và apt-get install scala sẽ không còn phàn nàn nữa (gói gốc sẽ thỏa mãn sự phụ thuộc mà không cần APT kéo vào JRE).

Hãy xem here để đọc trên equivs và xem cách thực hiện.

BTW, ít nhất là bản phân phối Linux tôi đang chạy Tôi thấy rằng 'openjdk-7-jre' đã cung cấp 'java6-runtime', vì vậy có lẽ phụ thuộc 'java6-runtime' sẽ ít gây bất tiện hơn trong quá khứ.