Linux에 tar.gz 파일을 실제로 설치하는 방법-수동으로 설치 한 (또는 독립형) 응용 프로그램을 관리하는 방법은 무엇입니까?


12

패키지와 .deb를 설명하는 이러한 모든 링크를 볼 수 있습니다 ... 알고 있습니다 ... tar.gz 파일을 작동시키는 많은 kludges가 있습니다 (예 : Java의 업데이트 대안 또는 / usr / local /에 수동으로 파일 삭제) 빈 (또는 검색 시간에서 추론 한 다른 곳)). 패키지가 너무 똑똑하다면 패키지 나 .debs / rpms에서 사용할 수있는 Linux 응용 프로그램이 얼마나 적습니까?

나는 새로운 사용자로 말하고 있습니다. 전문가가 더 잘 알고 있다는 것을 알고 있습니다 (컴파일 가능한 Eclipse 버전을 다운로드 할 수 있다고 생각합니까?). netbeans 및 chrome are와 같이 .sheclipse는 실행 가능한 일반 디렉토리이며 Java는이 update-alternatives비즈니스 가 필요 하지만 Ubuntu / Debian의 "프로그램 목록"(명령으로 등록) 등에 등록하지는 않습니다. 때로는 저장소에서 사용할 수 있지만 다운로드 페이지에 적절한 설명이없는 이유가 혼란 스럽습니다.)

간단히 말해 : tar.gz 파일을 다운로드하거나 컴파일하는 경우 시스템에 어떻게 등록합니까? update-alternatives우분투에서는 명령으로 등록하는 것으로 보이지만 검색 창에 표시되지 않습니다. 데비안에서는 그놈 2 실행기에 바로 가기를 수동으로 추가 할 수 있습니다. 하지만 내가 실제로 무엇을해야합니까?


편집하다:

따라서 새로운 솔루션으로 조금 더 놀아 본 후 "문제"를 좀 더 세분화 할 수 있습니다.

수동으로 설치 한 프로그램을 어떻게 관리해야합니까? Firefox와 Eclipse는 지금까지 유일한 예입니다 (많은 것을 다운로드하지는 않습니다). 둘 다 상자를 모두 뺄 수 있습니다. 제외하고, 어디에 설치해야합니까? Eclipse에 자체 지침이 있지만 모든 "수동 패키지"를 동일한 방식으로 수행하고 싶습니다.

  1. 약간의 연구 끝에, 나는이 프로그램들을에 넣기로 결정했습니다 /usr/local/bin.
  2. 에서 일식을 설치하는 방법 , 내가 런처에 표시하기 위해 뭔가를 얻을 생각, 나는 둘 필요가 xxx.desktop에서 파일을 ~/.local/share/applications/. 이 .desktop 파일의 이름이 중요합니까?
  3. autotools가있는 물건 ( configure또는 unix/configure파일을 찾습니다 )이 잘 작동합니다. CheckInstall이 모든 것들을 추적하기 위해 사용해야 할 몇 가지 연구 포인트 .
  4. update-alternatives경로를 등록 하는 데 사용해야 합니다. 이로부터 자바 스레드 나는에서 링크 생성처럼, 그것은 외모 /usr/bin/java에를 /usr/lib/jvm/jdk.... Eclipse 또는 Firefox와 같은 "독립형"애플리케이션을 설치할 때 항상 링크해야 /usr/bin/[app]합니까? 그리고 어설 션 1이 참이면 다음과 같은 일을 할 것입니다.sudo update-alternatives --install "/usr/bin/[app]" "[app]" "/usr/local/bin/[app]" 1

이 지침이 정확하고 수동 설치를 관리하는 좋은 방법입니까? 따라야 할 다른 단계가 있습니까? 다른 제안?


1
*.deb대신 패키지 를 찾지 않는 이유는 무엇 입니까?
m0nhawk

@ m0nhawk 항상 .deb 파일을 찾을 수 없습니까? 이클립스 다운로드 페이지에서와 마찬가지로 단지 tar.gz입니다. 내가 완전히
빠지지

1
이클립스에는 데비안 패키지 ( 우분투 용 ) 가 분명히있다 . 그리고 *.tar.gz소프트웨어 를 처리하는 가장 좋은 방법 은 다음 *.rpm*.deb같은 적절한 패키지를 만드는 것입니다 .
m0nhawk

