~에서Ubuntu 14.04 bash가 기본 쉘을 사용하는 이유는 무엇입니까?:
/bin/sh
Debian 파생 제품에서는 기본적으로 dash를 루트로 실행하여 Dash와 Bash 사이를 전환할 수 있습니다dpkg-reconfigure
.
update-alternatives
둘 다 dpkg-reconfigure
심볼릭 링크가 링크된 실행 파일을 변경하는 데 사용될 수 있습니다. 이것이 맞습니까 /bin/
?
그렇다면 이 목적을 위해 의 update-alternatives
차이점은 무엇입니까 dpkg-reconfigure
?
감사해요.
답변1
update-alternatives
실제로 심볼릭 링크를 관리 /bin
하거나 다른 곳에서도 사용할 수 있습니다.그게 목적이야. 협업 패키지 또는 수동 설정이 필요하며 다양한 대안을 등록해야 합니다.
dpkg-reconfigure
전혀 구체적이지 않으며 단지 패키지의 설치 후 유지 관리자 스크립트를 실행합니다. 따라서 해당 동작은 구성된 특정 패키지에 전적으로 의존합니다. bash
및 의 dash
경우 유지 관리자 스크립트는 /bin/sh
심볼릭 링크를 처리하므로 예, 이 특별한 경우에는 dpkg-reconfigure
심볼릭 링크를 관리하는 데 사용됩니다.
사용하지 않고 bash
관리하지 않는 이유는 단순히 해당 가능성이 활성화되면 .if와 같은 것에 의존할 만큼 강력하다고 간주되지 않기 때문입니다.dash
update-alternatives
/bin/sh
update-alternatives
/bin/sh
아무것문제가 발생하여 /bin/sh
삭제되거나 존재하지 않는 파일을 가리키게 되면 시스템은 쓸모 없게 되고 복구도 어려워지며 제대로 부팅되지도 않습니다. 항상 사용할 수 있도록 주의 bash
하세요 . 여기에는 사전 설치 "스크립트"(실제로 사전 종속성 루프를 방지하기 위한 바이너리)의 신중한 처리, 관련 트릭 및 설치 후 스크립트의 일부 최종 터치가 포함됩니다. 이 모든 디자인에 대한 자세한 내용은 다음에서 확인할 수 있습니다.dash
/bin/sh
dpkg-divert
버그 #34717(19년 전).
시스템의 어떤 바이너리가 대안을 사용하여 처리되었는지, 어떤 바이너리가 전송(관리자 스크립트에서)을 사용하여 처리되었는지 확인하려면 해당 도구를 사용하면 됩니다. 특히 dpkg-divert --list
모든 전송이 나열됩니다. update-alternatives --list
어떤 대체 그룹에 관심이 있는지 알아야 하는데 대체 그룹은 모두 를 가리키기 때문에 쉽게 찾을 수 있기 때문 입니다 /etc/alternatives
.
답변2
이 update-alternatives
명령은 /bin에서 가리키는 기호 링크를 가져올 대체 항목을 관리할 수 있도록 모든 대체 항목을 등록해야 합니다.
교체 시스템은 한 번에 여러 심볼릭 링크를 관리할 수 있고 여러 교체 구현을 처리할 수 있다는 점에서 매우 유연합니다. 두 개 이상이 설치된 경우 어느 것을 선택할지 결정하는 데 도움이 되는 가중치를 부여하고, 이 가중치가 언로드되었으며 다음으로 높은 무게를 갖습니다.
사용된 체계 dpkg-reconfigure dash
는 하나의 패키지(bash)가 게시되지만 /bin/sh
다른 패키지는 이를 "전송"하여 해당 구현을 덮어쓸 수 있는 dpkg의 전송 시스템을 사용합니다.
dpkg의 전송 시스템은 심볼릭 링크에만 국한되지 않으며(파일도 전송 가능) 기본 패키지에서 채택하도록 수정하기 위해 원본 심볼릭 링크(또는 파일)를 보낼 필요가 없습니다 update-alternatives
.
전송 시스템은 종종 전송 상위에 배치되도록 구성되는 패키지에 의존하고 많은 경우 구성을 전혀 수행하지 않기 때문에 대안만큼 유연하지 않습니다(새 패키지를 설치하기만 하면 자동으로 파일이 전송됩니다). 이전에 설치된 패키지에서 구성이 필요하지 않습니다. ) 이러한 제한으로 인해 dpkg의 전송 시스템을 사용하여 두 가지 이상의 대안을 구현하는 것이 더 어려워졌습니다.