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

패키지와 .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

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



답변

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

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

단 하나의 이유가 없습니다. 배포판의 패키지 관리자에서 좋아하는 앱을 보려면 각 사례를 개별적으로 처리해야합니다. 개발자 (예 : 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


답변

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

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

여러 가지 다른 배포판을 언급했습니다. 저장소에서 사용할 수 있지만 소스에서 소프트웨어를 빌드하는 경우가 있습니다. 배포판 바이너리에 설정되지 않은 구성 옵션 세트가 필요하기 때문입니다. 내가 가지고있는 유일한 문제는 패키지가 다른 것의 전제 조건 인 경우 실수로 배포 한 패키지를 배포 한 패키지 위에 실수로 설치하지 않도록 포장 시스템 에 이를 등록해야한다는 것입니다. 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를 전혀 사용하지 않으며 함께 제공되는 파일 브라우저 등을 사용하지 않습니다.

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


답변

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

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

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

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

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

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

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

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


답변

나는 ~/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


답변