1
.desktop메뉴에 표시 할 파일 이 필요 합니다. update-alternatives당신의 우선 순위를 정하기 위해서만 작동합니다 PATH.
tripleee

1
귀하의 질문은 여전히 ​​"______에 새 소프트웨어를 등록하려면 어떻게해야합니까"에 관한 것입니다. 여기서 _____는 일반적인 데스크탑 환경이며 "WRT linux를 어떻게해야합니까"가 아닙니다. 또한 $ PATH 환경 변수에 대한 암시 적 무지?
goldilocks

답변:


15

패키지 저장소에서 많은 앱을 사용할 수없는 이유는 무엇입니까?

여러 가지 이유가있을 수 있습니다.

단 하나의 이유가 없습니다. 배포판의 패키지 관리자에서 좋아하는 앱을 보려면 각 사례를 개별적으로 처리해야합니다. 개발자 (예 : IRC 채널 또는 메일 링리스트)와 연락하고 포장을 도울 수있는 방법을 물어보십시오.

타르볼을 설치하는 방법?

tarball (.tar.gz 패키지)은 무엇이든 포함 할 수 있습니다. 실제로 열 때까지 설치 방법을 가정 할 방법이 없습니다. 다시, 각 패키지는 다르게 접근해야합니다.

설명서를 찾으십시오! (반) 괜찮은 패키지는 응용 프로그램 설치 방법에 대한 지침을 제공합니다. 첫 번째 반사는 항상 README, INSTALL 또는 이와 유사한 텍스트 파일을 찾아야합니다. 게시자의 웹 사이트를 확인하면 도움이 될 수 있습니다.

모든 패키지가 다르기 때문에 세계의 모든 타르볼을 처리하는 보편적 인 방법은 없습니다. 그것은 세상의 모든 재료에 작용하는 레시피를 요구하는 것과 같습니다. 일어나지 않습니다.

시스템, 배포판 및 데스크탑 환경에 대한 충분한 지식이 도움이되므로 안심할 수 있다면 Linux 세계에서 시간을 보내면서 상황이 더욱 예측 가능해 보일 것입니다.

특별한 경우 : Autotools

프로젝트가 커짐에 따라 소스 코드에서 바이너리를 시스템의 전체 설치로 전환하는 쉬운 방법을 제공해야합니다. 그렇기 때문에 필요한 빌드 스크립트가 내장 된 빌드 시스템과 함께 제공됩니다.

Linux / Open Source / Free Software 세계에서 하나의 빌드 시스템 이보다 광범위하게 채택되었습니다 : GNU Autotools . (n open) 소스 패키지를 다루는 경우 Autotools를 사용할 확률이 높습니다.

가장 간단한 경우 autotools로 패키지 된 앱을 설치하는 방법은 다음과 같습니다.

  • ./configure: 시스템에 해당하는 Makefile을 생성하는 스크립트입니다 (종종 종속성의 가용성을 확인하는 경우도 있음).
  • make: 앞서 생성 된 Makefile에 따라 소스 코드를 컴파일합니다.
  • make install: 바이너리를 적절한 위치에 복사하고 심볼릭 링크 및 개발자가 정의한 다른 단계를 만듭니다.

노트

  • configure스크립트에는 일반적으로 사용할 컴파일러 또는 대상 디렉토리를 정의하는 방법과 같은 많은 옵션이 있습니다. 유연성이 필요한 경우을 살펴볼 가치가 ./configure --help있습니다.
  • Autotools라고 확신하고 실제로 잘 알고 있더라도 항상 문서 (README, INSTALL, ...)를 읽는 것으로 시작하십시오.

질문의 업데이트에 대한 답변

당신이 요구하는 것은 명확한 대답이 없습니다. 여기에있는 모든 사람이 "좋은 습관"을 구성하는 것에 대한 의견을 가지고있을 수 있지만, 하루가 끝날 때 당신은 자신에게 맞는 것을 찾을 수 있습니다 . 쉬운 답변이 있다면 질문을하지 않을 것입니다. 당신의 배포판이 당신을 위해 대답했을 것입니다.

