Linux에 tar.gz 파일을 실제로 설치하는 방법 - 수동으로 설치된(또는 독립형) 애플리케이션을 관리하는 방법은 무엇입니까?

Linux에 tar.gz 파일을 실제로 설치하는 방법 - 수동으로 설치된(또는 독립형) 애플리케이션을 관리하는 방법은 무엇입니까?

패키지와 .debs를 설명하는 링크가 모두 보입니다...알아요...그리고 tar.gz 파일이 작동하도록 하려면 많은 해싱이 필요합니다(예:Java에 대한 새로운 대안아니면 수동으로 파일을 /usr/local/bin(또는 다른 곳에 두십시오. 이것은 제가 몇 시간 동안 검색한 결과 추론한 내용입니다). 패키지가 그렇게 똑똑하다면, 패키지나 .debs/rpms에서 사용할 수 있는 Linux 애플리케이션이 왜 그렇게 적습니까?

저는 새로운 사용자로서 말합니다. 전문가들이 더 잘 알고 있을 것입니다. (Eclipse의 컴파일 가능한 버전을 다운로드할 수 있을까요?) netbeans 및 chrome과 마찬가지로 .sheclipse는 간단하고 부팅 가능한 디렉토리이며 Java에는 이 update-alternatives비즈니스가 필요하지만 Ubuntu/Debian의 "프로그램 목록"(그냥 명령으로 등록) 등에 등록되지는 않을 것 같습니다. (때때로 저장소에서 이러한 내용을 사용할 수 있다는 것을 알고 있지만 다운로드 페이지에 올바른 설명이 없는 이유가 무엇인지 혼란스럽습니다.)

간단히 말해서: tar.gz 파일을 다운로드하거나 컴파일한 경우 이를 시스템에 어떻게 등록합니까? update-alternatives명령으로 등록하는 것 같지만 우분투에서는 검색 창에 표시되지 않습니다. Debian에서는 GNOME 2 실행 프로그램에 대한 바로가기를 수동으로 추가할 수 있습니다. 그런데 정말 어떻게 해야 할까요?


편집하다:

따라서 더 많은 새로운 솔루션을 시도한 후에 "문제"를 약간 개선할 수 있습니다.

수동으로 설치된 프로그램을 어떻게 관리해야 합니까? Firefox와 Eclipse는 지금까지 나의 유일한 예입니다(저는 많이 다운로드하지 않았습니다). 둘 다 내가 좋아하는 상자를 다 사용할 수 있습니다. 그런데 어디에 설치해야 하나요? Eclipse에는 자체 지침이 있지만 모든 "수동 패키지"를 동일한 방식으로 수행하고 싶습니다.

  1. 약간의 조사 끝에 나는 이 프로그램을 /usr/local/bin.
  2. ~에서이클립스 설치 방법, 런처에 무언가를 표시하고 xxx.desktop그 안에 파일을 넣어야 합니다 ~/.local/share/applications/. 이 .desktop 파일의 이름이 중요합니까?
  3. 자동 도구(iFind configure또는 unix/configureFile)를 사용하면 효과적입니다. 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

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

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

이유는 하나도 없습니다. 배포판의 패키지 관리자에서 즐겨찾는 애플리케이션을 보려면 각 사례를 개별적으로 처리해야 합니다. 개발자에게 연락하여(예: IRC 채널 또는 메일링 리스트를 통해) 패키징에 어떻게 도움을 줄 수 있는지 물어보세요.

압축 패키지를 설치하는 방법은 무엇입니까?

tarball(.tar.gz 패키지)에는 모든 콘텐츠가 포함될 수 있습니다. 실제로 열어보기 전까지는 설치 방법을 추측할 수 없습니다. 마찬가지로, 각 패키지는 다르게 처리되어야 합니다.

문서를 찾아보세요!(준) 괜찮은 소프트웨어 패키지는 응용 프로그램 설치 방법에 대한 지침을 제공합니다. 첫 번째 반응은 항상 README, INSTALL 또는 이와 유사한 이름의 텍스트 파일을 찾는 것입니다. 출판사의 웹사이트를 확인해 보는 것도 도움이 될 수 있습니다.

모든 패키지가 다르기 때문에 전 세계의 모든 타르볼을 처리할 수 있는 보편적인 방법은 없습니다. 이는 세상의 모든 재료에 적합한 요리법을 묻는 것과 같습니다. 일어나지 않았습니다.

시스템, 배포판, 데스크탑 환경을 잘 이해하면 도움이 될 것입니다. 따라서 그것이 안심이 된다면 Linux 세계에서 시간을 보낼수록 상황이 점점 더 예측 가능해 보일 것입니다.

특별한 경우: Autotools

프로젝트가 커짐에 따라 소스 코드에서 바이너리, 시스템의 전체 설치로 쉽게 이동할 수 있는 방법을 제공해야 합니다. 그렇기 때문에 필요한 작업을 수행하는 스크립트 모음인 임베디드 빌드 시스템이 함께 제공됩니다.

Linux/오픈 소스/무료 소프트웨어 세계에서는 하나의 빌드 시스템이 널리 채택되고 있습니다.GNU 자동 도구. (오픈) 소스 패키지로 작업한 적이 있다면 Autotools를 사용해봤을 가능성이 높습니다.

가장 간단한 경우, autotools와 함께 패키지된 애플리케이션을 설치하는 방법은 다음과 같습니다.

  • ./configure: 시스템에 해당하는 Makefile을 생성하는 스크립트입니다(가용성에 대한 종속성을 자주 확인합니다).
  • make: 이전에 생성된 Makefile을 기반으로 소스 코드를 컴파일합니다.
  • make install: 바이너리를 적절한 위치에 복사하고, 심볼릭 링크를 생성하고, 개발자가 정의한 기타 단계를 수행합니다.

노트

  • configure스크립트에는 사용할 컴파일러나 대상 디렉터리를 정의하는 방법 등 다양한 옵션이 있는 경우가 많습니다. 유연성이 필요하다면 고려해 볼 가치가 있습니다 ./configure --help.
  • Autotools라고 확신하고 잘 알고 계시더라도,언제나먼저 설명서를 읽으십시오(읽어보기, 설치 등).

질문에 대한 답변 업데이트

귀하께서 문의하신 질문에는 명확한 답변이 없습니다. 여기 있는 모든 사람은 "좋은 습관"이 무엇인지에 대해 각자의 의견을 갖고 있을 수 있지만, 결국에는오직 당신만이 당신에게 맞는 것을 찾을 수 있습니다. 간단한 대답이 있었다면 이런 질문을 하지 않았을 것입니다. 귀하의 배포판이 이에 대한 답변을 드릴 것입니다.

그러고보니 개인적인 의견이 몇 가지 있네요.

  • /usr/local/bin내 시스템에서는 패키지 관리자가 설치한 패키지를 유지합니다 . 내가 수동으로 컴파일/설치한 모든 내용은 /opt.

  • xxx.desktop일반적인 GUI 문제는 사용 중인 데스크탑 환경에 따라 다릅니다. 귀하의 시스템에서 작동한다면 아주 좋습니다. 그러나 Unix에서 사용 가능한 모든 환경으로 일반화되는 것은 아닙니다.

  • /usr/local/bin장점은 이미 당신 안에 있습니다. 내가 제안한 것처럼 다른 디렉터리를 사용하려면 /opt해당 디렉터리를 PATH에 포함해야 합니다. 무엇을 해야할지 모르겠다면 터미널을 열고 터미널에서 다음 명령을 실행하십시오. (이것이 최선의 방법은 아니지만 시스템을 모르면 달리 제안할 수 없습니다.)echo 'export PATH=$PATH:/opt' >> ~/.bashrc

답변2

나는 당신이 그것을 "등록"하고 싶은 것이 무엇인지 스스로 알아 내야한다고 생각합니다.그리고.

설명하자면 - 똑똑해지려고 노력하는 것은 아닙니다 - "linux"는 물론 커널이고 커널은 init 이외의 시스템의 사용자 공간 소프트웨어에 대한 지식이나 관심이 없습니다. 그럼 우리는 여기서 무엇에 대해 이야기하고 있습니까?

다양한 배포판을 언급하셨습니다. 릴리스 바이너리에 설정되지 않은 일부 구성 옵션 세트를 원하기 때문에 저장소에서 사용할 수 있음에도 불구하고 소스에서 소프트웨어를 빌드하는 경우가 있습니다. 내가 가진 유일한 문제는 패키지가 다른 것에 대한 전제 조건인 경우 해당 패키지를 등록해야 한다는 것입니다.포장 시스템실수로 내가 만든 배포판 위에 배포 패키지를 설치하는 것을 방지합니다. Fedora/rpm 기반 시스템에서는 rpm -i --justdb <package>.더 좋은 방법, 전제 조건을 충족하는 척하는 더미 패키지를 생성합니다. 이는 실제로 .tar.gz 소스 코드에서 패키지를 생성하라는 m0nhawk의 제안과 다소 유사합니다. 단지 더 간단할 뿐입니다(솔직히 말해서 m0nhawk의 제안은 전혀 마음에 들지 않습니다).

포장 시스템의 문제 외에도 다른 문제가 있는 것 같습니다. 데스크탑 환경(예: Gnome)을 언급하셨지만 그것이 무엇인지는 명확하지 않습니다. 그것들은 이기종이므로 ​​"리눅스에서 이것을 어떻게 하는가"라는 질문에 대한 대답이 전혀 없습니다. 심지어 "우분투에서 이것을 어떻게 하는가" 또는 "우분투에서 이것을 어떻게 하는가" 젠투도 마찬가지입니다. "gnome 데스크탑에서 이 작업을 수행하는 방법" 또는 "XFCE 데스크탑에서 이 작업을 수행하는 방법" 질문이 있습니다. 유일한 문제는 귀하가 언급한 실행기 문제인 것 같습니다. 각 DE가 제공한다고 믿고 싶습니다. 이를 수행하는 쉬운 방법입니다(그러나 서로 다르기 때문에 정확히 동일하지는 않습니다). 파일 처리에 대한 기본값을 제공하는 데 문제가 있을 수도 있습니다. 질문은 "명령을 어떻게 등록합니까?"였습니다. 내 파일 브라우저'(Linux의 파일 브라우저도 이기종 컬렉션입니다).

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

  • apt 또는 yum과 같은 패키징 시스템
  • systemd 또는 upstart와 같은 시스템 초기화
  • kde 또는 unity와 같은 데스크탑 환경
  • nautilus 또는 Konqueror와 같은 파일 브라우저
  • ????

단순한 통합 솔루션이 불가능한 이유 중 하나는 (비록XDG 표준 가능한일부를 말하자면) "리눅스"는 단순한 통합 운영 체제가 아니며 대다수의 사용자가 그런 방식을 선호한다고 생각합니다. 나는 DE를 전혀 사용하지 않는 경우가 많으며 DE와 함께 제공되는 파일 브라우저 등을 절대 사용하지 않습니다.

다시 한 번 말하지만, 저는 단지 임의적인 것이 아니라 이 문제에 대해 정말 도움이 되고 싶습니다. 여기서 몇 가지 문제를 해결하려면 해당 문제가 무엇인지, 실제로 관련된 소프트웨어가 무엇인지에 대해 더 정확하게 생각해야 합니다(단지 "리눅스뿐만 아니라"). ") ") 문제를 해결하고 싶다면.

