PKGBUILD와 makepkg를 조사해 봤지만 이미 빌드된 로컬 실행 파일을 사용하여 패키지를 만드는 방법을 알아낼 수 없는 것 같습니다. 다른 Linux 시스템에 쉽게 설치할 수 있도록 패키지해야 합니다. 저는 아치 리눅스를 사용하고 있습니다.
기본적으로 특정 디렉터리에서 두 개의 실행 파일을 가져와 해당 파일로 패키지를 만든 다음 pacman이 일반적으로 실행 파일을 설치하는 동일한 위치에 있는 다른 Arch Linux 시스템에 해당 파일을 설치할 수 있어야 합니다. 애플리케이션이 이미 구축되어 있으므로 소스 코드나 어떤 것도 사용되지 않습니다.
PKGBUILD 파일에 파일을 넣을 소스 위치를 알고 있는데 package() 함수에 무엇을 넣어야 하며 .install 파일이 필요한가요? 그렇다면 그곳에서 무엇을 해야 합니까?
편집: 이 문제는 해결되었습니다. 가장 좋은 답변이 표시되었습니다.
답변1
소프트웨어 패키지에는 PKGBUILD 파일과 동일한 디렉토리에 있는 모든 파일이 포함될 수 있습니다. 귀하의 목적에 따라 이를 수행할 수 있습니다. PKGBUILD 파일의 기능에서 package()
이러한 파일을 호출할 수 있습니다 ${srcdir}/my-executable
. 최종 결과는 다음과 같습니다.
# snip!
source=(my-executable)
sha256sums=('foo')
package() {
install -Dm755 "${srcdir}/my-executable" "${pkgdir}/usr/local/bin/my-executable"
}
이제 다음을 사용하여 패키지를 만들 수 있습니다.
updpkgsums && mksrcinfo && makepkg
이 접근 방식은 홈브류 패키지에만 적합합니다. 하다아니요AUR에 패키지를 업로드하는 경우 이 방법을 사용하십시오. PKGBUILD와 함께 제공되는 파일은 거의 변경되지 않습니다. 확실히 모든 릴리스에서 그런 것은 아닙니다. 실행 파일이 바이너리인 경우 패키지를 AUR에 업로드할 수 없습니다. (아니면 효과가 있고 누군가가 이를 알아채고 귀하를 차단할 것입니다.)
구체적인 예를 보려면 다음을 확인하세요.매핑 테이블. 에 간단한 래퍼 스크립트를 설치 합니다 /usr/bin/mkgmap
.cd "${srcdir}/${pkgname}-${pkgver}"
package()
패키지를 생성한 후 다양한 도구를 사용하여 이러한 패키지를 모든 호스트에 보낼 수 있습니다. 좋은 응용 프로그램별 도구는 다음과 같습니다.패스 웨이. (팁을 주신 jasonwryan에게 감사드립니다.)
또한 Ansible과 같은 도구를 사용하는 것도 고려해 보세요. 패키지 관리자가 이러한 실행 파일에 대해 알 수 있도록 하려면 패키지를 만드는 것이 좋습니다. 그러나 예를 들어 사용자 디렉터리에 파일을 저장하려면 ~/.local/bin/
구성 관리 시스템이 더 나을 수 있습니다.