이것은 몇 가지 개인적인 말이 있습니다.

  • 내 시스템에서는 /usr/local/bin패키지 관리자가 설치 한 패키지를 예약 합니다. 내가 직접 컴파일 / 설치하는 모든 것이 들어갑니다 /opt. 이것은 세부 사항이지만 동일한 프로그램의 여러 버전을 다룰 때 큰 두통을 피하는 데 도움이됩니다.

  • xxx.desktop, GUI 문제는 일반적으로 사용중인 데스크톱 환경에 따라 다릅니다. 그것이 당신의 시스템에 효과적이라면, 좋습니다. 그러나 유닉스에서 사용 가능한 모든 환경으로 일반화 할 수는 없습니다.

  • /usr/local/bin이미 PATH 에 있다는 이점이 있습니다 . /opt내가 제안한 것처럼 다른 디렉토리를 사용하려면 PATH에 포함시켜야합니다. 방법을 모르는 경우 터미널을 열고 터미널에서 다음을 실행하십시오 (가장 좋은 방법은 아니지만 시스템에 대한 지식이 없으면 다른 것을 제안 할 수 없습니다).echo 'export PATH=$PATH:/opt' >> ~/.bashrc


자세한 답변 감사합니다. 나는 읽어보기를 보았지만 매번 다른 것을하고 싶지 않다고 결정했다. 더 많은 연구, 시도 및 좌절 후, 나는 더 구체적인 질문 / 사양을 생각해 냈습니다-업데이트 된 게시물을보십시오.
Raekye

천만에요. :) 나는 당신의 업데이트를 해결하기 위해 답변을 편집했습니다. 할 일을하는 "진정한 방법"은 없습니다 ( emacs사용자 인 경우 제외 ). 시간이 지남에 따라 각기 다른 접근법의 이점과 단점을 배우려면 시행 착오를 거쳐야합니다.
rahmu

업데이트 해 주셔서 감사합니다! 확실히 그렇습니다. 나는 xxx.desktop일반적으로 그놈에서 작동한다고 생각 합니다. update-alternatives경로를 설정하는 데 사용 하는 것에 대해 무엇을 알고 있습니까?
Raekye

1
내가 아는 한, 여러 브라우저 또는 편집기를 사용하는 것과 같은 일반적인 소프트웨어를 다루는 데비안 고유의 방법입니다. (우분투와 민트는 데비안을 기반으로하며 이것을 상속했습니다). 관심이
있으시면

좋은 대답입니다. 종종 필요한 (또는 적어도 선호되는) 한 가지는 sudo make install을 마지막 단계 (신뢰할 수있는 패키지)로 설치하는 것입니다. 그러면 프로세스가 사용자가 소유하지 않은 시스템 디렉토리 (/ usr / bin 등)에 항목을 넣는 데 필요한 권한을 부여합니다.
Joe

8

나는 당신이 당신이 그것을 "등록"하고 싶은 자신과 명확히 생각 과 함께 .

설득력 있고 똑똑하지 않으려 고 노력하는 것은 "리눅스"는 물론 커널이며 커널은 시스템의 사용자 공간 소프트웨어에 대해 전혀 모르거나 관심을 갖고 있지 않습니다. 여기서 우리는 무엇에 대해 이야기하고 있습니까?

여러 가지 다른 배포판을 언급했습니다. 저장소에서 사용할 수 있지만 소스에서 소프트웨어를 빌드하는 경우가 있습니다. 배포판 바이너리에 설정되지 않은 구성 옵션 세트가 필요하기 때문입니다. 내가 가지고있는 유일한 문제는 패키지가 다른 것의 전제 조건 인 경우 실수로 배포 한 패키지를 배포 한 패키지 위에 실수로 설치하지 않도록 포장 시스템 에 이를 등록해야한다는 것입니다. fedora / rpm 기반 시스템에서는이 작업이 수행됩니다 rpm -i --justdb <package>. 데비안 / apt 기반 시스템에서는이 작업을 수행하지 않습니다. 대신 필요에 따라 강제로 설치를 강제 실행합니다. 게으른 경우가 있습니다 . 더 좋은 방법이있는 것 같습니다., 어떤 전제 조건을 충족시키는 척하는 더미 패키지를 만들어서 이것은 m0nhawk의 .tar.gz 소스에서 패키지를 실제로 만들 겠다는 제안과 비슷합니다. 정말 간단합니다 (정직하고 m0nhawk의 제안과 전혀 다르지 않습니다).

