Làm cách nào để tạo PPA?


Câu trả lời:


97

Sử dụng Lưu trữ gói cá nhân ( PPA ), bạn có thể phân phối phần mềm và cập nhật trực tiếp cho người dùng Ubuntu. Tạo gói nguồn của bạn, tải lên và Launchpad sẽ xây dựng các nhị phân và sau đó lưu trữ chúng trong kho apt của riêng bạn.

Dưới đây là một lời giải thích chi tiết .


5
FWIW Tôi đã có thể kích hoạt PPA của mình trước khi tôi ký quy tắc ứng xử.
Sparhawk

2
Đây là câu trả lời tốt nhất. Bạn vừa được chỉ dẫn cách tạo PPA. Phản hồi dưới đây (bởi totti) không phải là PPA, mà là kho lưu trữ công khai. Hai là khác nhau, mặc dù (có khả năng) hoàn thành cùng một điều. Ông thậm chí còn nói trong dòng đầu tiên của câu trả lời của mình: "Câu hỏi này có một câu trả lời được viết tốt, được chấp nhận. Vì OP muốn một cách đơn giản để xuất bản các gói của mình, tôi đang đưa ra một bản hack dễ dàng." Bởi vì bạn thích hack dễ dàng không làm cho nó trở thành câu trả lời tốt nhất.
lbaile200

OK, nhưng không có liên kết nào trong câu trả lời này thực sự mô tả cách thực hiện từ đầu. tất cả các liên kết ở đây được tạo cho các nhà phát triển, đã được đưa vào tài liệu nhiều hơn nữa
rubo77

1
@ rubo77 - "cách tạo" hoàn toàn quá rộng để có thể trả lời được. Tất cả phụ thuộc vào những gì bạn đang cố gắng để gói. Thật vậy, mỗi bước trong câu trả lời trên có thể là Q riêng biệt với mỗi câu trả lời chi tiết tốt.
fossfreedom

1
Câu trả lời mới của Totti đã rất tuyệt rồi
rubo77

86

Cách tạo tệp .deb

Đây là một hướng dẫn về cách tạo một tệp .deb cơ bản từ một tập lệnh mẫu nhất định. Trong hướng dẫn này trước tiên, chúng tôi tạo một chương trình mẫu trong bash chỉ hiển thị 'HELLO TỪ CHƯƠNG TRÌNH'. Sau đó, chúng tôi tạo một tệp điều khiển cho chương trình để tạo một trình cài đặt debian. Cuối cùng chúng được đóng gói thành một .debtập tin.

Các bước:

  1. tạo một chương trình mẫu trong bash

    mkdir "$HOME/create_deb/pgmdir"
    gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
    

    dán đoạn mã sau vào nó

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
  2. Làm cho chương trình thực thi

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
  3. Tạo tập tin điều khiển cho gói debian

    Tạo một tập tin có tên controltrong thư mụcDEBIAN

    mkdir "$HOME"/create_deb/DEBIAN
    gedit "$HOME"/create_deb/DEBIAN/control
    

    và dán các chi tiết sau

    Package: hellodeb
    Version: 0.1
    Architecture: all
    Maintainer: totti
    Installed-Size: 6
    Depends: zenity, bash
    Section: testing
    Priority: optional
    Homepage: http://askubuntu.com
    Description: This is my first debian package.
     Guided by Totti Torvalds.
     In Description new line start with a space.
    

    Bạn có thể chỉnh sửa nội dung nếu bạn thích. Đọc thêm về định dạng của tập tin này ở đâyở đây .

  4. Tạo postinsttập lệnh, được thực thi ngay sau khi cài đặt gói

    gedit "$HOME"/create_deb/DEBIAN/postinst
    

    sau đó dán

    #!/bin/sh
    set -e
    echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
    

    và làm cho nó thực thi

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
  5. Tạo prermtập lệnh, được thực thi trước khi gỡ bỏ gói

    #!/bin/sh
    set -e
    echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
    

    và làm cho nó thực thi

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
  6. Tạo cấu trúc gói và sao chép chương trình, dữ liệu, v.v.
    Tạo cấu trúc của chương trình đã cài đặt và dữ liệu của nó. Trong ví dụ này, chúng tôi đặt các tập tin tại /bin.

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
  7. Xây dựng tệp .deb .

    dpkg-deb --build "$HOME"/create_deb .
    

    Các .ý chí tự động đặt tên cho .debfile với phiên bản, vòm vv Hoặc tên tùy chỉnh của bạn

    dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
    

    Hoặc nếu bạn xây dựng tệp .deb với

    debuild -k'your GPG key here' -S
    

    sau đó bạn có thể tải nó lên Ubuntu Launchpad với

    dput ppa:<lp-username>/<ppa-name> packet-source.changes
    

    như được mô tả ở đây (nguồn: tạo Gói .deb từ tập lệnh hoặc tệp nhị phân )

  8. Cài đặt .debgói vừa tạo . Bạn có thể mở nó bằng software-centernhưng nó có thể không cho phép bạn cài đặt. Vì vậy, tôi khuyên bạn nên sử dụng gdebigói quản lý.

    sudo apt-get install gdebi
    
    gdebi "$HOME"/create_deb/hellodeb.deb
    

    Bây giờ bạn có thể cài đặt nó. Trong quá trình cài đặt, bạn sẽ thấy một cuộc đối thoại gtk

    Cài đặt chương trình: zenity_hello.sh ......

  9. Sau khi cài đặt mở một thiết bị đầu cuối và gõ zenity_hello. Nếu chương trình được cài đặt đúng và mọi thứ đều ổn, bạn sẽ thấy đoạn hội thoại gtk

    HELLO TỪ CHƯƠNG TRÌNH

  10. Gỡ bỏ gói

    sudo apt-get remove zenity_hello
    

