Phần trước chúng ta đã tạo được 1 file snapcraft.yaml tiêu chuẩn để có thể chạy được Packaging trên môi trường thật tuy nhiên file này chỉ là file thông tin chưa có gì để chạy. trong phân này mình sẽ hướng dẫn các bạn cách thêm các câu lệnh dể chạy một Packaging hoàn chỉnh. một số lệnh có thể tùy chỉnh theo ý lập trình viên mang tới sự đa dạng không gò bó
Đầu tiên chúng ta cần chỉ ra thư mục góc của phần mềm sẽ tiến hành chạy
ví dụ với một Packaging như sau
apps:
mtd:
command: bin/mtd
Điều này xác định ứng dụng có tên mtd được trỏ tới thư mục chứa mã nguồn của nó là bin/mtd
Bước tiếp theo chúng ta cần xác định part trong Packaging
- Snap chứa các thành phần riêng biệt như snap server web server, database.. tức là nó sẽ chỉ ra đâu là máy chủ sẽ được chạy và nó chứa những gì
- snap có thể có nhiều part ở nhiều khu vực khác nhau
- mỗi part có thể có cấu trúc không giống nhau
Bây giờ mình sẽ tạo một ứng dụng hello đơn giản, mỗi một
part sẽ được quy định cách để chạy như thế nào qua lệnh plugin. Nó giống như việc bạn chỉ định cái gì và làm thế nào để cài đặt, chạy nó
Vần đề về nơi lưu trữ mã nguồn bạn có thể dùng git hoặc file nén trên webserver của bạn tuy nhiên mình khuyến cáo các bạn nên dùng git. Snapcraft hỗ trợ nhiều plugin, cho phép bạn xây dựng nhiều loại dự án (ví dụ: autotools, cmake, go, maven, nodejs, python2, python3).
Để làm một ứng dụng hello minht thêm đoạn sau vào file snapcraft.yaml
parts:
mtd-hello:
source: http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
plugin: autotools
Mình đã thêm một phần được gọi mtd-hello(tên của nó là tùy ý).
source mình đã chỉ định một tarball nằm trên máy chủ FTP của dự án GNU.
plugin mình đã chọn autotools sử dụng các ./configure && make && make install để cài đặt mã nguồn cơ bản
Bạn có thể lấy danh sách đầy đủ các plugin snapcraft được hỗ trợ bằng
snapcraft list-plugins
để chạy snap chúng ta dùng lệnh
snapcraft
Sẽ có nhiều đầu ra nhưng một bản dựng thành công sẽ kết thúc như sau
[...]
Staging gnu-hello
Priming gnu-hello
Snapping 'hello' |
Snapped hello_2.10_amd64.snap
Nếu thông tin bị thiếu bạn sẽ được yêu cầu cài đặt các thư viện hỗ trợ bổ sung
sau khi cài thành công chúng ta có thể thấy cấu trúc thư mục sẽ thay đổi như sau
mysnaps/
└── hello
├── hello_2.10_amd64.snap
├── parts
│ └── gnu-hello
│ ├── build
│ ├── install
│ ├── src
│ └── state
├── prime
│ ├── bin
│ │ └── hello
│ ├── meta
│ │ └── snap.yaml
│ ├── share
│ │ ├── info
│ │ ├── locale
│ │ └── man
│ └── snap
├── snap
│ └── snapcraft.yaml
└── stage
├── bin
│ └── hello
└── share
├── info
├── locale
└── man
Sau đó Packaging của bạn đã sẵn sàng đfể cài đặt
sudo snap install --devmode hello_2.10_amd64.snap
snap list
đầu ra chúng ta thu được
hello 2.10 installed
Để có được một số thông tin về snap đã cài đặt:
snap list hello
Kết quả
Name Version Rev Tracking Developer Notes
hello 2.10 x1 - - devmode
Bây giờ chúng ta sẽ kết hợp hai phần trên lại thành một file
snapcraft.yaml hoàn chỉnh như sau
name: hello
version: '2.10'
summary: GNU Hello, the "hello world" snap
description: |
GNU hello prints a friendly greeting.
grade: devel
confinement: devmode
apps:
hello:
command: bin/hello
parts:
gnu-hello:
source: http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
plugin: autotools
Bây giờ chúng ta sẽ build lại một snap chúng ta dùng lệnh sau để tiết kiệm thời gian
snapcraft prime
sau đó chúng ta cần cung cấp nội dung này cho snap try
:
sudo snap try --devmode prime
chúng ta sẽ có kết quả như sau
hello 2.10 mounted from /home/ubuntu/mysnaps/hello/prime
giờ chúng ta có thể chạy lệnh hello
hello
kết quả
Hello, world!
Và
which hello
/snap/bin/hello
Và như vậy chúng ta đã đóng gói thành công gói của mình và sẵn sàng để chia sẻ cho mọi người dùng
Không có nhận xét nào:
Đăng nhận xét