패키징 시스템과 다른 문제가있는 것 같습니다. 데스크탑 환경 (예 : Gnome)을 언급했지만 그 내용이 무엇인지 명확하지 않습니다. 이것들은 이질적이므로 "리눅스에서 어떻게합니까?"라는 질문에 대한 답은 없습니다. "우분투에서 어떻게해야합니까"또는 "어떻게합니까? gentoo "-"그놈 데스크탑에서 어떻게해야합니까? "또는"XFCE 데스크탑에서 어떻게해야합니까? "등의 질문입니다. 제 생각에 언급 한 발사기 문제는 제가 언급 한 유일한 문제입니다 모든 DE 가이 작업을 수행하는 간단한 수단을 제공한다고 생각하고 싶습니다 (그러나 서로 다르기 때문에 정확히 동일하지는 않습니다).

그런 다음 init 시스템에 의해 관리되는 서비스가 있습니다 (예 : systemd 또는 upstart). 따라서이 질문은 실제로 다음과 관련된 일련의 관련 질문입니다.

  • 포장 시스템, 예. apt 또는 yum
  • 초기화 시스템 (예 : systemd 또는 upstart)
  • 데스크톱 환경 (예 : kde 또는 unity)
  • 파일 탐색기 (예 : 노틸러스 또는 konqueror)
  • ?????

하나의 간단한 통합 솔루션이 없을 수있는 이유 중 하나는 ( XDG 표준 그러한 일부를 제공 할 수도 있지만 ) "linux"는 하나의 간단한 통합 운영 체제가 아니기 때문에 대다수의 사용자가 그렇게 선호한다고 생각합니다. 나는 종종 DE를 전혀 사용하지 않으며 함께 제공되는 파일 브라우저 등을 사용하지 않습니다.

