2014-09-30 5 views
0

나는 Caprica's VLCJ Bindings을 이용하는 프로그램을 만들고 있습니다.실행중인 Java 프로그램에서 LibVLC를 설치하지 않았 으면 Linux Distro에게 apt-get install을 알리는 방법은 무엇입니까?

zip 파일에 VLC 라이브러리를 패키지로 묶어 적절히 사용자 컴퓨터에 출력 할 수 있기 때문에 Windows와 Mac에서 유용합니다. 나는 리눅스에 대해이 작업을 수행해야 할 때

문제

enter image description here

, 사랑의 신, 때문에 ELEVEN을가 온다. 개별적으로 컴파일 됨. 응용 프로그램/라이브러리.

그들 중 일부는 심지어 자신의 맛을 가지고 있습니다. 그것은 운영 체제의 Baskin Robins와 같습니다 (몇 가지가 있지만 실제로는 우분투 만 실행 했으므로 준비되지 않았습니다).

만약 내가 마조 슈스트 였다면 나는이 작품을 완전히 만들 수 있었고 엄청나게 많은 수의 zip 리눅스 라이브러리를 가진 거대한 병으로 끝낼 수 있었다. 그러나 나는 정말로 그렇게하고 싶지 않다.

그래서 내가 취해야 할 최선의 행동은 LibVLC가 설치되어 있는지 확인하는 것입니다. 그렇다면 직접 참조하고, 그렇지 않은 경우 런타임에 설치하십시오 (라이브러리가 시도하기 전에 자바 프로그램의 시작/설치시조차도, 스스로로드 할 수 있습니다.

이것이 가능합니까? 나는 우분투 터미널을 사용하여이

sudo apt-get install vlc 

에 비슷한 것이라고 알고 괜찮 것을, 아마 15 가지 맛이있다, 그 다룰 수 있지만, 할 수 있다는 것을에서 내 Java 응용 프로그램을 실행하고 (계속 진행하기 전에 끝날 때까지 기다리십시오), 그렇다면 어떻게 수행 할 수 있습니까? 그렇지 않다면 어떻게 움직일 수 있습니까?

+0

이 게시물은 당신이 찾고있는 것 같아요 : http://stackoverflow.com/questions/3403226/how-to-run-linux-commands-in-java-code – Maux

+0

나는 몇 가지를 보았다. 그렇다면 나의 다음 질문은 리눅스의 현재의 맛에 VLC가 설치되어 있는지 어떻게 결정할 것인가? 던져진 예외를 처리해야만합니까? – Will

+1

은 자동 설치 프로그램에서 다루지 않는 종류의 것으로 보입니다. 모든 리눅스 배포판을 정말로 지원해야합니까? – Leo

답변

2

LibVLC가 이미 설치되어 있는지 여부를 확인하려면 단순히 Java 파일 IO를 사용하여 파일 시스템을 검색하여 순수한 Java에서이를 수행 할 수 있습니다. 아이디어는 "/ usr/lib"및/또는 "잘 알려진"위치에서 "libvlc.so. *"를 찾을 것입니다.

boolean foundLibVLC = new NativeDiscovery().discover(); 

당신은 자바 독 here을 찾을 수 있습니다

vlcj 당신을 위해이 작업을 수행하는 NativeDiscovery 클래스를 제공합니다.

그런 다음 패키지 관리자를 사용하여 vlc를 설치하라는 대화 상자를 표시 할 수 있습니다.

Java 파일 IO를 사용하여 "/ etc/issue"를 읽고 OS를 감지 할 수 있으며 우분투 인 경우 "apt-get install"을 실행하는 프로세스를 시작하거나 다른 패키지 관리자를 실행할 수 있습니다 배포판. 이전에 이런 종류의 작업을 수행하기 위해 Apache Commons-Exec을 사용했습니다.

다른 배포판에서 사용할 수있는 범용 패키지 관리자는 없습니다.

나는 그것이 이상하지 않다는 것을 알고있다. 그러나 이것이 내 프로젝트를 위해하는 일이다.

Linux에서 사용자를 타겟팅하는 경우 기술적으로 정통한 사용자를 대부분 타겟팅하는 경향이 있으며 다른 소프트웨어를 설치하는 데 문제가 없을 것입니다.

또 다른 옵션은 VLC 소스 코드를 프로젝트와 함께 제공하고 설치 프로그램에서 VLC를 빌드하는 것입니다. 처음부터 VLC를 빌드하는 데는 시간이 걸리고, 먼저 설치해야하는 제 3 자 라이브러리 의존성이 많이 있습니다.

Linux에서 '올바른'일은 배포 패키지 (예 : .deb 또는 .rpm 등)를 작성하고 VLC, Java 및 JNA에 대한 종속성을 선언하고 그렇게하는 것입니다.

+0

그건 합리적으로 보입니다. VLC는 항상 Linux의 동일한 디렉토리에 저장됩니까? 아니면 NativeDiscovery 메소드를 통해 같은 방법으로 해당 디렉토리가있는 디렉토리를 찾으십니까? – Will

+0

NativeDiscovery를 사용하는 경우 실제 디렉토리를 알아야하는 이유가 확실하지 않습니다. 어쨌든 "/ usr/lib"또는 "/ usr/local/lib"를 직접 검색하는 것은 그리 어렵지 않습니다. – caprica