Tạo PKGBUILD từ .deb


11

Tôi có một .debgói debian về cơ bản chứa các nhị phân của phần mềm dưới dạng một /usr/share/binthư mục trong datatệp nén và một tệp nén siêu dữ liệu khác chứa tổng kiểm tra của các tệp khác.

Mục tiêu của tôi là tạo ra một PKGBUILDcài đặt gói .deb chính xác như vậy trên archlinux.

Cách thích hợp để làm điều đó là gì?

Có đủ để sao chép nội dung của /usr/share/binthư mục đó vào pkg /usr/share/binmôi trường fakeroot bằng build()hàm không? Thư mục sẽ được sao chép vào đúng /usr/share/binvị trí khi gói thực sự được cài đặt?


6
Về cơ bản, có (ngoại trừ sử dụng chức năng gói). Tìm trong AUR để biết các gói khác kết thúc -binvà sử dụng cùng một cách tiếp cận ...
jasonwryan

Câu trả lời:


9

Có, nó sẽ hoạt động giống như các PKGBUILD khác với các nguồn nhị phân - giải nén nó và sao chép các tệp. Điều duy nhất mà nên được đề cập là deb-archive gồm 3 file khác - debian-binary, control.tar.gz, data.tar.gz. makepkg sẽ chỉ trích xuất lưu trữ cấp đầu tiên và sau đó bạn nên giải nén thủ công data.tar.gz.

prepare() {
    tar -zxvf data.tar.gz
}

package() {
    # copy files
}

Ngoài ra, bạn có thể đặt kho lưu trữ gỡ lỗi trong mảng noextract và sau đó chỉ trích xuất thủ công data.tar.gz:

$ ar p source.deb data.tar.gz | tar zx

makepkgthay đổi thư mục hiện tại thành $srcdirtrước khi thực hiện các chức năng, vì vậy bạn không cần bao gồm điều đó nữa ...
jasonwryan

@jasonwryan, một số nhà phát triển đã tuyên bố rằng không có gì đảm bảo rằng điều đó sẽ vẫn đúng. Vì lợi ích lâu dài, có thể có ý nghĩa khi để lại cd "${srcdir}"dòng thông thường .
HalosGhost

1
@HalosGhost Tôi không nghe thấy điều đó. Theo cùng một logic, không có gì đảm bảo rằng nó sẽ trở thành sai ... :)
jasonwryan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.