답변3

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

다양한 Linux 배포판은 다양한 파일 시스템 레이아웃과 패키지 관리 시스템으로 표준화되어 있으며 여기에 문제가 있습니다. Red Hat은 다음을 사용합니다.회전 속도, Debians/Ubuntu는 deb 패키지를 사용합니다. 아치나는 내 길을 간다게다가. 소프트웨어 프로젝트 관점에서 배포판에 포함되기를 원하지 않거나 사용자 기반이 완전히 하나의 배포판 내에 있거나 모든 사람이 쉽게 설치할 수 있도록 설계된 상용 제품이 아닌 한, 아마도 구축을 시작하려는 제품일 것입니다. 유일한 것은 다양한 정식을 주문하는 것입니다.

실제로 빌드된 소스 tar.gz는 gcc아마도 일반적인 "Linux 패키지"에 대한 가장 좋은 정의일 것입니다. 일부 GNU 유틸리티와 GCC가 포함된 Linux 커널은 얻을 수 있는 다양한 Linux 기반 운영 체제 간의 공통 분모입니다.

나는 당신이 찾고 있는 특정한 것이 아니기 때문에 "너무 작은 것"이 패키지로 제공된다고 말하지 않을 것입니다. (아니면 게시자가 이 모든 패키지 소란을 무시하기로 선택할 수도 있습니까? Chrome 및 자체 업데이트 프로세스와 같습니다.) 거기그래서많은가방에 대한이를 위해많은다른체계~을 위한구조가 너무 많아서너무 많은 무료 소프트웨어에 대해재미 없어.

