rabbit-slide-kenhys-tokyodebian-dputng-howto-202301 2023.01.21.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 105bd3d4d66c1a115b448f6163831ec06c0380268f2d30071d3c6d3cf769f02d
4
+ data.tar.gz: 0f0ec37fadc8975363c1ba04e09a511594469277370f7be41e3bb1c2fb89b610
5
+ SHA512:
6
+ metadata.gz: 1b6b695752fc933a0705312eedea3ada4935a75c321f4c06d0576f16cd1bf0ea4f1eb7b5cecbbe94100e5977e1214735f31593a61a90c8b36d268a9b490027c6
7
+ data.tar.gz: 750cb8c1b47d0e12f86cd11c790f2ee78a6f65444150b8a648dfceeb7e0f68975d1f759ff8e1d7e32c449b7083317d4119e8c8205d511e838db03efe99e981ea
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ --size=1024,768 tokyodebian-dputng-howto.md
data/README.md ADDED
@@ -0,0 +1,14 @@
1
+ # Tokyo Debian dput, dput-ng Howto 202301
2
+
3
+ ## How to show
4
+
5
+ % rabbit
6
+
7
+ ## How to install
8
+
9
+ % gem install rabbit-slide-kenhys-tokyodebian-dputng-howto-202301
10
+
11
+ ## How to create PDF
12
+
13
+ % rake pdf
14
+
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
data/config.yaml ADDED
@@ -0,0 +1,26 @@
1
+ ---
2
+ id: tokyodebian-dputng-howto-202301
3
+ base_name: tokyodebian-dputng-howto
4
+ tags:
5
+ - rabbit
6
+ - debian
7
+ - dput
8
+ - dput-ng
9
+ presentation_date: 2023-01-21
10
+ presentation_start_time:
11
+ presentation_end_time:
12
+ slideshare_id:
13
+ version: 2023.01.21.1
14
+ licenses:
15
+ - CC-BY-SA-4.0
16
+ slideshare_id: kenhys
17
+ speaker_deck_id:
18
+ vimeo_id:
19
+ youtube_id:
20
+ author:
21
+ markup_language: :md
22
+ name: Kentaro Hayashi
23
+ email: kenhys@gmail.com
24
+ rubygems_user: kenhys
25
+ slideshare_user:
26
+ speaker_deck_user: kenhys
Binary file
Binary file
Binary file
data/theme.rb ADDED
@@ -0,0 +1,5 @@
1
+ @default_font = "Ubuntu"
2
+ @monospace_font = "Ubuntu"
3
+ include_theme("debian")
4
+ #@slide_show_span = 1300
5
+ @slide_show_loop = true
@@ -0,0 +1,357 @@
1
+ # Debianパッケージング アップロード編
2
+
3
+ subtitle
4
+ : おすすめのアップロードツールはどれか?
5
+
6
+ author
7
+ : Kentaro Hayashi
8
+
9
+ institution
10
+ : ClearCode Inc.
11
+
12
+ content-source
13
+ : 2023年1月 東京エリア・関西合同Debian勉強会
14
+
15
+ allotted-time
16
+ : 20m
17
+
18
+ theme
19
+ : .
20
+
21
+ # スライドはRabbit Slide Showにて公開済みです
22
+
23
+ * Debianパッケージング アップロード編
24
+ * <https://slide.rabbit-shocker.org/authors/kenhys/tokyodebian-dputng-howto-202301/>
25
+
26
+ # 本日の内容
27
+
28
+ * Debianパッケージのアップロードの機会
29
+ * 各種アップロードツールの紹介
30
+ * dput,dpug-ng,dupload
31
+ * おすすめのツールについて
32
+
33
+ # Debianパッケージのアップロードの機会
34
+
35
+ * パッケージのメンテナンス
36
+ * コントリビューターによるアップロード
37
+ * 例: mentors.d.nへのアップロードなど
38
+ * DM/DD: 既存のパッケージのメンテナンス
39
+ * DD:新規パッケージのスポンサー
40
+ * 例: ftp-masterへのスポンサーアップロードなど
41
+
42
+ # アップロードに用いられるツール
43
+
44
+ * dput (圧倒的に利用者が多い)
45
+ * dupload (dput-ngよりは使われている)
46
+ * <https://www.debian.org/doc/manuals/maint-guide/upload.ja.html>
47
+ * <https://www.debian.org/doc/manuals/developers-reference/tools.ja.html#package-uploaders>
48
+ * dput-ng (一部の人が使っている)
49
+
50
+ # dputのインストール動向
51
+
52
+ ![](images/popcon-dput.png){:relative-height="80"}
53
+
54
+ * <https://qa.debian.org/popcon.php?package=dput>
55
+
56
+ # duploadのインストール動向
57
+
58
+ ![](images/popcon-dupload.png){:relative-height="80"}
59
+
60
+ * <https://qa.debian.org/popcon.php?package=dupload>
61
+
62
+ # dput-ngのインストール動向
63
+
64
+ ![](images/popcon-dput-ng.png){:relative-height="80"}
65
+
66
+ * <https://qa.debian.org/popcon.php?package=dput-ng>
67
+
68
+ # dputとは
69
+
70
+ * ほぼデファクトスタンダードのアップロードツール
71
+ * devscriptsのrecommendsでインストールされる
72
+ * packaging-devの依存でインストールされる
73
+ * ~/.dput.cfでユーザーごとにカスタマイズ
74
+ * PPAにアップロードするときとか
75
+
76
+ # dput-ngとは(1)
77
+
78
+ * <https://dput.readthedocs.io/en/latest/>
79
+ * dputとの設定ファイルの互換性を維持しつつも方向性が異なるプロジェクト
80
+ * フックの仕組みでチェック機能を拡張可能
81
+ * 例: 3rdパーティーが開発したチェッカーを利用できる
82
+ * 独自書式の設定ファイルで挙動を柔軟に変えることもできる
83
+ * DMのパーミッションの操作もできる(dcutの機能強化)
84
+
85
+ # dput-ngとは(2)
86
+
87
+ * **dputと併用はできない**
88
+ * dput-ngをインストールするとdputは削除される
89
+ * ドキュメントはdputよく知っている前提
90
+ * 利用可能なフックの説明はなく、実装についてのページがある
91
+ * <https://dput.readthedocs.io/en/latest/library/hooks/index.html>
92
+ * dput(1)もしくはdput(5)の参照おすすめ
93
+
94
+ # dirtを使ってフックを調べる
95
+
96
+ * dirt listコマンドが利用できる
97
+
98
+ ```
99
+ % dirt list
100
+
101
+ WARNING: This command is not completed yet. Interface and behavior changes are expected in future releases
102
+
103
+ pre-upload hooks:
104
+ required-fields: check whether a field is present and non-empty in the changes file
105
+ checksum: verify checksums before uploading
106
+ protected-distribution: warn before uploading to distributions where a special policy applies
107
+ lintian: runs lintian before the upload
108
+ gpg: check GnuPG signatures before the upload
109
+ allowed-distribution: check whether a local profile permits uploads to the target distribution
110
+ suite-mismatch: check the target distribution for common errors
111
+ supported-distribution: check whether the target distribution is currently supported (using distro-info)
112
+ check-debs: makes sure the upload contains a binary package
113
+
114
+ post-upload hooks:
115
+ impatient: Tell me when dinstall will pick this up
116
+ ```
117
+
118
+ # duploadとは
119
+
120
+ * dput,dput-ngと同様にアップロードするためのもの
121
+ * dput,dput-ngよりは機能が少なめ
122
+ * 設定(.dupload.conf)に従ってアナウンスメールを送信する機能あり
123
+ * .uploadがあればスキップしたり、チェックサムの確認機能ぐらい
124
+
125
+ # 利用可能なチェックを比較する
126
+
127
+ * dputで利用可能なチェック: 7
128
+ * dput-ngで利用可能なチェック: 10
129
+ * duploadで利用可能なチェック: (省略)
130
+
131
+ # dputで利用可能なチェック(1)
132
+
133
+ * Unique upload
134
+ * アップロードしたときのログがあればアップロードを中断する
135
+ * Required package files
136
+ * 必要なファイルが含まれていないときにアップロードを中断する
137
+ * Successful local install
138
+ * パッケージをインストールした状態でないときにアップロードを中断する(既定で無効)
139
+
140
+ # dputで利用可能なチェック(2)
141
+
142
+ * Cryptographic signature
143
+ * GPG署名していないときにアップロードを中断する(既定で有効)
144
+ * Package files content match
145
+ * サイズやハッシュ値が一致していないときにアップロードを中断する(既定で有効)
146
+
147
+ # dputで利用可能なチェック(3)
148
+
149
+ * Distribution name is permitted for the remote host
150
+ * アップロード先が許容しないdistributionの場合にアップロードを中断する(サーバー側設定に依存)
151
+ * Lintian success
152
+ * lintianが失敗したときにアップロードを中断する(既定で無効)
153
+
154
+ # dput-ngで利用できるフック(1)
155
+
156
+ * allowed-distribution
157
+ * プロファイルに応じてアップロードしてもよいかチェックする
158
+ * 例: debian/changelogでUNRELEASEDのままアップロードしようとしたら止める
159
+
160
+ * check-debsフック
161
+ * ソース or バイナリどちらが含まれるべきかチェックする
162
+ * 例: PPAにバイナリパッケージをアップロードしようとするとエラー
163
+
164
+ # dput-ngで利用できるフック(2)
165
+
166
+ * checksumフック
167
+ * アップロード前のパッケージのチェックサムがあっているかをチェックする
168
+ * gpgフック
169
+ * アップロード前にGnuPGで署名してあるかをチェックする
170
+ * 署名していなかったら署名をうながし、アップロードできる
171
+
172
+ # dput-ngで利用できるフック(2)
173
+
174
+ * impatientフック
175
+ * 次にdinstallが実行されるまでの時間を通知する
176
+
177
+ * lintianフック
178
+ * アップロード前にlintianを実行する
179
+
180
+ # dput-ngで利用できるフック(3)
181
+
182
+ * protected-distributionフック
183
+ * 特別なポリシーが適用されるところへのアップロード前に警告する
184
+ * 例: testing-proposed-updates, proposed-updates, oldstable, stable, testing, stable-security, oldstable-security, testing-securityなどにアップロードしようとしたときに確認が求められる
185
+
186
+ # dput-ngで利用できるフック(4)
187
+
188
+ * required-fieldsフック
189
+ * 指定された項目があるかをチェックする
190
+ * 例:.changesファイルにプロファイルで定義したrequired-fieldsに指定されたものが含まれていないと警告する
191
+
192
+ # dput-ngで利用できるフック(4)
193
+
194
+ * suite-mismatchフック
195
+ * changelogと.changesのディストリビューションが一致しない場合、警告する
196
+ * 例: unstableでexperimentalが混在しているとき
197
+
198
+ * supported-distributionフック
199
+ * .changesのDistributionがサポートされていないときに警告する
200
+ * 例: サポートの有無はpython3-distro-infoを使って/usr/share/distro-info/debian.csvを参照する
201
+
202
+ # サンプルとして利用できるフック
203
+
204
+ * bd-blacklist
205
+ * Build-Dependsに対象が含まれていたら失敗する
206
+ * clojure-arno-tester
207
+ * メンテナーがarno@debian.orgだったら失敗する
208
+ * twitter
209
+ * アップロード後にtweetする
210
+
211
+ # 各種ツールの機能比較(1)
212
+
213
+ | |dupload|dput|dput-ng|
214
+ |---|---|---|---|
215
+ |提供コマンド|dupload|dput,dcut|dput,dcut,**dirt**|
216
+ |設定ファイル|~/.dupload.conf|~/.dput.cf or ~/.config/dput/dput.cf|~/.dput.cf or 独自|
217
+
218
+ # 各種ツールの機能比較(2)
219
+
220
+ | |dupload|dput|dput-ng|
221
+ |フックの追加実装|❌非対応|❌非対応|✅対応|
222
+ |対応プロトコル|ftp,http,https,scp,scpb,**rsync**,copy|ftp,http,https,scp,**rsync**,local|ftp,http,https,scp,local|
223
+ |メール連携|✅対応|❌非対応|❌非対応|
224
+
225
+ # 各種ツールの機能比較(3)
226
+
227
+ | |dupload|dput|dput-ng|
228
+ |DMの権限操作|❌非対応|❌非対応|✅dcut追加機能|
229
+
230
+ # dcutによるDMの権限操作
231
+
232
+ * dput-ng版ではdcutでDMの許可を変更できる
233
+
234
+ ```
235
+ % dcut dm \
236
+ --uid 66DEF15282990C2199EFA801A8A128A8AB1CEE49 \
237
+ --allow zarchive
238
+ Uploading commands file to
239
+ ftp.upload.debian.org (incoming: /pub/UploadQueue/)
240
+ Picking DM Andrea Pappacoda
241
+ (Tachi's main key) <andrea@pappacoda.it>
242
+ with fingerprint 66DEF15282990C2199EFA801A8A128A8AB1CEE49
243
+ Uploading kenhys-1673679146.dak-commands to ftp-master
244
+ ```
245
+
246
+ # dput-ngでのプロファイルの考え方
247
+
248
+ * dputと互換性のないフォーマット(JSON)について
249
+ * メタ情報を拡張したものがプロファイル
250
+ * 例: debianというメタ情報からmentors-ftpプロファイルを派生
251
+ * 基本的な設定をメタ情報として定義し、サイトごとの設定をプロファイルで指定して上書きするイメージ
252
+
253
+ # dput-ngでのプロファイル設定例(1)
254
+
255
+ * <https://mentors.debian.net/intro-maintainers/>
256
+ * FTPの場合に~/.dput.cfに設定する内容
257
+
258
+ ```
259
+ [mentors-ftp]
260
+ fqdn = mentors.debian.net
261
+ login = anonymous
262
+ progress_indicator = 2
263
+ passive_ftp = 1
264
+ incoming = /pub/UploadQueue/
265
+ method = ftp
266
+ allow_unsigned_uploads = 0
267
+ # Allow uploads for UNRELEASED packages
268
+ allowed_distributions = .*
269
+ ```
270
+
271
+ # dput-ngでのプロファイル設定例(2)
272
+
273
+ * /etc/dput.d/profiles/mentors.json
274
+
275
+ ```
276
+ {
277
+ "-hooks": [
278
+ "check-debs",
279
+ "allowed-distribution"
280
+ ],
281
+ "allowed_distributions": ".*",
282
+ "fqdn": "mentors.debian.net",
283
+ "incoming": "/pub/UploadQueue/",
284
+ "login": "anonymous",
285
+ "meta": "debian",
286
+ "method": "ftp"
287
+ }
288
+ ```
289
+
290
+
291
+ # dput-ngでのプロファイル設定例(3)
292
+
293
+ * 継承元の/etc/dput.d/metas/debian.json定義
294
+
295
+ ```
296
+ {
297
+ "allow_dcut": true,
298
+ "allowed-distribution": {
299
+ "codename-groups": [
300
+ "general", "backport", "rm-managed"
301
+ ]
302
+ },
303
+ "codenames": "debian",
304
+ "hooks": [
305
+ "allowed-distribution",
306
+ "protected-distribution",
307
+ "checksum",
308
+ "suite-mismatch",
309
+ "gpg"
310
+ ],
311
+ ...(省略)...
312
+ }
313
+ ```
314
+
315
+
316
+ # 結局、どれを使うのがよいのか? (1)
317
+
318
+ * dupload
319
+ * ✅メール連携が使いたい
320
+ * ✅シンプルな機能で十分派
321
+ * ❌チェック機能は少なめ
322
+
323
+ # 結局、どれを使うのがよいのか? (2)
324
+
325
+ * dput
326
+ * ✅メジャーなものを使いたい派
327
+ * ✅チェックはdputのもので十分派
328
+ * ❌DMの権限変更もしたい
329
+
330
+ # 結局、どれを使うのがよいのか? (3)
331
+
332
+ * dput-ng
333
+ * ✅チェック機能を強化したい派
334
+ * ✅アップロード時に署名もまとめて実行したい
335
+ * ✅DMの権限変更もしたい
336
+ * ❌rsyncでアップロード必須
337
+
338
+ # さいごに
339
+
340
+ * dputとdput-ng、設定ファイルの互換性あるものの機能性に違いあり
341
+ * アップロード時に署名もできるのでdput-ngオススメ
342
+
343
+ # 参考資料(1)
344
+
345
+ * <https://manpages.debian.org/unstable/dput/index.html>
346
+ * dput(1)
347
+ * dcut(1)
348
+ * dput.cf(5)
349
+
350
+ # 参考資料(2)
351
+
352
+ * <https://manpages.debian.org/unstable/dput-ng/index.html>
353
+ * dput(1)
354
+ * dput(5) dput-ngの独自設定フォーマットについて知るのによい
355
+ * dcut(1) dmサブコマンドの使い方について
356
+ * dput.cf(5)
357
+
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-kenhys-tokyodebian-dputng-howto-202301
3
+ version: !ruby/object:Gem::Version
4
+ version: 2023.01.21.1
5
+ platform: ruby
6
+ authors:
7
+ - Kentaro Hayashi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-01-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ description: ''
28
+ email:
29
+ - kenhys@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rabbit"
35
+ - README.md
36
+ - Rakefile
37
+ - config.yaml
38
+ - images/popcon-dput-ng.png
39
+ - images/popcon-dput.png
40
+ - images/popcon-dupload.png
41
+ - pdf/tokyodebian-dputng-howto-202301-tokyodebian-dputng-howto.pdf
42
+ - theme.rb
43
+ - tokyodebian-dputng-howto.md
44
+ homepage: https://slide.rabbit-shocker.org/authors/kenhys/tokyodebian-dputng-howto-202301/
45
+ licenses:
46
+ - CC-BY-SA-4.0
47
+ metadata: {}
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubygems_version: 3.4.1
64
+ signing_key:
65
+ specification_version: 4
66
+ summary: Tokyo Debian dput, dput-ng Howto 202301
67
+ test_files: []