저는 Linux Mint 18 Cinnamon 64비트를 사용하고 있습니다.
7z
내 시스템에는 다음 바이너리와 해당 버전이 있습니다 .
/usr/bin/7z
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
그리고
/usr/local/share/PeaZip/res/7z/7z
7-Zip [32] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
나는 항상 후자를 사용하기 때문에 전체 경로를 작성하는 것이 점점 더 짜증나고 있습니다.
하나를 정의해야 합니까 alias
, 아니면 더 깔끔한 방법이 있습니까?
답변1
위의 Rui F Ribeiro가 제공한 답변 외에도 update-alternatives
한 가지를 제기하고 싶습니다. 동일한 프로그램에 사용 가능한 서로 다른 바이너리 간의 전환을 관리하는 것이 매우 편리합니다.
먼저, 설치된 바이너리가 실제 바이너리인지 /usr/bin
아니면 단지 심볼릭 링크인지 확인하세요. 이는 다음을 통해 수행할 수 있습니다 ls -la
.
$ ls -la $(which 7z)
# If it is a binary, it will look like this:
-rwxr-xr-x 1 root root 39 Aug 15 2016 /usr/bin/7z
# If a symlink, something like this:
lrwxrwxrwx 1 root root 20 Apr 9 12:58 /usr/bin/7z -> /some/another/path/7z
바이너리를 찾으면 다음 명령을 사용하여 현재 위치에서 이동하세요 dpkg-divert
.
$ sudo dpkg-divert --divert /usr/bin/7z.dist --rename /usr/bin/7z
이제 대체 관리자를 사용할 수 있습니다. 명령의 형식은 다음과 같습니다.
$ sudo update-alternatives --install <link> <name> <path> <priority>
7z
대체 그룹 에 두 개의 바이너리를 추가합니다 .
$ sudo update-alternatives --install /usr/bin/7z 7z /usr/bin/7z.dist 10
$ sudo update-alternatives --install /usr/bin/7z 7z /usr/local/share/PeaZip/res/7z/7z 20
/usr/bin/7z
목록에서 우선순위가 가장 높은 바이너리를 가리키는 심볼릭 링크가 생성됩니다 . 어떤 이유로든 바이너리 간에 전환해야 하는 경우 다음을 수행하세요.
$ sudo update-alternatives --config 7z
대화형 프롬프트에서 사용할 바이너리를 묻습니다.
There are 2 choices for the alternative 7z (providing /usr/bin/7z).
Selection Path Priority Status
-------------------------------------------------------------------------
* 0 /usr/local/share/PeaZip/res/7z/7z 20 auto mode
1 /usr/bin/7z.dist 10 manual mode
2 /usr/local/share/PeaZip/res/7z/7z 20 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Selection
원하는 번호를 입력 하고 Enter를 누르세요. 완벽한! 이 접근 방식의 이점은 모든 개방형 셸 세션을 포함하여 전체 시스템에 즉시 적용된다는 것입니다. 별도의 조치가 필요하지 않으므로 PATH
필요할 때 원본 바이너리로 다시 전환하기가 더 쉽습니다.
답변2
Debian에서 패키지 업데이트 후에도 유지되도록 바이너리 파일을 다른 바이너리 파일로 바꾸는 한 가지 방법(예: BIND 패키지의 init 파일 교체)은 파일 전송을 수행하는 것입니다.
기본적으로 파일 전송은 원본 파일을 다른 위치로 설치/이동하고 패키지 관리 시스템에 원래 위치에 영향을 주지 않고 해당 파일에 대해 이후에 설치된 업데이트를 새 위치에 배치하도록 지시합니다.
데비안에 따르면정책 매뉴얼 – 전환, 귀하의 경우:
dpkg-divert --divert /usr/local/share/PeaZip/res/7z/7z.old --rename /usr/bin/7z
cp /usr/local/share/PeaZip/res/7z/7z /usr/bin/7z
전송을 삭제하려면 다음 안내를 따르세요.
dpkg-divert --remove /usr/bin/7z
전송을 시도하기 전에 두 바이너리를 모두 백업하십시오.
더 많은 명령을 보려면 다음을 참조하세요.바이너리와 파일을 dpkg-divert로 교체
또 다른 간단한 옵션은 원본 패키지를 유지하는 것입니다. 예를 들어 패키지 관리자에게 업데이트를 적용하지 말라고 지시하고 다음과 같이 새 바이너리를 복사합니다.
echo "p7zip hold" | dpkg --set-selections
아니면 더 간단합니다:
apt-mark hold p7zip
바라보다:Debian의 패키지가 업데이트되는 것을 방지하는 방법
또 다른 깔끔한 옵션은 새로운 p7zip 버전으로 deb를 빌드하는 것이지만 방법과 정확한 단계는 패키지마다 다르기 때문에 여기서는 설명하지 않겠습니다.
답변3
다음 특정 디렉터리를 포함하도록 PATH 환경 변수를 조정할 수 있습니다 7z
.
export PATH=/usr/local/share/PeaZip/res/7z:$PATH
7z
이 디렉토리에 설치 하거나/usr/local/bin
링크 할 수 있습니까 ?
일반적 으로 좋은 바이너리를 찾을 수 있기 /usr/local/lib
전입니다 ./usr/bin