꼭두각시를 사용하여 Mac 설치를 자동화하고 있습니다. 그 일부로 .dmg 형식으로 제공되는 여러 프로그램을 설치해야합니다.
다음을 사용하여 마운트합니다.
sudo /usr/bin/hdiutil mount -plist -nobrowse -readonly -quiet -mountrandom /tmp Program.dmg
문제는 일부 .dmg 파일에 라이센스가 첨부되어 있으므로 스크립트가 라이센스를 수락하는 중입니다. (꼭두각시로 실행할 때 stdin / out이 없으므로 계속 수동으로 승인 할 수 없습니다.)
라이센스를 사전 승인하거나 강제 승인하는 방법이 있습니까?
답변
GUI가 있고 두 개의 명령 행 호출을 병렬로 수행 할 수있는 경우
/System/Library/CoreServices/DiskImageMounter.app/Contents/MacOS/DiskImageMounter /path/to/file.dmg
과
osascript accept.scpt
후자는 다음 AppleScript를 실행합니다.
tell application "System Events"
delay 5 # wait 5 seconds -- I tested it using two terminal tabs and needed the time
key code 48 # press tab 4 times in the license window
key code 48
key code 48
key code 48
keystroke " " # press space to click "accept"
end tell
에서 bash
, 나는 쓸 수 있어요
/System/Library/CoreServices/DiskImageMounter.app/Contents/MacOS/DiskImageMounter file.dmg & osascript accept.scpt
답변
EULA가 포함 된 .dmg가 발생했을 때 사용자 상호 작용없이 명령 줄을 통해 설치하려고했습니다.
/usr/bin/hdiutil convert -quiet foo.dmg -format UDTO -o bar
/usr/bin/hdiutil attach -quiet -nobrowse -noverify -noautoopen -mountpoint right_here bar.cdr
(참고 : 나는 위의 모든 옵션에 필요한 합리적 확실하지 오전 EULA 우회, 등 -nobrowse
, -noverify
, -noautoopen
, -mountpoint
그러나, 나는 그들을 사용하고 난 제 뭔가하고 싶지 않았다, 그래서 그들없이 테스트를 그렇지 않은 나는.이 테스트하지 않았습니다.)
내가 끝내었던 것은
bar.cdr
foo.dmg
right_here/
EULA를 요구하지 않고 right_here/
의 내용이 포함 된 곳 foo.dmg
.
완료되면 분리하십시오!
/usr/bin/hdiutil detach right_here/
자세한 정보 : hdiutil (1) Mac OS X 매뉴얼 페이지 .
YMMV
답변
“Y”만 입력하면 yes 명령을 hdiutil 명령으로 파이프하십시오.
yes | /bin/hdiutil [...]
‘y’를 누르는 것을 모방하고 명령 줄로 돌아갑니다.
다른 것을 입력하려면 명령 행에 매개 변수로 입력하십시오.
yes accept | ...
스크립트에 ‘accept’를 입력합니다.
스크립트가 입력을 여러 번 요청하면 yes 명령이 여러 항목을 입력합니다. ‘파이프 파이프’와 같은 출력이 표시 될 수 있습니다. 이는 ‘yes’가 여전히 입력을 전송하는 동안 파이프로 종료 한 명령을 의미합니다.
답변
나는 최근 EULA가있는 DMG를 발견했으며 스크립트를 작성할 수 없었기 때문에 실제로 나를 화나게했습니다. DMG를 CDR로 변환하면 CDR을 마운트 할 때 EULA를 우회했습니다.
내가 한 일은 다음과 같습니다.
hdiutil convert foo.dmg -format UDTO -o bar.cdr
hdiutil attach bar.cdr
rm foo.dmg <--optional
도움이 되었기를 바랍니다.
답변
수락해야하는 여러 페이지로 된 EULA가있는 q
경우 나머지 accept 명령 앞에 a를 추가하여 accept 부분에 도달 할 수 있습니다 (필요한 것은 종료 명령이에 있기 때문에 또는 less
을 사용할 ZZ
수도 있음 Q
).
예를 들어 EULA에 a y
를 입력해야하는 경우 다음을 실행합니다.
yes qy | hdiutil attach ...
답변
꼭두각시 자체 도구를 사용하여 패키지를 설치해서는 안됩니까? 나는 radmind 관리자이고 꼭두각시에 익숙하지는 않지만 Wiki를 확인하면 달성하려는 것과 동등한 pkgdmg 도구가 있음을 알 수 있습니다.
http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Mac_Osx#packagepkgdmg