따라서 컨텍스트를 추가하겠습니다. 하지만 내 BLUF는 다음과 같습니다.
"현대적이고, 효율적이며, 효과적인" 것보다 "오래되고, 알려지고, 안정적인"(CentOS 6.6, 고도로 큐레이팅된 Repo 등)을 적극적으로 선호하지만 내 프로필 내에서 상당한 권한을 허용하는 조직에서 내가 얼마나 멀리까지 ( 아니면 내 프로필 내에 나만의 환경을 만들어야 하며, 이를 실현하는 가장 합리적인 접근 방식은 무엇입니까?
제가 말하는 쉬운 예는 Python입니다. 시스템 전체에서는 2.6으로 제한되어 있지만 내 목적을 위해 2.7이나 3.4를 실행해도 아무도 신경 쓰지 않지만 수동으로 빌드하는 것조차(pyenv 등과 같은 도구를 사용하는 것은 신경 쓰지 마세요) 성공하지 못했습니다(항상 그런 것처럼 보이지만).단지내 능력으로는 한계가 있음)
따라서 내가 새 코드를 컴파일하거나 합리적인 소스에서 패키지를 실행하는 데 아무도 문제가 없습니다. 내가 하고 있는 일은 SU 컨텍스트 등에서 실행되지는 않지만 여기에서 바퀴를 돌리는 데 엄청난 시간을 소비하는 것 같습니다. (심지어 사용자 컨텍스트에서도) 빌어먹을 도구를 실행할 수 없기 때문에 RPM을 설치할 수 없습니다. RPM을 설치할 수 없는 이유는 RPM이 이를 허용하지 않고 권한을 수정하여 이를 수행할 수 있는 방법이 있을 것이라고 생각하기 때문입니다. 시스템 전반에 걸쳐 변경). 하지만 그런 것을 요청하기 전에 그것이 내 문제에 대한 최선의(또는 적어도 실행 가능한) 솔루션인지 알아야 합니다.
이를 실현하려면 어떤 경로를 취해야 합니까? 그리고 내가 하는 것 이상으로~할 수 있다그렇죠, 저는 사실~하다이러한 정책의 일반적인 의도를 따르고 싶기 때문에 실제로 보안에 영향을 미치는 작업을 피하고 싶습니다. 그렇다면 이를 어느 정도까지 수행해야 하는지에 대한 제한이 있습니까?
패키지 관리자를 사용하는 것이 전혀 실행 가능합니까? 기능적인 빌드 환경을 구축하시나요? 등.
물론, 제가 읽어야 할 입문서가 어딘가에 있다면 링크를 걸어 주시면 매우 감사하겠습니다. 내 google-fu는 여기서 실패했습니다(아마 문제를 간결하게 설명하는 데 어려움을 겪었기 때문일 것입니다).
답변1
좋아요, 이것이 제가 귀하의 질문에서 얻은 것입니다. 필요하다고 생각되는 패키지 버전이 포함된 환경을 원하십니까? 그렇다면 Linux가 실제로 이를 지원하므로 그렇게 하는 데 아무런 문제가 없습니다. 사용자로서 수행할 수 없는 작업에는 제한이 거의 없습니다.
첫 번째 예는 Python입니다. 시스템 관리자는 이를 업그레이드하는 것을 (명시적으로) 삼가합니다. 이는 YUM에 매우 필수적이며 이를 위반하면 서버를 업데이트할 수 없게 되기 때문입니다. 그러나 이것이 홈 디렉토리에 하위 폴더를 생성하고 필요한 바이너리가 있는 tar 볼을 가져오는 것을 막지는 못합니다. 그냥 여기로 가세요파이썬 다운로드그리고 타르볼을 골라보세요. 집에서 압축을 풀고 export PATH=/location_to_bin_folder_for python:$PATH
.bashrc에 추가하면 됩니다.
이는 Linux 세계에서는 완전히 허용되며(회사에서는 설치 항목에 제한이 있을 수 있음) 일반적으로 폐쇄형 인프라에서는 tar 볼을 사용합니다. 패키지 관리자는 일반적으로 관리자가 사용하는 것이며 Red Hat이나 기타 타사 저장소 제공업체에서 제공하는 PHP 버전과 같은 특정 사항을 염두에 두지 않는 한 이에 대해 알 수 없습니다.
요약하면 관리자가 설정한 규칙에 따라 제한됩니다. 폐쇄형 인프라에서는 보안이 실제로 큰 문제가 되지 않습니다. 업데이트로 타르 볼을 사용해야 하는 경우 한 단계 더 나아가 RPM을 만들 수 있으며 업데이트를 구독하여 RPM을 업데이트된 상태로 유지할 수 있습니다. 나는 그들이 당신을 얼마나 제한하고 싶어하는지 알아낼 것이지만 거의 모든 개발 도구는 이 목적을 위해 tar 아카이브로 사용할 수 있습니다.
편집하다 :
찾고 있는 것을 달성하는 가장 쉬운 방법은 대안이 수행되는 방식입니다. 집에 폴더를 만들면 그렇게 할 수 있습니다.
/home/user/bin
두 개의 별도 폴더에 Python 및 Java와 같은 다른 것을 설치하십시오.
/home/user/python
그리고/home/user/java.
bin 폴더에서 원하는 바이너리에 대한 심볼릭 링크를 만듭니다.
$ ls -l /home/user/bin
lrwxrwxrwx. 1 user user 13 May 19 19:59 java -> /home/user/java/bin/java
lrwxrwxrwx. 1 user user 13 May 19 19:59 javac -> /home/user/java/bin/javac
lrwxrwxrwx. 1 user user 15 May 19 19:59 python -> /home/user/python/bin/python
이것을 .bashrc에 추가하십시오.
export PATH=/home/user/bin:$PATH
새 터미널 세션을 열고 시도해 보세요.
which python
그것은 말해야한다/home/user/bin/python
선택한 버전에 맞는 추가 바이너리를 추가하면 예상대로 작동합니다.