쉘 스크립트는 사용자 컴퓨터에 설치되지 않은 도구에 의존해야 하는 경우가 많습니다. 이 문제를 방지하기 위해 많은 스크립트에는 다양한 대체 조치가 있습니다.
내 생각에는 그렇게 하면 코드가 복잡해질 뿐이고, 호환성을 위해서만 사용되는 많은 스크립트를 찾는 것은 드문 일이 아닙니다.
스크립트에 종속성을 포함할 수 없는 이유는 무엇입니까? 스크립트에 이러한 프로그램(추가 압축 부분 등 makeself
)이 포함되어 런타임에 간단히 사용할 수 있습니까?
명확히 말하면 이는 wget
및 와 같은 항목 에는 적용되지 않습니다 curl
. 이 경우 각각에 대한 코드는 최소화됩니다. 나는 GUI와 관련된 스크립트에 대해 이야기하고 있는데, 그러한 프로그램( zenity
// yad
등 ) 을 지원하는 많은 코드가 있으며 xdialog
, 이는 매우 다른 구문을 포함합니다.
위의 사항이 완료되지 않은 이유가 있나요?
답변1
위의 사항이 완료되지 않은 이유가 있나요?
쉘 스크립트는 런타임 인터프리터를 사용하기 때문에 이식성이 뛰어납니다. 예제로 사용한 도구(특히 GUI 도구)는 그렇지 않습니다. 이는 Linux/x86, Linux/x86-64, Linux/armel, Linux/armhf, OSX/x86-64, OpenBSD/mipsel 및 실행하려는 기타 플랫폼에 대한 별도의 버전이 있어야 함을 의미합니다.
또한 이러한 항목의 일반 컴파일 버전은 공유 라이브러리에 의존합니다. 종속성에 대해 정말로 걱정하고 싶지 않지만 포함하고 싶다면 SomeGUIApp
정적으로 컴파일된 버전이 필요하거나 (6 == 2 * 3) 해당 종속성과 해당 종속성을 포함해야 합니다. 1 둘 중 하나 그런데, 이것은 여러분이 "단지 5MB"라고 생각했던 것이 결국 수백 개가 된다는 것을 깨닫는 때입니다. 현재 메모리 소비를 살펴보세요. 일반적인 작업을 수행하는 일반 GUI 데스크탑이라면 대부분 GUI 라이브러리 등이 될 것입니다.
오랜 Linux 사용자로서 저는 일반적으로 바이너리를 포함하는 것에 대해 안타까움을 느낍니다. 왜냐하면 범용으로 컴파일된 것에는 문제가 발생할 수 있는 많은 것들이 있기 때문입니다. 다른 옵션이 없는 경우에만 실제로 사용하겠습니다(또는 물론 배포판에서 가져온 경우).
이제 모두가 이렇게 했다고 상상해 보세요. SomeGUIApp
내 시스템에 15개의 복사본이 필요합니까? 전제 조건으로 무언가를 나열하는 것이 더 좋습니다. 내가 가지고 있지 않은 경우 얻을 수 있습니다. 이미 가지고 있는 것의 또 다른 복사본을 제공합니다.
1. 어쩌면 요점은: 어딘가에 선을 그려야 하는데, 원래 포장에 있던 곳에 그려보면 어떨까요?