를 사용하여 dpkg -b
패키지를 만들 려고 합니다. 패키지 디렉터리 구조는 다음과 같습니다.
ubuntu@ip-10-241-62-56:~/USB_RnD_DEB/BACKUP/usblinux1.1$ tree
.
├── DEBIAN
│ └── control
└── usr
├── bin
│ └── usblinux-runner.sh
└── share
└── usblinux
|-->installer.sh
|--> LOTS AND LOTS OF FILES
이는 usblinux-runner.sh
다음을 포함하는 작은 쉘 스크립트로 구성됩니다.
#!/bin/bash
echo "Installing the USB REDIRECTOR as Client !"
echo "-----------------------------------------"
sudo apt-get update
sudo apt-get install build-essential
sudo /usr/share/usblinux/./installer.sh install-client
이제 이것은 패키지로 제공됩니다.
ubuntu@ip-10-241-62-56:~/USB_RnD_DEB/BACKUP$ sudo dpkg -b usblinux1.1/
dpkg-deb: building package `usblinux' in `usblinux1.1.deb'.
ubuntu@ip-10-241-62-56:~/USB_RnD_DEB/BACKUP$ ls
usblinux1.1 usblinux1.1.deb
이제 이것은 잘 작동합니다. 패키지를 설치할 때 압축을 풀고 usblinux-runner.sh를 /usr/bin
& usblinux에 넣습니다./usr/bin/share
usblinux-runner.sh 파일을 설치하거나 실행하지 않습니다. 압축을 풀고 쉘 스크립트를 실행하지 않았는데 콘솔에 어떤 출력도 표시되지 않았습니다.
sudo dpkg -i usblinux1.1.deb
Selecting previously unselected package usblinux.
(Reading database ... 82106 files and directories currently installed.)
Preparing to unpack usblinux1.1.deb ...
Unpacking usblinux (1.1) ...
Setting up usblinux (1.1) ...
누군가 문제를 파악하는 데 도움을 줄 수 있나요?
답변1
이는 정상적인 현상입니다. 기본적으로 설치 패키지는 바이너리를 실행하지 않습니다(그렇지 않으면 e2fsprogs
설치하는 것이 얼마나 재미있을지 상상해 보십시오!).
usblinux-runner.sh
패키지 설치 후 스크립트가 자동으로 실행되도록 하려면 다음을 추가해야 합니다.postinst
스크립트, 실행됩니다 usblinux-runner.sh
. 주의할 점이 있습니다. 관리자 스크립트에서는 다른 패키지를 설치할 수 없으므로 이 apt-get
줄을 제거해야 합니다. 하지만 괜찮습니다. 종속성(패키지가 의존하는)을 선언하는 올바른 방법은 build-essential
제어 파일의 항목에서 이를 선언하는 것이기 때문입니다. 이 모든 것을 염두에 두고 스크립트를 실행하는 Depends:
것이 좋습니다.postinst
/usr/share/usblinux/installer.sh install-client
당신은 여기에 있을 필요가 없습니다 sudo
. 어쨌든 관리자 스크립트가 실행될 것입니다 root
.