Xuất bản kho lưu trữ của bạn trong 2 phút

Vì OP muốn một cách đơn giản để xuất bản các gói của mình, tôi cho phép hack dễ dàng.

yêu cầu: dropbox (hoặc bất kỳ dịch vụ nào khác, ví dụ như tài khoản github ) với một thư mục công cộng.

  1. Tạo một thư mục bên trong Thư mục công cộng-Dropbox nơi bạn đặt các tệp * .deb của mình:

    mkdir ~/Dropbox/Public/deb-packages  
    

    hoặc tạo thư mục đó ở bất kỳ nơi nào khác và đặt liên kết tượng trưng vào thư mục Công cộng của bạn:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. Đi vào thư mục đó và tạo một tập lệnh mà khi được thực thi sẽ tạo ra Gói.gz, chứa tất cả các thông tin cần thiết về các gói gỡ lỗi của bạn. tạo nên:

    gedit import.sh  
    

    đặt cái này vào trong nó:

    #!/bin/bash
    dpkg-scanpackages . /dev/null |gzip > Packages.gz
    

    làm cho nó thực thi:

    chmod  x import.sh
    
  3. Sao chép một số tệp * .deb vào Thư mục. Có thể là của riêng bạn hoặc một số không có sẵn thông qua các kho lưu trữ khác. Sau đó đi vào Thư mục và thực thi tập lệnh chúng tôi đặt ở đó:

    cd ~/deb-packages/ 
    ./import.sh
    

    Điều đó sẽ tạo ra cái gọi là Packages.gz File, mà ngoại hình apt cho biết những gói được đặt tại kho lưu trữ này.


Đó là nó

Bây giờ, hãy đợi Dropbox đồng bộ hóa Thư mục và lấy URL công khai từPackages.gz . Nó sẽ trông giống như thế này:

http://dl.getdropbox.../Packages.gz

Loại bỏ phần cuối của liên kết đó, đặt thêm một số từ cho liên kết đó và bây giờ bạn có thể sử dụng và điền vào dòng sau cho các nguồn.list:

deb http://dl.getdropbox.../deb-packages ./

Đó là bạn có kho lưu trữ deb của riêng bạn đang chạy. Luôn đồng bộ cục bộ, nhưng có sẵn cho bất cứ ai, bất cứ lúc nào, bất cứ nơi nào.

LƯU Ý: dpkg-scanpackages có sẵn từ dpkg-dev
tài liệu tham khảo


3
+1 Tuyệt vời! Điều này đã làm việc: Tôi đã sử dụng Github và ở đó thư mục thô cho một thư mục releases/xem github.com/rubo77/mouse-speed/blob/master/release/iêu
rubo77

Điều này mô tả một PPA tự lưu trữ, nhưng làm cách nào tôi có thể Xây dựng gói
gỡ lỗi

3
Nếu bạn xây dựng tệp .deb ở bước 7. debuild -us -uc -k'your GPG key here'sau đó bạn có thể tải nó dput ppa:<lp-username>/<ppa-name> packet-source.changeslên Launchpad như được mô tả ở đây (nguồn: tạo Gói .deb từ tập lệnh hoặc tệp nhị phân )
rubo77

@ rubo77, Cảm ơn, tôi hoan nghênh bạn thêm infos này vào cuối câu trả lời của tôi.
totti

1
OK, tôi vừa làm, tôi cũng phát hiện ra rằng bạn cần các tham số khác cho Launchpad để không tạo tệp .deb ngay bây giờ (chỉ -S): debuild -k'your GPG key here' -Svì Launchpad sẽ tạo tệp gỡ lỗi (nếu nó không bị từ chối) - những gì `-us -uc` đã được cho?
rubo77

2

Bạn sẽ cần một tài khoản Launchpad.net để tạo PPA. Chỉ cần nhấp vào người dùng của bạn trên Launchpad (nhấp vào tên của bạn ở phía trên bên trái) và tạo PPA. Trước tiên, bạn có thể phải ký Quy tắc ứng xử và đăng ký khóa GPG với tài khoản của mình.

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.