Lập Trình Packaging Ubuntu Phần Hai Chạy Packaging - MTD SEC

MTD SEC

Chia Sẻ Để Thành Công

Home Top Ad

Post Top Ad

Thứ Ba, 12 tháng 3, 2019

Lập Trình Packaging Ubuntu Phần Hai Chạy Packaging


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!








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

Post Top Ad