Ubuntu 휴대용 실행 파일과 동일

Ubuntu 휴대용 실행 파일과 동일

저는 종속성이 있는 응용 프로그램을 개발 중이며 이를 위해 외부 도구를 사용합니다. 한 가지 예는 Java 프로그램에서 telnet/ssh 원격 시스템에 putty의 명령줄 도구 plink.exe를 사용하는 것입니다.

이제 우분투로 전환하면 동일한 작업을 수행하는 유틸리티 sshpass가 있습니다. 이제 문제는 sshpass가 아직 설치되지 않았으며 설치되기 전에 내 프로그램이 작동하지 않는다는 것입니다.

Windows에 뭔가가 없으면 내 프로그램(예: plink.exe)에 이식 가능한 실행 파일을 패키지하고 런타임에 이를 사용하여 작업을 수행할 수 있습니다. 이제 우분투에서 비슷한 작업을 수행하기 위해 인수를 사용하여 간단히 호출할 수 있는 파일과 같은 .exe를 패키지하는 방법이 있는지 알고 싶습니다.

기본적으로 나는 파일을 설치하지 않고도 우분투에서 파일을 실행할 수 있는지 알고 싶습니다 ?? 그렇다면 어떻게 가능합니까??

답변1

Windows에서와 마찬가지로 Linux에서도 정적 파일로 연결된 모든 종속성을 사용하여 모든 프로그램을 컴파일할 수 있습니다. 그러나 Linux에서는 이것이 일반적인 작업 방식이 아니라는 차이점이 있습니다.

Linux 방식은 각 프로그램을 한 번만 설치하는 것입니다. shhpass를 사용해야 하는 경우 소프트웨어와 함께 번들로 묶어서는 안 되지만 설치 패키지(예: Ubuntu의 경우 deb 파일)에 종속성으로 나열해야 합니다. 패키지 관리는 프로그램을 설치할 때 가져오고 설치합니다.

이러한 동작에는 효율성(공유 메모리 사용)부터 보안(번들 프로그램에 보안 버그가 포함될 수 있음)에 이르기까지 몇 가지 이유가 있습니다. 이 접근 방식에는 모두 단점이 있습니다. 주로 소프트웨어를 설치하기 위한 중앙 집중식 장소가 필요하다는 것입니다. 그러나 대답의 중요한 점은 상황이 아니라 상황이 어떠냐는 것입니다.

짧은 대답은 '예, 할 수 있습니다'입니다., 하지만 어려울 것입니다. 당신은 유닉스 계열 OS의 문화와 디자인에 맞서 싸우게 될 것입니다. 번들하려는 모든 프로그램의 자체 버전을 컴파일해야 할 가능성이 높으며 대부분의 패키저와 사용자는 이를 좋아하지 않을 것입니다.

답변2

Ubuntu의 관용적 접근 방식은 원시 프로그램이 아니라 프로그램을 포함하고 종속성 목록도 포함하는 .deb 패키지를 제공하는 것입니다. 그런 다음 패키지를 설치하면 누락된 종속성이 자동으로 설치됩니다(표준 소스에서 사용할 수 있다고 가정).

일부 문서가 있습니다.여기패키지 생성에 대해

Windows 기반(및 다소 OSX 기반) 접근 방식에 가까운 대안은 정적으로 연결된 모든 종속성 빌드를 앱과 함께 묶은 다음 이를 실행하는 임시 디렉터리에 압축을 푸는 것입니다. 다음과 같은 도구를 사용할 수 있습니다.스스로이를 수행하려면 필요한 모든 실행 파일과 jar 및 적절한 시작 스크립트를 디렉토리에 넣으면 나머지 작업이 수행됩니다.

답변3

Linux에서는 권한이 있는 한 모든 파일을 실행할 수 있습니다. Java 프로그램에서 함께 패키지한 .exe 파일을 호출할 수 있습니다.

하지만 .exe 파일이 Linux에서 실행 가능한지 확인해야 할 수도 있습니다. 대부분은 아니지만 일부 .exe는 하나의 운영 체제에만 적용됩니다. 예를 들어, Putty 웹사이트에서는 실행 파일로 컴파일해야 하는 Unix용 소스 코드만 제공합니다(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html). Windows의 경우 실행 파일이 이미 컴파일되었지만 linux/unix에서는 실행되지 않을 수 있습니다.

관련 정보