다시 한 번 말하지만, 문제를 해결하려는 것이 아니라 실제로 이것에 도움을 주려고 노력하고 있습니다. 여기서 해결하려는 문제가 있다면, 그 문제가 무엇인지, 실제로 어떤 소프트웨어가 문제인지를 더 정확하게 고려해야합니다 ( "리눅스 말고" ") 문제를 해결하려면


"distro 바이너리에서"<-/ me는 소스 기반 배포판에 대해 무언가를
중얼 거린다

또한 XDG 표준의 문제는 아마도 일부 업스트림은 전혀 신경 쓰지 않으며 배포판 개발자는 .desktop파일을 제공하는 개발자이며 이러한 종류의 작업에는 필요합니다.
njsg 2013

업스트림 개발자가 그것에 관심을 가져야하는지 모르겠습니다. 경우는 최종 사용자에게 사용할 수 있기 때문에 그냥 XDG 언급 당신이 그것을 사용하려고합니다. 이기종의 가격은 OSX와 같이 사용자가 갖고 있지 않은 책임을 부담해야한다는 것입니다. 일부 리눅스 배포판은 다른 것보다 이것을 최소화하는 것을 목표로하고 있으며 자유롭게 선택할 수 있지만 궁극적으로 그 모델에 정말로 불편한 사람들은 리눅스를 전혀 사용하지 않아야한다고 생각합니다. 실제로 첫 번째 장소입니다.
goldilocks

수동으로 설치된 응용 프로그램을 어떻게 관리해야합니까? 일반적으로 복잡한 종속성없이 실행되는 Eclipse 및 Firefox와 같이 직접 설치하고 패키지를 다운로드 할 수 있습니다. 그들은 당신이나 다른 사람이 언급 한 것처럼 독립형으로 작동하지만 파일 시스템 주위에 모든 것을 남기지 않고이 앱을 추적해야합니까? (업데이트 된 질문 참조)
Raekye

Raekye : 내 요점과 차이가 없다. 즉 , 원하는 정도를 제외하고는 / usr / local에있는 소스에서 설치 한 것을 관리하거나 "추적" 필요가 없다는 것이다 . 당신의 목적이 무엇이든간에 . $ PATH에서 컴파일하고 설치하는 것 외에는 보편적 인 리눅스 접근 방법이 없기 때문에 보편적 인 리눅스 레지스트리는 없습니다. 나는 당신이 당신이 무언가를 놓쳤다 고 걱정하고 있다고 가정하고 있습니다. 당신은 un-tar, 당신 configure, 당신 make install. 그게 다야. 그 이후의 모든 것은 개인적인 취향의 문제입니다.
goldilocks

5

전반적인 문제의 기본 이유는 Linux 시스템 자체에 "레지스트리"가 포함되어 있지 않기 때문이라고 생각합니다. 실행 파일은 실제로 무언가를 실행하는 데 필요한 전부입니다. 실행 파일의 전체 경로를 지정하지 않으려면 대부분의 쉘이 환경 $ PATH 변수에 나열된 디렉토리에서 해당 경로를 찾습니다. 링크 된 라이브러리 등으로 조금 더 복잡해질 수 있지만 일반적으로 그 정도를 탐구 할 필요는 없습니다.

다양한 파일 시스템 레이아웃과 패키지 관리 시스템에서 Linux의 다른 배포판이 표준화되어 있으므로 문제가 있습니다. Redhats는 rpm을 사용 하고 Debians / Ubuntu는 deb 패키지를 사용합니다. 아치도 나름대로 갔다 . 소프트웨어 프로젝트 관점에서 배포판에 포함되지 않으려는 경우 사용자 기반은 전적으로 하나의 배포판 또는 모든 사람이 쉽게 설치할 수있는 상업용 제품에 속할 수 있습니다. 다양한 패키지.

사실, 빌드하는 소스 tar.gz gcc는 아마도 일반적인 "Linux 패키지"에 대한 최상의 정의 일 것입니다. 몇 가지 GNU 유틸리티와 GCC가 포함 된 Linux 커널은 다양한 Linux 기반 운영 체제의 공통된 분모에 가깝습니다.

당신이 찾고있는 특정한 것이 없기 때문에 패키지로 사용할 수있는 "아주 적은"것들을 말하지는 않을 것입니다. (또는 배포 자가이 패키지 소란을 신경 쓰지 않기로 선택 했습니까? Chrome과 같은 자체 업데이트 프로세스입니다). 이 때문에있는 많은 패키지 주위에 너무위한 많은 다른 패키지 시스템 에 대한 많은 아키텍처 는 너무 많은 자유 소프트웨어에 대한 재미 없어이 .

리눅스 배포판을 위해 패키지로 제공되지 않는 것을 만들었거나 패키지로 빌드하는 옵션을 지원하는 경우, 실제 패키지로 "등록"하는 가장 좋은 방법은 패키지를 빌드하는 것입니다. 파일은 선택한 패키지 시스템을 기반으로하여 설치해야합니다. 영혼이되어 포장 작업을 프로젝트에 다시 참여시켜 다른 사람들이 혜택을 누리도록하십시오.

패키지 만들기 에 대한 다양한 안내서 가 있습니다 . 데비안 은 그들 중 하나입니다 .

컴파일하려는 패키지를 실행하기 만하면된다면 바이너리 경로를 $PATH?

다른 일을하고 있다면 무엇입니까?


"만약 당신이 원하는 것이 컴파일 된 패키지를 실행하는 것이라면, $ PATH에 바이너리 경로를 추가하겠습니까?" <- 난 (예를 들어, 어떤 제정신 설치 절차 가정 make install최소한 아래의 심볼릭 링크를 설치하는 것 같은 나)를 /usr/bin/아래 전체를 설치하지 않을 경우 /)
njsg

주로 --prefix=/elsewhere사용자 정의 빌드를 일반 트리에서 멀리 유지하기 위해 많은 일을했기 때문인 것 같습니다 .
Matt

1
일반적으로 tarball make install은 다음에 설치됩니다./usr/local/bin
Shadur

0

나는 ~/bin/대신에 symlink 할 수 있다고 덧붙이고 싶습니다 /usr/bin. *.desktop파일은 ~/.local/share/applications/또는에 배치 할 수 있습니다 /usr/share/applications/. 컴퓨터 만 사용하고 시스템 파일 (홈 디렉토리 외부에있는 것)은 가능한 한 많이 만지는 것을 피하고 싶습니다.

물론 "홈 디렉토리"에 물건을 넣을 때 다른 사용자에게는 표시되지 않습니다.

이것이 ~/.profile데비안 wheezy 의 기본값 에 포함 된 것입니다 :

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.