Linux 배포용 패키지로 사용할 수 없는 항목을 빌드하거나 패키지로 빌드하는 옵션을 지원하는 경우 이를 실제 패키지로 "등록"하는 가장 좋은 방법은 해당 패키지를 빌드하는 것입니다. 이러한 파일은 선택한 패키지 시스템을 기반으로 하고 해당 방식으로 설치되어야 합니다. 영혼이 되어 당신의 패키징 작업을 프로젝트에 기여하여 다른 사람들이 혜택을 받을 수 있도록 하세요.

가지다다양한 가이드네트워크에 대해패키지 빌드. 더반그들 중 하나가 되다.

컴파일된 패키지만 실행하려는 경우,어쩌면 당신의 바이너리 경로를 추가할까요 $PATH?

다른 일을 하고 있었다면 그것은 무엇이었나요?

답변4

~/bin/대신에 심볼릭 링크를 걸 수도 있다는 점을 덧붙이고 싶습니다 /usr/bin. *.desktop파일은 ~/.local/share/applications/또는 에 배치할 수 있습니다 /usr/share/applications/. 나만 내 컴퓨터를 사용하며 가능한 한 시스템 파일(내 홈 디렉터리 외부의 모든 파일)을 직접 만지는 것을 피하고 싶습니다.

물론 콘텐츠를 "홈"에 넣으면 다른 사용자에게는 표시되지 않습니다.

~/.profile이것은 debian wheezy의 기본 설정입니다:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

관련 정보