article1_0 - webispy/aln GitHub Wiki
μ€ν μμ€ μΈκ³μμ Ubuntuλ κ°μ₯ μΈκΈ° μλ Linux λ°°ν¬ν μ€ νλμ λλ€. CI/CDμ λ§μ΄ μ¬μ©λλ Github Action runnerμμλ κΈ°λ³Έ Linux μ΄λ―Έμ§λ‘ Ubuntuλ₯Ό μ¬μ©νκ³ μμ΅λλ€. λ°λΌμ μ°λ¦¬κ° λ§λ λΌμ΄λΈλ¬λ¦¬λ₯Ό Ubuntu μ¬μ©μλ€μ΄ μ½κ² μ€μΉνκ³ μ¬μ©ν μ μκ² νλ κ²μ μ€μνλ©°, μ΄λ₯Ό μν κ°μ₯ ν¨κ³Όμ μΈ λ°©λ² μ€ νλκ° λ°λ‘ deb ν¨ν€μ§λ₯Ό ν΅ν λ°°ν¬μ λλ€.
deb ν¨ν€μ§λ Debian κ³μ΄ Linux λ°°ν¬ν(Ubuntu ν¬ν¨)μμ μ¬μ©λλ μννΈμ¨μ΄ ν¨ν€μ§ νμμ
λλ€. μ΄ νμμ μ¬μ©νλ©΄ μ¬μ©μλ€μ΄ apt
λλ dpkg
λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ μ½κ² μννΈμ¨μ΄λ₯Ό μ€μΉ, μ
κ·Έλ μ΄λ, μ κ±°ν μ μμ΅λλ€. λν μμ‘΄μ± κ΄λ¦¬, μ€μΉ ν μ€ν¬λ¦½νΈ μ€ν λ± λ€μν κΈ°λ₯μ μ 곡νμ¬ μννΈμ¨μ΄ λ°°ν¬λ₯Ό λμ± ν¨μ¨μ μΌλ‘ λ§λ€μ΄μ€λλ€.
μ΄λ² κΈμμλ μ΄μ μ μκ°ν ALN(Amazing Lucky Numbers) λΌμ΄λΈλ¬λ¦¬λ₯Ό Ubuntu Linuxμ© deb ν¨ν€μ§λ‘ λ§λλ κ³Όμ μ λ€λ£¨κ² μ΅λλ€. ν¨ν€μ§ μμ±μ νμν νμΌ κ΅¬μ‘°, μ μ΄ νμΌ μμ±, λΉλ κ³Όμ , κ·Έλ¦¬κ³ μ΅μ’ μ μΌλ‘ ν¨ν€μ§λ₯Ό μμ±νκ³ λ°°ν¬νλ λ°©λ²μ λν΄ μ€λͺ νκ² μ΅λλ€.
Ubuntuμμ ν¨ν€μ§ μ€μΉ μ μ¬μ©λλ νμΌμ .deb
νμ₯μλ₯Ό μ¬μ©ν©λλ€. μλμμ μ΄ νμΌμ νμκ³Ό ꡬμ±μ λν΄ μμΈν μμλ³΄κ² μ΅λλ€.
.deb
νμΌμ κΈ°λ³Έμ μΌλ‘ ar
μμΉ΄μ΄λΈ ν¬λ§·μ μ¬μ©νλ μμΆ νμΌμ
λλ€. μμΆμ ν΄μ νλ©΄ λ€μκ³Ό κ°μ νμΌλ€μ΄ μμ±λ©λλ€:
-
debian-binary
- ν¨ν€μ§ νμμ λ²μ μ λνλ΄λ ν
μ€νΈ νμΌμ
λλ€. νμ¬ λλΆλΆ κ²½μ° λ²μ μ
2.0
μ λλ€.
- ν¨ν€μ§ νμμ λ²μ μ λνλ΄λ ν
μ€νΈ νμΌμ
λλ€. νμ¬ λλΆλΆ κ²½μ° λ²μ μ
-
control.tar.gz
(λλcontrol.tar.zst
)- ν¨ν€μ§μ λ©νλ°μ΄ν°λ₯Ό ν¬ν¨νλ μμΆ νμΌ
-
data.tar.gz
(λλdata.tar.zst
)- μ€μ μ€μΉλ νμΌλ€μ ν¬ν¨νλ μμΆ νμΌμ λλ€. μ΄ νμΌμλ μ€μ λ‘ μμ€ν μ μ€μΉλ νμΌλ€μ΄ λ€μ΄ μμ΅λλ€. νμΌ κ΅¬μ‘°λ μ€μ μ€μΉλ λλ ν 리 ꡬ쑰λ₯Ό κ·Έλλ‘ λ°μν©λλ€.
control.tar.gz
μμΆ νμΌμ ν¬ν¨λ λ©νλ°μ΄ν°μ μ£Όμ νμΌλ€μ λ€μκ³Ό κ°μ΅λλ€:
-
control
: ν¨ν€μ§ μ΄λ¦, λ²μ , μμ‘΄μ± λ±μ μ 보 -
md5sums
: λ°μ΄ν° νμΌλ€μ MD5 체ν¬μ¬ -
preinst
,postinst
,prerm
,postrm
: μ€μΉ/μ κ±° μ νμ μ€νλλ μ€ν¬λ¦½νΈλ€
λ¨Όμ apt
λꡬλ₯Ό μ΄μ©ν΄ μμμ ν¨ν€μ§λ₯Ό νλ λ€μ΄λ‘λ λ°μ΅λλ€. apt download
λͺ
λ ΉμΌλ‘ deb ν¨ν€μ§ νμΌμ μ§μ λ€μ΄λ‘λ λ°μ μ μμ΅λλ€.
$ apt download libglib2.0-0
$ ls
libglib2.0-0_2.72.4-0ubuntu2.3_arm64.deb
μ΄μ ar
λͺ
λ Ήμ ν΅ν΄ μμΆμ ν΄μ ν©λλ€. μμμ μ€λͺ
νλ κ²μ²λΌ debian-binary
, control.tar.zst
κ·Έλ¦¬κ³ data.tar.zst
νμΌμ΄ μμ±λμμ΅λλ€.
$ ar x libglib2.0-0_2.72.4-0ubuntu2.3_arm64.deb
$ ls
control.tar.zst data.tar.zst debian-binary libglib2.0-0_2.72.4-0ubuntu2.3_arm64.deb
λ©νλ°μ΄ν°λ₯Ό νμΈνκΈ° μν΄ ν¨ν€μ§μ λν μ λ³΄κ° λ€μ΄μλ control.tar.zst
νμΌμ μμΆμ ν΄μ ν©λλ€.
$ tar xvf control.tar.zst
./
./control
./md5sums
./postinst
./postrm
./shlibs
./symbols
./triggers
μμΆ ν΄μ ν μμ±λ νμΌλ€ μ€ control
νμΌμ λ΄μ©μ νμΈν΄λ³΄λ©΄ μ΄ ν¨ν€μ§μ λν μ΄λ¦, μ€λͺ
, λ²μ , λ©μΈν
μ΄λ λ° μμ‘΄μ± μ 보λ₯Ό λͺ¨λ μ μ μμ΅λλ€.
$ cat control
Package: libglib2.0-0
Source: glib2.0
Version: 2.72.4-0ubuntu2.3
Architecture: arm64
Maintainer: Ubuntu Developers <[email protected]>
Installed-Size: 4137
Depends: libc6 (>= 2.34), libffi8 (>= 3.4), libmount1 (>= 2.35.2-7~), libpcre3, libselinux1 (>= 3.1~), zlib1g (>= 1:1.2.2)
Recommends: libglib2.0-data, shared-mime-info, xdg-user-dirs
Breaks: gimp (<< 2.10.14-3~), glib-networking-tests (<< 2.70.0~), gnome-keyring (<< 40.0-3~), gnome-shell (<< 42.9-0ubuntu2.1~), libgirepository-1.0-1 (<< 1.62.0-4~), libgladeui-2-6 (<< 3.22.2), libsoup2.4-tests (<< 2.72.0-3~)
Section: libs
Priority: optional
Multi-Arch: same
Homepage: https://wiki.gnome.org/Projects/GLib
Description: GLib library of C routines
GLib is a library containing many useful C routines for things such
as trees, hashes, lists, and strings. It is a useful general-purpose
C library used by projects such as GTK+, GIMP, and GNOME.
.
This package contains the shared libraries.
Original-Maintainer: Debian GNOME Maintainers <[email protected]>
μ΄μ μ€μ μ€μΉλ νμΌλ€μ λ΄κ³ μλ data.tar.zst
νμΌλ μμΆμ ν΄μ ν©λλ€.
$ tar xvf data.tar.zst
...
./usr/lib/aarch64-linux-gnu/gio/modules/
...
./usr/lib/aarch64-linux-gnu/libgio-2.0.so.0.7200.4
./usr/lib/aarch64-linux-gnu/libglib-2.0.so.0.7200.4
./usr/lib/aarch64-linux-gnu/libgmodule-2.0.so.0.7200.4
./usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0.7200.4
./usr/lib/aarch64-linux-gnu/libgthread-2.0.so.0.7200.4
...
./usr/share/doc/libglib2.0-0/copyright
...
./usr/lib/aarch64-linux-gnu/libgio-2.0.so.0
./usr/lib/aarch64-linux-gnu/libglib-2.0.so.0
./usr/lib/aarch64-linux-gnu/libgmodule-2.0.so.0
./usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0
./usr/lib/aarch64-linux-gnu/libgthread-2.0.so.0
μ΄λ κ² ν΄μ ν¨ν€μ§κ° ν¬ν¨νκ³ μλ λͺ¨λ νμΌλ€μ νμΈν μ μμμ΅λλ€.
ν¨ν€μ§λ₯Ό λ§λ€ λ μ΄λ¦κ³Ό λ²μ μ μ ν΄μΌ νλλ°, deb ν¨ν€μ§μμ μΌλ°μ μΌλ‘ μ¬μ©νλ κ·μΉμ΄ μμ΅λλ€.
- ν¨ν€μ§ μ΄λ¦
- μλ¬Έμ(λλ¬Έμλ μ¬μ©νμ§ μμ΅λλ€.), μ«μ, κΈ°νΈ(
+
,-
,.
,~
) - λΌμ΄λΈλ¬λ¦¬μ κ²½μ° μΌλ°μ μΌλ‘ μμ
lib
λ₯Ό λΆμ λλ€. - λΌμ΄λΈλ¬λ¦¬μ major λ²μ λ²νΈλ₯Ό λ€μ λΆμ
λλ€. μ:
libxxx0
,libxxx1
- λΌμ΄λΈλ¬λ¦¬μ ν€λ νμΌλ±μ ν¬ν¨νκ³ μλ κ°λ°(λΉλ)μ© ν¨ν€μ§μ κ²½μ° μΌλ°μ μΌλ‘ λ€μ
-dev
λ₯Ό λΆμ λλ€.
- μλ¬Έμ(λλ¬Έμλ μ¬μ©νμ§ μμ΅λλ€.), μ«μ, κΈ°νΈ(
- λ²μ
- μΌλ°μ μΌλ‘ major.minor.patch νμμ μ¬μ©ν©λλ€. μ:
1.2.0
- Semantic Versioning μ°Έκ³
- κ°μ λ²μ μΈλ° ν¨ν€μ§ λ©μΈν
μ΄λμ μν΄ ν¨ν€μ§κ° μμ λ κ²½μ° λ¦¬λΉμ μ λΆμ
λλ€. μ:
1.2.0-1
- λ³΄ν΅ λ°°ν¬νμ λ§κ² ν¨ν€μ§νλ κ³Όμ μμ μμ μ΄ νμν κ²½μ° λ¦¬λΉμ μ΄ μ¬λΌκ°λλ€.
- Ubuntu ν¨ν€μ§μ μν΄ κΈ°μ‘΄ Debian ν¨ν€μ§λ₯Ό κΈ°λ°μΌλ‘ μμ νμ κ²½μ°
ubuntu
μ΄λ¦κ³Ό ν¨κ» 리λΉμ λ²νΈκ° μΆκ°λ©λλ€.-
1.2.0-2ubuntu1
: Debianμ λ§κ² ν¨ν€μ§λ 리λΉμ 2λ₯Ό κΈ°λ°μΌλ‘ Ubuntuμ λ§κ² μΆκ°λ‘ μμ ν ν¨ν€μ§ 리λΉμ 1μ μλ―Έν©λλ€.
-
- μΌλ°μ μΌλ‘ major.minor.patch νμμ μ¬μ©ν©λλ€. μ:
μμμ apt download
λ₯Ό ν΅ν λ€μ΄λ‘λ λ°μ deb ν¨ν€μ§ μ΄λ¦μ μμ κ·μΉμΌλ‘ λΆμν΄ λ³΄λ©΄ μλμ κ°μ΅λλ€.
- νμΌλͺ
:
libglib2.0-0_2.72.4-0ubuntu2.3_arm64.deb
- ν¨ν€μ§ μ΄λ¦:
libglib2.0-0
(-0
μ νμ λ²μ λλ ν¨ν€μ§ λ²μ μ λνλ) - λ²μ
- glib λΌμ΄λΈλ¬λ¦¬ λ²μ :
2.72.4
- 리λΉμ :
0ubuntu2.3
(0
: Debian 리λΉμ ,2.3
: Ubuntu 리λΉμ )
- glib λΌμ΄λΈλ¬λ¦¬ λ²μ :
- μ’
λ₯: λΌμ΄λΈλ¬λ¦¬ (
lib
prefix) - μν€ν
μ²:
arm64
λΌμ΄λΈλ¬λ¦¬ ν¨ν€μ§μ λν΄ libxxx
μ libxxx-dev
λ‘ λΆλ¦¬λμ΄ μλλ°, κ·Έ μ΄μ λ μλμ κ°μ΅λλ€.
- μ ν리μΌμ΄μ
μ μ€ννλλ° νμν μμ‘΄μ± λΌμ΄λΈλ¬λ¦¬
- λΌμ΄λΈλ¬λ¦¬ ν¨ν€μ§μμ μ 곡νλ shared library(
.so.N
) νμΌλ§ μμΌλ©΄ λ©λλ€.
- λΌμ΄λΈλ¬λ¦¬ ν¨ν€μ§μμ μ 곡νλ shared library(
- μ ν리μΌμ΄μ
κ°λ° λ° λΉλλ₯Ό μν΄ νμν μμ‘΄μ± λΌμ΄λΈλ¬λ¦¬
- λΌμ΄λΈλ¬λ¦¬ ν¨ν€μ§μμ ν€λ νμΌ, pkg-config νμΌ κ·Έλ¦¬κ³ shared libraryλ₯Ό κ°μ΄ μ 곡ν΄μ€μΌ μ ν리μΌμ΄μ μ μ μμ μΌλ‘ λΉλν μ μμ΅λλ€.
deb ν¨ν€μ§λ₯Ό λ§λ€κΈ° μν΄ νμν νλͺ©λ€μ νμΈν΄λ³΄κ³ μμ λΌμ΄λΈλ¬λ¦¬μΈ ALN κΈ°μ€μΌλ‘ μ€μ λ‘ μμ±ν΄ λ³΄κ² μ΅λλ€.
λ¨Όμ ν¨ν€μ§μ μν νμΌλ€μ debian
λλ ν 리 λ°μ μμΉν΄μΌ ν©λλ€.
.
βββ CMakeLists.txt
βββ debian
β βββ aln.install
β βββ changelog
β βββ compat
β βββ control
β βββ copyright
β βββ libaln-dev.install
β βββ libaln0.install
β βββ rules
β βββ source
β βββ format
βββ include
β βββ aln.h
βββ src
βββ CMakeLists.txt
βββ aln.c
νμΌλ€μ νλμ© νμΈν΄ 보면 μλμ κ°μ΅λλ€.
-
changelog
- ν¨ν€μ§λ₯Ό λ°νν λλ§λ€ λ²μ κ³Ό λ³κ²½μ¬νλ€μ μ΄ νμΌμ μ μ΄μΌ ν©λλ€. -
compat
- ν¨ν€μ§λ₯Ό λΉλν λdebhelper
λꡬλ₯Ό μ¬μ©νλλ°, μ΄ λꡬμ νΈνμ± μμ€μ μ§μ ν©λλ€. 22.04 (Jammy) κΈ°μ€μΌλ‘13
μ΄ μ¬μ©λ©λλ€. -
control
- ν¨ν€μ§μ λν μ΄λ¦, μ€λͺ , μμ‘΄μ±, μμ±ν ν¨ν€μ§ λͺ©λ‘λ±μ μ μν©λλ€. -
copyright
- λΌμ΄μΌμ€ μ 보 -
rules
- ν¨ν€μ§ λΉλ κ³Όμ μμ μνν΄μΌ ν μ€ν¬λ¦½νΈλ₯Ό μ μν©λλ€. -
source/format
- μμ€ ν¨ν€μ§ ν¬λ§·μ μ μν©λλ€. μ ν΅μ μΈ ν¬λ§·μ1.0
μ΄ μ¬μ©λκ³ μ΅μ ν¬λ§·μ3.0 (quilt)
λλ3.0 (native)
κ° μ¬μ©λ©λλ€. -
*.install
- κ° ν¨ν€μ§λ³λ‘ μ€μΉν νμΌ λͺ©λ‘μ μ μν©λλ€.
changelog
νμΌμ ν¨ν€μ§μ λ³κ²½ μ¬νμ κΈ°λ‘νλ λ° μ¬μ©λ©λλ€. μ΄ νμΌμ ν¨ν€μ§μ κ° λ¦΄λ¦¬μ¦λ§λ€ μ΄λ€ λ³κ²½μ΄ μμλμ§, λκ° λ³κ²½μ νλμ§, μΈμ λ³κ²½μ΄ μ΄λ£¨μ΄μ‘λμ§ λ±μ μ 보λ₯Ό ν¬ν¨ν©λλ€. changelog
νμΌμ ν¨ν€μ§λ₯Ό μ μ§λ³΄μνκ³ κ΄λ¦¬νλ λ° μ€μν μν μ νλ©°, νμμ μ격νκ² μ μλμ΄ μμ΅λλ€.
package (version) distribution; urgency=urgency
* change details
-- maintainer-name <maintainer-email> date
ALN μμ λ‘ μμ±νλ©΄ μλμ κ°μ΅λλ€.
aln (0.1.0~jammy) jammy; urgency=medium
* Initial release.
-- Inho Oh <[email protected]> Tue, 02 Jul 2024 00:00:00 +0900
μλ‘μ΄ λ²μ μ λ°°ν¬νκ±°λ 리λΉμ μ μ¬λ¦΄ κ²½μ° κΈ°μ‘΄νμΌμ μλΆλΆμ λ΄μ©μ μΆκ°νλ©΄ λ©λλ€. vi
μ κ°μ νΈμ§κΈ°λ‘ μ§μ μμ μ νκ±°λ dch
μ κ°μ changelog μμ± λꡬλ₯Ό μ΄μ©νλ©΄ λ©λλ€.
aln (0.1.0-1~jammy) jammy; urgency=medium
* Fix typo in debian/control
-- Inho Oh <[email protected]> Tue, 02 Jul 2024 09:00:00 +0900
aln (0.1.0~jammy) jammy; urgency=medium
* Initial release.
-- Inho Oh <[email protected]> Tue, 02 Jul 2024 00:00:00 +0900
λ²μ λͺ
μ ~jammy
μ κ°μ΄ λ°°ν¬ν μ΄λ¦μ μΆκ°νλ μ΄μ λ PPA(Personal Package Archive)μ κ° λ°°ν¬ν(focal, jammy, noble λ±)μ© ν¨ν€μ§λ₯Ό μΆκ°λ‘ μ
λ‘λν λ μμ€ μμΆνμΌμ μ΄λ¦(μ: aln_0.1.0.tar.gz
)μ΄ λμΌνμ¬ λ°μν μ μλ μ
λ‘λ μ€ν¨(Reject)λ₯Ό λ°©μ§νκΈ° μν΄μμ
λλ€. PPAλ₯Ό ν΅ν΄ λ°°ν¬ν κ³νμ΄ μλ€λ©΄ μΆκ°νμ§ μμλ λ©λλ€.
control
νμΌμ ν¨ν€μ§μ λ©νλ°μ΄ν°λ₯Ό μ μνλ νμΌλ‘, ν¨ν€μ§μ μμ±, μμ‘΄μ±, λ©μΈν
μ΄λ μ 보 λ±μ ν¬ν¨ν©λλ€. control
νμΌμ Source
μΉμ
κ³Ό Package
μΉμ
λ€λ‘ ꡬμ±λ©λλ€.
Source:
Source: package-name
Section: section
Priority: required, important, standard or optional
Maintainer: full name <email>
Build-Depends: dependency1, dependency2
Standards-Version: standards-version
Homepage: homepage-url
- Source: ν¨ν€μ§ μ΄λ¦
- Section: ν¨ν€μ§κ° μνλ μΉμ
μΌλ‘
net
,libs
λ±μ μ¬μ©ν μ μμ΅λλ€. μ 체 λͺ©λ‘μ https://packages.ubuntu.com/jammy/μμ νμΈν μ μμ΅λλ€. - Priority: ν¨ν€μ§μ μ€μλλ₯Ό μλ―Ένλλ°, Ubuntuμ system ν¨ν€μ§κ° μλ μ΄μ λλΆλΆ
optional
μ μ¬μ©νλ©΄ λ©λλ€. - Maintainer: ν¨ν€μ§λ₯Ό κ΄λ¦¬νλ μ¬λμ μ΄λ¦κ³Ό μ΄λ©μΌ
- Build-Depends: μ΄ ν¨ν€μ§λ₯Ό λΉλνλλ° νμν μμ‘΄μ± ν¨ν€μ§λ€μ λμ΄ν©λλ€.
- Standards-Version: ν¨ν€μ§κ° μ€μνλ Debian μ μ± λ²μ μΌλ‘ https://www.debian.org/doc/debian-policy/upgrading-checklist.htmlμμ λ²μ λ³ λ³κ²½μ μ νμΈν μ μμ΅λλ€.
- Homepage: ν¨ν€μ§μ ννμ΄μ§ URL
Package:
Package: package-name
Architecture: any or all
Section: section
Depends: dependency1, dependency2
Description: short description
long description
.
blah blah
- Package: ν¨ν€μ§ μ΄λ¦
- Architecture: ν¨ν€μ§κ° μ§μνλ μν€ν
μ²λ‘ νΉμ μν€ν
μ²μμλ§ μ€νλ κ²½μ°
any
, μν€ν μ²μ μκ΄μμ΄ μ¬μ© κ°λ₯ν μ€ν¬λ¦½νΈλ 리μμ€ κ°μ ν¨ν€μ§μΌ κ²½μ°all
μ μ¬μ©ν©λλ€. - Section: ν¨ν€μ§κ° μνλ μΉμ . Sourceμμ μ ν Sectionκ³Ό λ€λ₯΄κ² μ€μ ν μ μκ³ , Packageλ€ μ¬μ΄μμλ λ€λ₯΄κ² μ€μ ν μ μμ΅λλ€.
- Depends: μ΄ ν¨ν€μ§κ° μ€νλλλ° νμν μμ‘΄μ± ν¨ν€μ§λ€μ λμ΄ν©λλ€.
- Description: ν¨ν€μ§μ λν μ€λͺ
μΌλ‘ 첫 μ€μ μμ½λ μ§§μ μ€λͺ
μ΄κ³ , κ·Έλ€μ μ€λΆν° λ©ν°λΌμΈμΌλ‘ κΈ΄ μ€λͺ
μ μ μ μ μμ΅λλ€. κΈ΄ μ€λͺ
μ μμ±ν λ μμ ν μΉΈμ© κ³΅λ°±μ΄ μμ΄μΌ ν©λλ€. λ§μ½ 곡백 λΌμΈμ΄ νμν κ²½μ°μλ ν μΉΈ 곡백 λ€μ
.
μ μ λ ₯νλ©΄ λ©λλ€.
μλλ ALNμμ μ€μ λ‘ μ¬μ©νλ control νμΌ μμ μ
λλ€. aln
μμ€μ libaln0
, libaln-dev
, libaln0-dbg
, aln
, aln-dbg
λ°μ΄λ리 ν¨ν€μ§λ₯Ό μ μνκ³ μμ΅λλ€.
Source: aln
Section: libs
Priority: optional
Maintainer: Inho Oh <[email protected]>
Build-Depends: debhelper (>= 13), cmake, libglib2.0-dev, doxygen
Standards-Version: 4.1.4
Homepage: https://github.com/webispy/aln
Package: libaln0
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libglib2.0-0
Description: Amazing Lucky Numbers Library
A library for generating amazing lucky numbers.
Package: libaln-dev
Architecture: any
Section: libdevel
Depends: ${shlibs:Depends}, ${misc:Depends}, libaln0 (= ${binary:Version}), libglib2.0-dev
Description: Amazing Lucky Numbers Library (development files)
A library for generating amazing lucky numbers.
Package: libaln0-dbg
Section: debug
Priority: optional
Architecture: any
Depends: libaln0 (= ${binary:Version}), aln (= ${binary:Version}), ${misc:Depends}
Description: Debugging symbols for libaln0
This package contains the debugging symbols for the aln library.
Package: aln
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libaln0, libglib2.0-0
Description: Amazing Lucky Numbers Tool
Command line tool for generating and using amazing lucky numbers.
This package contains the aln command line tool that utilizes the aln library.
Package: aln-dbg
Section: debug
Priority: optional
Architecture: any
Depends: aln (= ${binary:Version}), ${misc:Depends}
Description: Debugging symbols for aln
This package contains the debugging symbols for the aln tool.
rules
νμΌμ ν¨ν€μ§λ₯Ό λΉλνκΈ° μν΄ μ¬μ©νλ Makefile
νμμ μ€ν¬λ¦½νΈ νμΌμ
λλ€. μ΄ νμΌμ ν¨ν€μ§μ λΉλ κ³Όμ μμ μ΄λ€ μμ
μ μνν΄μΌ νλμ§ μ μνλ©°, ν¨ν€μ§ λΉλμ ν΅μ¬ λΆλΆμ λ΄λΉν©λλ€.
κ° ν¨ν€μ§λ§λ€ κ³ μ ν λΉλ μ€ν¬λ¦½νΈκ° νμνλ°, μ΄λ₯Ό κ°λ³μ μΌλ‘ rules
νμΌμ μμ±νλ©΄ 볡μ‘μ±μ΄ μ¦κ°νκ³ μ μ§λ³΄μμ κ²μ¦μ΄ μ΄λ €μμ§ μ μμ΅λλ€. μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ debhelper
λΌλ λκ΅¬κ° μ 곡λ©λλ€. debhelper
λ νμ€νλ ν
νλ¦Ώμ μ¬μ©νμ¬ λΉλ λ° μ€μΉ κ³Όμ μ κ°μννκ³ , μΌκ΄μ± μλ ν¨ν€μ§μ κ°λ₯νκ² ν©λλ€.
λλΆλΆμ ν¨ν€μ§λ μλμ κ°μ΄ λͺ μ€ μλλ μ½λλ‘ ν΄κ²°ν μ μμ΅λλ€. dh
λ debhelper
λ₯Ό μλ―Ένκ³ , %
λ κΈ°λ³Έ νκ²μ μλ―Έν©λλ€.
rules:
#!/usr/bin/make -f
%:
dh $@
μΈλΆμ μΌλ‘λ configure, build, install, clean λ± λ³΅μ‘ν μ¬λ¬ λ¨κ³κ° μ¬μ©λμ§λ§ κ° λ¨κ³λ§λ€ dh
κ° μλμΌλ‘ λ¨κ³μ λ§κ² μ²λ¦¬ν©λλ€. νΉμ λ¨κ³μμ κΈ°λ³Έκ³Ό λ€λ₯΄κ² μ²λ¦¬νκ³ μ ν κ²½μ° override_
prefixλ₯Ό μ΄μ©ν΄μ μ§μ μνλ λͺ
λ Ήμ μνν μ μμ΅λλ€.
μλλ ALNμμ μ¬μ©νλ rules
νμΌ λ΄μ©μ
λλ€.
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_configure:
dh_auto_configure -- \
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
override_dh_install:
doxygen
find doc/man/man3 -type f ! -name 'aln*' -exec rm -f {} \;
install -d $(CURDIR)/debian/tmp/usr/share/man/man3
install -m 644 doc/man/man3/* $(CURDIR)/debian/tmp/usr/share/man/man3/
dh_install
override_dh_strip:
dh_strip -plibaln0 --dbg-package=libaln0-dbg
dh_strip -paln --dbg-package=aln-dbg
override_dh_auto_configure:
- configure λ¨κ³μμ
dh
κ° CMakeλ₯Ό μλμΌλ‘ μΈμν΄μ μ²λ¦¬νλλ°, μ¬κΈ°μ μνλ μ΅μ μ μΆκ°λ‘ μ€μ ν μ μμ΅λλ€. - CMake λΏλ§ μλλΌ Autotools, meson λ± μ λͺ ν λλΆλΆμ λΉλ μμ€ν μ μ§μν©λλ€.
override_dh_install:
- install λ¨κ³μμ μνλ λͺ
λ Ήμ μνν μ μμ΅λλ€. μμ μμ λ μ€μ λ‘ μ€μΉνκΈ° μ μ doxygen λͺ
λ ΉμΌλ‘ manpageλ₯Ό λ§λ€μ΄μ λμ λλ ν 리μ νμν νμΌμ μ€μΉν ν
dh_install
μ μννμ¬ λλ¨Έμ§ install λ¨κ³λ₯Ό μνμν΅λλ€.
override_dh_strip:
- λΉλκ° λ€ λλ ν μμ±λ ν¨ν€μ§μλ λλ²κΉ μ λ³΄κ° λͺ¨λ μ κ±°(strip)λ μνλ‘ λ³΅μ¬λ©λλ€.
- λλ²κΉ
μ μν΄ λ³λμ λλ²κΉ
ν¨ν€μ§λ₯Ό λ§λ€κ³ μΆμ κ²½μ° μμ μμ μ²λΌ
dh_strip
λͺ λ Ήμ μ΅μ μΌλ‘ λλ²κΉ ν¨ν€μ§λ₯Ό μ§μ ν μ μμ΅λλ€.
*.install
νμΌμ ν¨ν€μ§μ ν¬ν¨λ νμΌλ€κ³Ό μ€μΉ μμΉλ₯Ό μ§μ ν©λλ€. control
νμΌμμ μ μλ κ° ν¨ν€μ§μ λν΄ install
νμΌλ€μ μμ±νμ΄ ν΄λΉ ν¨ν€μ§μ ν¬ν¨λ νμΌλ€μ μ μν΄μΌ ν©λλ€. λ¨, debug ν¨ν€μ§λ μλμΌλ‘ μ²λ¦¬λλ―λ‘ λ³λμ install
νμΌμ΄ νμνμ§ μμ΅λλ€.
λΉλ κ³Όμ μ€ μμ±λ λͺ¨λ νμΌλ€(μ: make install λ±μ λͺ
λ ΉμΌλ‘ μ€μΉλ νμΌλ€)μ μμλ‘ debian/tmp/
λλ ν 리μ μ€μΉλ©λλ€. μ΄ νμΌλ€μ κ° ν¨ν€μ§μ μ μ ν λΆλ°°νλ €λ©΄ {package-name}.install
νμΌμ λ§λ€κ³ , κ·Έ μμ ν΄λΉ ν¨ν€μ§μ ν¬ν¨ν νμΌλ€μ λμ΄νλ©΄ λ©λλ€.
ALNμμ μ€μΉνλ νμΌλ€μ μ 리 ν΄λ³΄λ©΄ μ΄ κ³Όμ μ λ μ½κ² μ΄ν΄ν μ μμ΅λλ€.
λ°°ν¬ν νμΌ λͺ©λ‘:
.
βββ usr
βββ bin
β βββ aln
βββ include
β βββ aln
β βββ aln.h
βββ lib
β βββ x86_64-linux-gnu
β βββ libaln.so -> libaln.so.0
β βββ libaln.so.0 -> libaln.so.0.1.0
β βββ libaln.so.0.1.0
β βββ pkgconfig
β βββ aln.pc
βββ share
βββ man
βββ man1
β βββ aln.1
βββ man3
βββ aln.h.3
βββ aln_draw_all.3
βββ aln_draw_number.3
βββ aln_free.3
βββ aln_get_number.3
βββ aln_new.3
βββ aln_reset.3
ν¬ν¨ν νμΌ:
usr/bin/aln
usr/share/man/man1/aln.1
install νμΌ: aln.install
debian/tmp/usr/bin/
debian/tmp/usr/share/man/man1/aln.1
ν¬ν¨ν νμΌ:
usr/lib/x86_64-linux-gnu/libaln.so.0 -> libaln.so.0.1.0
usr/lib/x86_64-linux-gnu/libaln.so.0.1.0
install νμΌ: libaln0.install
debian/tmp/usr/lib/*/*.so.*
ν¬ν¨ν νμΌ:
usr/include/aln/aln.h
usr/lib/x86_64-linux-gnu/libaln.so
usr/lib/x86_64-linux-gnu/pkgconfig/aln.pc
usr/share/man/man3/*
install νμΌ: libaln-dev.install
debian/tmp/usr/lib/*/*.so
debian/tmp/usr/lib/*/pkgconfig/*
debian/tmp/usr/include/
debian/tmp/usr/share/man/man3/aln.h.3
debian/tmp/usr/share/man/man3/aln_*.3
Ubuntuλ μ° 2ν μ λ²μ μ 릴리μ¦νλ©°, 2λ λ§λ€ LTS(Long Term Support) λ²μ μ λ°°ν¬ν©λλ€. μ΄λ κ² λ€μν λ²μ μ λ¨μΌ debian λλ ν λ¦¬λ‘ κ΄λ¦¬νλ κ²μ μ΄λ €μμ΄ μμ΅λλ€. λ°°ν¬ν λ²μ λ³λ‘ ν¨ν€μ§μ΄ λ€λ₯Ό μ μκ³ , changelogλ λ³λλ‘ κ΄λ¦¬ν΄μΌ ν νμκ° μκΈ° λλ¬Έμ λλ€.
μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ²μ λ³λ‘ λ€λ₯Έ λΈλμΉλ₯Ό μ¬μ©νκ±°λ, λ³λμ μ μ₯μμμ κ΄λ¦¬νλ©΄μ CI/CDλ₯Ό ν΅ν΄ μ μ΄νλ λ± λ€μν λ°©λ²λ€μ΄ λ±μ΄ μμ μ μ΅λλ€.
ALNμ κ²½μ°, packaging
λλ ν 리 μλμ λ²μ λ³λ‘ debian
μν μ νλ λλ ν 리λ₯Ό λ§λ€μ΄ λκ³ , ν¨ν€μ§ μ μνλ λ²μ μ debian
λλ ν 리μ 볡μ¬νλ λ°©μμ μ±ννμ΅λλ€. λν, ν₯ν μ€λͺ
ν RPM ν¨ν€μ§ μ€ν¬λ¦½νΈλ κ΄λ¦¬νκΈ° μν΄ ν¨ν€μ§ κ΄λ ¨ νμΌλ€μ λͺ¨λ packaging
λλ ν 리 μλμ μμΉμμΌ°μ΅λλ€.
λλ ν 리 ꡬμ±:
.
βββ include
βββ packaging
β βββ focal : control, rules, ...
β βββ jammy : control, rules, ...
β βββ noble : control, rules, ...
βββ src
ν¨ν€μ§ μμ :
cp -a packaging/focal debian
...ν¨ν€μ§ λͺ
λ Ή...
Ubuntuμμλ deb ν¨ν€μ§λ₯Ό κ΄λ¦¬ νκ±°λ λ§λ€ μ μλ μ¬λ¬κ°μ§ λꡬλ€μ μ 곡νκ³ μμ΅λλ€.
-
dpkg
- deb ν¨ν€μ§ κ΄λ¦¬ -
dpkg-buildpackage
- deb ν¨ν€μ§λ₯Ό μμ±νλ κΈ°λ³Έ λͺ λ Ήμ΄ -
gbp
- gitκ³Ό μ°κ³νμ¬ deb ν¨ν€μ§ μμ± -
sbuild
- chrootλ₯Ό ν΅ν΄ 격리λ νκ²½μμ ν¨ν€μ§ μμ±
deb
ν¨ν€μ§λ dpkg
λꡬλ₯Ό μ΄μ©ν΄ μ€μΉ, μ κ±° λ° ν¨ν€μ§ λͺ©λ‘ νμΈ λ±μ ν μ μμ΅λλ€. μλΆλΆμμ μ¬μ©ν apt install
λͺ
λ ΉμΌλ‘ ν¨ν€μ§ μ€μΉλ₯Ό μ§νν κ²½μ° κ²½μ°, λ€νΈμν¬λ₯Ό ν΅ν΄ νμν ν¨ν€μ§λ₯Ό λ¨Όμ λ€μ΄λ‘λ λ°μ ν λ΄λΆμ μΌλ‘ dpkg
λͺ
λ Ήμ ν΅ν΄ μ€μ λ‘ ν¨ν€μ§λ₯Ό μ€μΉνκ² λ©λλ€.
dpkg -i package.deb : ν¨ν€μ§ μ€μΉ
dpkg -r package : ν¨ν€μ§ μ κ±°
dpkg -l : μ€μΉλ μ 체 ν¨ν€μ§ λͺ©λ‘ νμΈ
dpkg -s package : ν¨ν€μ§ μ 보 νμΈ (μ€μΉλ ν¨ν€μ§ μ΄λ¦ κΈ°λ°)
dpkg -I package.deb : ν¨ν€μ§ μ 보 νμΈ (ν¨ν€μ§ νμΌλͺ
κΈ°λ°)
dpkg -L package : ν¨ν€μ§μ ν¬ν¨λ νμΌ λͺ©λ‘ νμΈ (μ€μΉλ ν¨ν€μ§ μ΄λ¦ κΈ°λ°)
dpkg -c package.deb : ν¨ν€μ§μ ν¬ν¨λ νμΌ λͺ©λ‘ νμΈ (ν¨ν€μ§ νμΌλͺ
κΈ°λ°)
dpkg-buildpackage
λ deb ν¨ν€μ§λ₯Ό λΉλνκΈ° μν κΈ°λ³Έ λꡬμ
λλ€. μ£Όλ‘ κ°λ° νκ²½μμ μ§μ λΉλν λ λ§μ΄ μ¬μ©λλλ°, νμ¬ μμ€ν
νκ²½μμ λ°λ‘ ν¨ν€μ§λ₯Ό λΉλνκΈ° λλ¬Έμ λΉ λ₯΄κ² ν¨ν€μ§λ₯Ό λ§λ€ μ μμ΅λλ€.
νμ§λ§, λ΄ μμ€ν μμλ μ μμ μΌλ‘ ν¨ν€μ§ λΉλμ μ±κ³΅νμ΄λ λ€λ₯Έ μ¬λμ μμ€ν νκ²½μμ λκ°μ΄ λΉλκ° μ±κ³΅νλ€κ³ 보μ₯ν μ μμ΅λλ€. κ° μμ€ν λ§λ€ μ€μΉλ ν¨ν€μ§λ€μ΄ λ€λ₯΄κΈ° λλ¬Έμ λλ€. λ°λΌμ, μ μμΌλ‘ ν¨ν€μ§ μμ μ μ§ννκΈ° μ μ λΉ λ₯΄κ² ν¨ν€μ§μ ν μ€νΈν λͺ©μ μΌλ‘ μ¬μ©νκΈ°μ μ ν©ν λꡬμ λλ€.
ALN κΈ°μ€μΌλ‘ ν¨ν€μ§ λΉλνλ λ°©λ²μ μλμ κ°μ΅λλ€.
# μμ€ λ€μ΄λ‘λ
git clone https://github.com/webispy/aln.git
cd aln
# debian ν¨ν€μ§ λλ ν 리 μ€λΉ (from packaging/jammy, packaging/focal)
DIST_NAME=$(lsb_release -c | awk '{print $2}')
cp -a packaging/$DIST_NAME debian
# ν¨ν€μ§ λΉλ (μλͺ
μμ΄ λΉλ)
# -uc: unsigned .buildinfo and .changes file.
# -us: unsigned source package.
dpkg-buildpackage -uc -us
ν¨ν€μ§λ€μ dpkg-buildpackage
λͺ
λ Ήμ μ€νν λλ ν 리μ μμ λλ ν 리μ μμ±λ©λλ€.
$ cd ..
$ ls
aln # -> μμ€ λλ ν 리
aln-dbg_0.1.0~jammy_arm64.deb
aln_0.1.0~jammy.dsc
aln_0.1.0~jammy.tar.gz
aln_0.1.0~jammy_arm64.buildinfo
aln_0.1.0~jammy_arm64.changes
aln_0.1.0~jammy_arm64.deb
libaln-dev_0.1.0~jammy_arm64.deb
libaln0-dbg_0.1.0~jammy_arm64.deb
libaln0_0.1.0~jammy_arm64.deb
μ΄μ dpkg
λͺ
λ ΉμΌλ‘ ALN ν¨ν€μ§λ₯Ό μμ€ν
μ μ€μΉ λ° μμ ν μ μμ΅λλ€. λ¨, dpkg
λͺ
λ Ήμ μμ‘΄μ± ν¨ν€μ§μ λν΄ μλμΌλ‘ ν΄κ²°ν΄μ£Όμ§ μκΈ° λλ¬Έμ μ€μΉ μ μμ‘΄μ± ν¨ν€μ§ νμΌλ€λ κ°μ΄ λμ΄ν΄ μ£Όμ΄μΌ μ μμ μΌλ‘ μ€μΉλ©λλ€.
# μ€μΉ
sudo dpkg -i aln_0.1.0~jammy_arm64.deb libaln0_0.1.0~jammy_arm64.deb
# μμ
sudo dpkg -r aln libaln0
gbp
λ μ΄λ¦μμ μ μ μλ―μ΄ dpkg-buildpackage
μ Git 리ν¬μ§ν 리λ₯Ό ν΅ν©ν ν¨ν€μ§ λΉλ ν΄μ
λλ€. git tag, branch λ±κ³Ό μ°κ³ν΄μ λ κ°λ ₯νκ² ν¨ν€μ§ μμ
μ μ§νν μ μκ³ , μμ€ μμ ν 컀λ°μ λ§λ€μ§ μμ μνμμ gbp buildpackage
λͺ
λ Ήμ μ€ννλ©΄ μμ λ νμΌμ μλ €μ£Όλ©΄μ λΉλ μλ¬κ° λ°μνκΈ° λλ¬Έμ μ€μλ₯Ό μ€μ¬μ€ μ μμ΅λλ€.
gbp μ€μΉλ μλμ κ°μ΄ apt λͺ λ ΉμΌλ‘ κ°λ₯ν©λλ€.
sudo apt install git-buildpackage
λΉλ μ΅μ
μ dpkg-buildpackage
μ λμΌνκΈ° λλ¬Έμ, μλμ κ°μ΄ λͺ
λ Ήμ μ€ννλ©΄ ν¨ν€μ§λ₯Ό μμ±ν μ μμ΅λλ€.
gbp buildpackage -uc -us
μμΈν μ΅μ λ° μ¬μ©λ²μ https://honk.sigxcpu.org/piki/projects/git-buildpackage/ ννμ΄μ§λ₯Ό μ°Έκ³ λ°λλλ€.
Debian λΉλ μμ€ν
μμ μ¬μ©λλ κ°λ ₯ν λΉλ λκ΅¬λ‘ dpkg-buildpackage
μ λ€λ₯΄κ² νμ¬ μμ€ν
νκ²½μ μ΄μ©νμ§ μκ³ chroot
νκ²½(change rootμ μ½μλ‘ κ²©λ¦¬λ νμΌ μμ€ν
νκ²½μ μ 곡)μμ λΉλν©λλ€.
Ubuntuμ νμ ν¨ν€μ§λ§ μ€μΉλ κΉ¨λν κ°μ νκ²½μμ λΉλκ° μ§νλκΈ° λλ¬Έμ, λΉλνλ €λ ν¨ν€μ§μ μμ‘΄μ±μ νμ€νκ² μ κ²ν μ μκ³ κ²©λ¦¬λ νκ²½μ΄κΈ° λλ¬Έμ νμ¬ μμ€ν μ μν₯μ μ£Όμ§ μμ μμ νκ² ν¨ν€μ§ μμ μ μ§νν μ μμ΅λλ€.
λν, chrootλ₯Ό μ¬μ©νκΈ° λλ¬Έμ νμ¬ μμ€ν μ μ€μΉλ Ubuntu λ°°ν¬ν λ²μ κ³Ό λ€λ₯Έ λ²μ μ© ν¨ν€μ§λ₯Ό μμ±ν μ μκ³ cross-compile νκ²½λ μ§μν©λλ€. μλ₯Ό λ€μ΄ νμ¬ μμ€ν μλ Ubuntu 22.04 (Jammy) amd64κ° μ€μΉλμ΄ μλλ°, 20.04 (Focal)μ© ν¨ν€μ§λ₯Ό μμ±ν μ μκ³ , arm64/armhf μ© ν¨ν€μ§λ λ§λ€ μ μμ΅λλ€.
sbuildλ₯Ό ν΅ν΄ ν¨ν€μ§μ μννλ©΄ μλ κ³Όμ μ΄ λ§€λ² μνλ©λλ€.
apt update
apt upgrade
-
debian/control
μ λͺ μν μμ‘΄μ± ν¨ν€μ§ μ€μΉ - λΉλ (
dpkg-buildpackage
) - lintian - ν¨ν€μ§ κ²μ¬
μ΄ν sbuildκ° λλλ©΄ ν¨ν€μ§ κ³Όμ μ€ μ€μΉ/μμ±λ λͺ¨λ νμΌλ€μ΄ μ κ±°λ©λλ€. λ°λΌμ, λ€μ ν¨ν€μ§μ μνν΄λ λ§€λ² κΉ¨λν νκ²½μμ μ κ³Όμ μ΄ μλ‘ μνλ©λλ€. μ΄λ sbuild λ΄λΆμμ dockerμ μ μ¬νκ² overlayfsλ₯Ό μ¬μ©νκΈ° λλ¬Έμ λλ€.
sbuild μ€μΉλ μλμ κ°μ΄ apt
λͺ
λ ΉμΌλ‘ κ°λ₯ν©λλ€.
sudo apt install -y sbuild ubuntu-dev-tools
μ€μΉ ν μΆκ° μ€μ μμ
μ΄ νμνλ°, sbuild ν¨ν€μ§λ₯Ό μ€μΉνλ©΄ sbuild
κ·Έλ£Ήμ΄ μΆκ°λ©λλ€. λ°λΌμ sbuild λͺ
λ Ήμ μ¬μ©νλ €λ©΄ μ¬μ©μλ₯Ό κ·Έλ£Ήμ μΆκ°ν΄μΌ ν©λλ€.
sudo sbuild-adduser $USER
μ°Έκ³ λ‘, κ·Έλ£Ήμ μ¬μ©μλ₯Ό μΆκ°νλ€κ³ νμ¬ μμ λ°λ‘ κ·Έλ£Ήμ΄ λ°μλμ§ μκΈ° λλ¬Έμ μλ‘μ΄ μμ μ΄κ±°λ νμ¬ μμμ newgrp sbuild
μ κ°μ λͺ
λ Ήμ ν΅ν΄ κ·Έλ£Ήμ μ§μ ν΄μ£Όμ΄μΌ μ μμ μΌλ‘ μ¬μ©μ΄ κ°λ₯ν©λλ€.
λ€μμΌλ‘ chroot νκ²½μ λ§λ€μ΄μΌ ν©λλ€. ν¨ν€μ§ νλ €λ λ°°ν¬ν λ²μ λ³λ‘ μλ λͺ λ Ήμ ν΅ν΄ μμ±ν©λλ€.
mk-sbuild jammy
mk-sbuild focal
μμ±λ chroot μ΄λ¦μ κΈ°λ³ΈμΌλ‘ μ΄λ¦ λ€μ -{arch}
κ° μΆκ°λ©λλ€. μμ λͺ
λ Ήμ μλ‘ λ€λ©΄, jammy-amd64
, focal-amd64
μ΄λ κ² chroot μ΄λ¦μ κ°μ§κ² λ©λλ€.
μλμ κ°μ΄ --target
μ μ§μ νλ©΄ cross-compile νκ²½λ λ§λ€ μ μμ΅λλ€.
mk-sbuild --target armhf jammy
mk-sbuild --target arm64 jammy
cross-compile νκ²½μΌλ‘ μμ±νμ κ²½μ° chroot μ΄λ¦μ -{target}
μ΄ μΆκ°λ©λλ€. jammy-amd64-armhf
, jammy-amd64-arm64
μ΄λ κ² μμ±ν chroot νκ²½μ golden-imageλΌκ³ λΆλ₯΄κ³ , μλ λͺ λ ΉμΌλ‘ μ§μ chroot snapshot νκ²½μΌλ‘ λ€μ΄κ° μ μμ΅λλ€.
# νμ¬ μ¬μ©μ
schroot -c jammy-amd64
# root μ¬μ©
schroot -c jammy-amd64 -u root
μ°Έκ³ λ‘, μ νκ²½μμ νμΌμ λ§λ€κ³ μμ ν΄λ exit
λ‘ λκ°λ€κ° λ€μ λ€μ΄κ°λ©΄ λͺ¨λ μ΄κΈ°νλ©λλ€. μꡬμ μΌλ‘ λ³κ²½νλ €λ©΄ μλμ κ°μ΄ golden-imageλ₯Ό μ¬μ©ν΄μ μ κ·Όν΄μΌ ν©λλ€.
sudo schroot -c source:jammy-amd64 -u root
mk-sbuild
λ‘ chroot μ΄λ―Έμ§λ₯Ό λ§λ μ§ λ무 μ€λλμ sbuildλ‘ ν¨ν€μ§μ μνν λλ§λ€ apt update
λ° apt upgrade
μ μκ°μ΄ λ§μ΄ μμλλ€λ©΄, μλ λͺ
λ Ήμ ν΅ν΄ chroot μ΄λ―Έμ§μ μ€μΉλ ν¨ν€μ§λ€μ μ΅μ μΌλ‘ μ
κ·Έλ μ΄λ ν μ μμ΅λλ€.
sudo sbuild-update --upgrade jammy-amd64
μμμ sbuildλ₯Ό μν chroot μ€λΉκ° λͺ¨λ λλ¬μΌλ©΄, μ΄μ sbuild λͺ λ ΉμΌλ‘ deb ν¨ν€μ§λ₯Ό λ§λ€ μ μμ΅λλ€.
λ¨Όμ ALN μμ€μ½λλ₯Ό λ€μ΄λ‘λ λ°κ³ λ°°ν¬νμ λ§λ debian λλ ν 리λ₯Ό μ€μ ν©λλ€.
# μμ€ λ€μ΄λ‘λ
git clone https://github.com/webispy/aln.git
cd aln
# debian ν¨ν€μ§ λλ ν 리 μ€λΉ (from packaging/jammy, packaging/focal)
cp -a packaging/jammy debian
μ΄μ sbuild λͺ λ ΉμΌλ‘ ν¨ν€μ§ λΉλλ₯Ό μνν©λλ€.
cd aln
sbuild --chroot jammy-amd64
μμ mk-sbuild κ³Όμ μμ cross-compileμ μν chrootλ₯Ό λ§λ€μλ€λ©΄ μλ λͺ λ ΉμΌλ‘ ν¨ν€μ§ λΉλλ₯Ό μνν μ μμ΅λλ€.
sbuild --chroot jammy-amd64-armhf --host armhf
μΌλ°μ μΌλ‘ CI/CD νκ²½ ꡬμ±μ μν΄ docker νκ²½κ³Ό Github actionμ λ§μ΄ μ¬μ©νλλ°, ν¨ν€μ§μ κ²μ¦νκΈ° μν΄ docker μμμ sbuildλ₯Ό μ€ννκ±°λ Github Action runnerμμμ sbuildλ₯Ό μ€ν ν μ μμ΅λλ€. μ무 μ΄μ μμ΄ μ μμ μΌλ‘ μ€νλλ©΄ μ’κ² μ§λ§, sbuildμμ overlayfsλ₯Ό μ¬μ©ν΄μ chrootλ₯Ό μ κ·ΌνκΈ° λλ¬Έμ λλλ‘ λ¬Έμ κ° λ°μν©λλ€.
μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μλ κΈ°λ³ΈμΌλ‘ docker container μ€νμ --privileged
μ΅μ
μ΄ νμνκ³ , overlayfsλ‘ μ¬μ©λλ /var/lib/schroot
μ²λ¦¬ λ°©λ²μ λ°λΌ λ€μκ³Ό 2κ°μ§ ν΄κ²° λ°©λ²μ΄ μμ΅λλ€.
- overlayfsλ‘ μ¬μ©λλ
/var/lib/schroot
κ²½λ‘λ₯Ό-v
μ΅μ μ ν΅ν΄ volumeμΌλ‘ μ€μ :
$ docker run -it --rm -v /var/lib/schroot --privileged ubuntu:latest
root: # apt update λ° sbuild μ€μΉ, μ¬μ©μ μΆκ°, sbuild κ·Έλ£Ή λ° sudoers μ€μ ...
user: mk-sbuild jammy
user: git clone https://github.com/webispy/aln.git
user: cd aln && cp -a packaging/jammy debian
user: sbuild -c jammy-amd64
- schroot λ΄λΆμμ
tmpfs
λ₯Ό μ¬μ©νλλ‘ μ€μ :
$ docker run -it --rm --privileged ubuntu:latest
root: # apt update λ° sbuild μ€μΉ, μ¬μ©μ μΆκ°, sbuild κ·Έλ£Ή λ° sudoers μ€μ ...
root: vi /etc/schroot/setup.d/04tmpfs
#!/bin/sh
set -e
. "$SETUP_DATA_DIR/common-data"
. "$SETUP_DATA_DIR/common-functions"
. "$SETUP_DATA_DIR/common-config"
if [ "$STAGE" = "setup-start" ]; then
mount -t tmpfs overlay /var/lib/schroot/union/overlay
elif [ "$STAGE" = "setup-recover" ]; then
mount -t tmpfs overlay /var/lib/schroot/union/overlay
elif [ "$STAGE" = "setup-stop" ]; then
umount -f /var/lib/schroot/union/overlay
fi
root: chmod +x /etc/schroot/setup.d/04tmpfs
user: mk-sbuild jammy
user: git clone https://github.com/webispy/aln.git
user: cd aln && cp -a packaging/jammy debian
user: sbuild -c jammy-amd64
ALNμμλ Github Actionμ ν΅ν΄ CI/CDλ₯Ό μ¬μ©νλλ°, Runner μμμ tmpfsλ₯Ό μ€μ νμ¬ μ¬μ©νκ³ μμ΅λλ€. μμΈν λ΄μ©μ ALNμ Github Action μ€ν¬λ¦½νΈ(https://github.com/webispy/aln/blob/master/.github/workflows/ci.yaml)λ₯Ό μ°Έκ³ λ°λλλ€.
μ§κΈκΉμ§ deb ν¨ν€μ§λ₯Ό λ§λλ κ³Όμ μ λν΄ μμ보μμ΅λλ€. deb ν¨ν€μ§μ μ²μμλ 볡μ‘ν΄ λ³΄μΌ μ μμ§λ§, κ° λ¨κ³λ₯Ό μ΄ν΄νκ³ μ€μ΅ν΄λ³΄λ©΄ μΆ©λΆν μ΅ν μ μλ κ³Όμ μ λλ€. μ΄ κΈμ μ°Έκ³ νμ¬ μ§μ ν¨ν€μ§λ₯Ό λ§λ€μ΄λ³΄λ κ²λ μ’μ κ²½νμ΄ λ κ²μ λλ€.
λ€μ κΈμμλ λ§λ€μ΄μ§ deb ν¨ν€μ§λ₯Ό μ¬μ©μλ€μκ² ν¨κ³Όμ μΌλ‘ λ°°ν¬νλ λ°©λ²μ λν΄ μμλ³΄κ² μ΅λλ€. μ체 apt μ μ₯μ ꡬμΆ, PPA(Personal Package Archive)λ₯Ό μ΄μ©ν λ°°ν¬, κ·Έλ¦¬κ³ ν¨ν€μ§ μλͺ λ± λ°°ν¬ κ³Όμ μμ κ³ λ €ν΄μΌ ν μ€μν μ¬νλ€μ λ€λ£° μμ μ λλ€.