rabbit-slide-kenhys-tokyodebian-timet-transition-202404 2024.04.20.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: dfded33b92cd01db0d9694e160cbdfb0719c0f7cd4629047d0ea7ea6a0cd88d0
4
+ data.tar.gz: dc5d0a5586c5cb252e9948fbfb14f3b641e64987da2459ecb45e45a72f8612b6
5
+ SHA512:
6
+ metadata.gz: 814e1d02a09d22efaf1f2acb80fafc94e182c9680da75ea715423b34ecc7d3649e1cf1254baa889112e3e6460ad0115b0b22ae233af274c9198f12991d4a3a54
7
+ data.tar.gz: 5817a31f35c0d8d51bc9234d64df7e25565761f61200eeff9be01d5b1100c95a670c32f89ae35b92fea1be043dc572c1ca0dfcffb5cb591c4172a94b50e72d77
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ --size=1920,1080 timet-transition.md
data/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # Tokyo Debian 64bit time_t transition
2
+
3
+ ## How to show
4
+
5
+ % rabbit
6
+
7
+ ## How to install
8
+
9
+ % gem install rabbit-slide-kenhys-tokyodebian-timet-transition-202404
10
+
11
+ ## How to create PDF
12
+
13
+ % rake pdf
14
+
15
+
16
+ # References
17
+
18
+ * time_t transition and bugs
19
+ * https://lists.debian.org/debian-devel/2024/03/msg00026.html
20
+ * time_tの進展状況に疑問を呈する投稿
21
+ * Re: 64-bit time_t transition in progress in unstable
22
+ * https://lists.debian.org/debian-devel/2024/03/msg00090.html
23
+ * dist-upgradeできないことに対する反応 libuuid1t64がrevertされたことによる影響などの話題
24
+ * Re: Re: time_t progress report
25
+ * https://lists.debian.org/debian-devel/2024/03/msg00289.html
26
+ * マイルストーンの進展状況に関する疑念に関する投稿 ブロッカーの進展が数週間ないことについて
27
+ * https://lists.debian.org/debian-devel/2024/03/msg00291.html
28
+ * 状況を改善するためにできることについての意見
data/Rakefile ADDED
@@ -0,0 +1,24 @@
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
18
+
19
+ desc "Generate graph"
20
+ task :graph do
21
+ sh("debtree", "--no-recommends", "--skiplist=groonga.skip", "groonga", {out: "groonga.no-recommends.dot"}) do |out, status|
22
+ sh("dot", "-Tsvg", "groonga.no-recommends.dot", "-o", "images/groonga.no-recommends.svg")
23
+ end
24
+ end
data/config.yaml ADDED
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: tokyodebian-timet-transition-202404
3
+ base_name: timet-transition
4
+ tags:
5
+ - rabbit
6
+ - debian
7
+ presentation_date: 2024-04-20
8
+ presentation_start_time:
9
+ presentation_end_time:
10
+ slideshare_id:
11
+ version: 2024.04.20.1
12
+ licenses:
13
+ - CC-BY-SA-4.0
14
+ slideshare_id: kenhys
15
+ speaker_deck_id:
16
+ vimeo_id:
17
+ youtube_id:
18
+ author:
19
+ markup_language: :md
20
+ name: Kentaro Hayashi
21
+ email: kenhys@gmail.com
22
+ rubygems_user: kenhys
23
+ slideshare_user:
24
+ speaker_deck_user: kenhys
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,245 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <!-- Generated by graphviz version 2.43.0 (0)
5
+ -->
6
+ <!-- Title: groonga Pages: 1 -->
7
+ <svg width="1040pt" height="530pt"
8
+ viewBox="0.00 0.00 1040.00 530.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 526)">
10
+ <title>groonga</title>
11
+ <polygon fill="white" stroke="transparent" points="-4,4 -4,-526 1036,-526 1036,4 -4,4"/>
12
+ <!-- groonga -->
13
+ <g id="node1" class="node">
14
+ <title>groonga</title>
15
+ <polygon fill="none" stroke="black" stroke-width="2" points="75,-192 0,-192 0,-156 75,-156 75,-192"/>
16
+ <text text-anchor="middle" x="37.5" y="-170.3" font-family="Times,serif" font-size="14.00">groonga</text>
17
+ </g>
18
+ <!-- groonga&#45;bin -->
19
+ <g id="node2" class="node">
20
+ <title>groonga&#45;bin</title>
21
+ <polygon fill="none" stroke="black" points="383.5,-132 281.5,-132 281.5,-96 383.5,-96 383.5,-132"/>
22
+ <text text-anchor="middle" x="332.5" y="-110.3" font-family="Times,serif" font-size="14.00">groonga&#45;bin</text>
23
+ </g>
24
+ <!-- groonga&#45;&gt;groonga&#45;bin -->
25
+ <g id="edge1" class="edge">
26
+ <title>groonga&#45;&gt;groonga&#45;bin</title>
27
+ <path fill="none" stroke="blue" d="M75.02,-166.52C124.18,-156.46 212.28,-138.41 271.31,-126.33"/>
28
+ <polygon fill="blue" stroke="blue" points="272.16,-129.72 281.25,-124.29 270.75,-122.87 272.16,-129.72"/>
29
+ <text text-anchor="middle" x="157.5" y="-165.8" font-family="Times,serif" font-size="14.00">(= 13.1.1+dfsg&#45;3)</text>
30
+ </g>
31
+ <!-- groonga&#45;plugin&#45;suggest -->
32
+ <g id="node10" class="node">
33
+ <title>groonga&#45;plugin&#45;suggest</title>
34
+ <polygon fill="none" stroke="black" points="425,-252 240,-252 240,-216 425,-216 425,-252"/>
35
+ <text text-anchor="middle" x="332.5" y="-230.3" font-family="Times,serif" font-size="14.00">groonga&#45;plugin&#45;suggest</text>
36
+ </g>
37
+ <!-- groonga&#45;&gt;groonga&#45;plugin&#45;suggest -->
38
+ <g id="edge10" class="edge">
39
+ <title>groonga&#45;&gt;groonga&#45;plugin&#45;suggest</title>
40
+ <path fill="none" stroke="blue" d="M75.02,-181.48C114.44,-189.55 178.91,-202.75 233.35,-213.9"/>
41
+ <polygon fill="blue" stroke="blue" points="232.89,-217.38 243.39,-215.96 234.3,-210.52 232.89,-217.38"/>
42
+ <text text-anchor="middle" x="157.5" y="-214.8" font-family="Times,serif" font-size="14.00">(= 13.1.1+dfsg&#45;3)</text>
43
+ </g>
44
+ <!-- libgroonga0t64 -->
45
+ <g id="node3" class="node">
46
+ <title>libgroonga0t64</title>
47
+ <polygon fill="none" stroke="black" points="722.5,-169 596.5,-169 596.5,-133 722.5,-133 722.5,-169"/>
48
+ <text text-anchor="middle" x="659.5" y="-147.3" font-family="Times,serif" font-size="14.00">libgroonga0t64</text>
49
+ </g>
50
+ <!-- groonga&#45;bin&#45;&gt;libgroonga0t64 -->
51
+ <g id="edge2" class="edge">
52
+ <title>groonga&#45;bin&#45;&gt;libgroonga0t64</title>
53
+ <path fill="none" stroke="blue" d="M383.95,-116.18C432.37,-118.7 507.45,-123.75 572,-133 576.69,-133.67 581.5,-134.44 586.35,-135.28"/>
54
+ <polygon fill="blue" stroke="blue" points="585.84,-138.74 596.3,-137.08 587.08,-131.86 585.84,-138.74"/>
55
+ <text text-anchor="middle" x="507.5" y="-136.8" font-family="Times,serif" font-size="14.00">(= 13.1.1+dfsg&#45;3)</text>
56
+ </g>
57
+ <!-- libjs&#45;jquery -->
58
+ <g id="node8" class="node">
59
+ <title>libjs&#45;jquery</title>
60
+ <polygon fill="none" stroke="black" points="1015,-36 918,-36 918,0 1015,0 1015,-36"/>
61
+ <text text-anchor="middle" x="966.5" y="-14.3" font-family="Times,serif" font-size="14.00">libjs&#45;jquery</text>
62
+ </g>
63
+ <!-- groonga&#45;bin&#45;&gt;libjs&#45;jquery -->
64
+ <g id="edge7" class="edge">
65
+ <title>groonga&#45;bin&#45;&gt;libjs&#45;jquery</title>
66
+ <path fill="none" stroke="blue" d="M383.67,-97.01C402.21,-90.98 423.47,-84.37 443,-79 507.66,-61.22 523.75,-55.35 590,-45 659.18,-34.19 677.17,-37.13 747,-32 801.4,-28.01 863.47,-24.09 907.51,-21.42"/>
67
+ <polygon fill="blue" stroke="blue" points="907.97,-24.9 917.74,-20.8 907.55,-17.91 907.97,-24.9"/>
68
+ </g>
69
+ <!-- libjs&#45;jquery&#45;flot -->
70
+ <g id="node9" class="node">
71
+ <title>libjs&#45;jquery&#45;flot</title>
72
+ <polygon fill="none" stroke="black" points="722,-90 597,-90 597,-54 722,-54 722,-90"/>
73
+ <text text-anchor="middle" x="659.5" y="-68.3" font-family="Times,serif" font-size="14.00">libjs&#45;jquery&#45;flot</text>
74
+ </g>
75
+ <!-- groonga&#45;bin&#45;&gt;libjs&#45;jquery&#45;flot -->
76
+ <g id="edge8" class="edge">
77
+ <title>groonga&#45;bin&#45;&gt;libjs&#45;jquery&#45;flot</title>
78
+ <path fill="none" stroke="blue" d="M383.57,-107.53C437.96,-100.5 525.33,-89.21 586.95,-81.25"/>
79
+ <polygon fill="blue" stroke="blue" points="587.52,-84.7 596.99,-79.95 586.63,-77.76 587.52,-84.7"/>
80
+ </g>
81
+ <!-- liblz4&#45;1 -->
82
+ <g id="node4" class="node">
83
+ <title>liblz4&#45;1</title>
84
+ <polygon fill="none" stroke="black" points="1001,-144 932,-144 932,-108 1001,-108 1001,-144"/>
85
+ <text text-anchor="middle" x="966.5" y="-122.3" font-family="Times,serif" font-size="14.00">liblz4&#45;1</text>
86
+ </g>
87
+ <!-- libgroonga0t64&#45;&gt;liblz4&#45;1 -->
88
+ <g id="edge3" class="edge">
89
+ <title>libgroonga0t64&#45;&gt;liblz4&#45;1</title>
90
+ <path fill="none" stroke="blue" d="M722.53,-133.37C730.7,-131.59 739.01,-130.06 747,-129 807.06,-121.06 877.22,-121.86 921.5,-123.58"/>
91
+ <polygon fill="blue" stroke="blue" points="921.49,-127.09 931.63,-124.01 921.79,-120.09 921.49,-127.09"/>
92
+ <text text-anchor="middle" x="815" y="-132.8" font-family="Times,serif" font-size="14.00">(&gt;= 0.0~r130)</text>
93
+ </g>
94
+ <!-- libmsgpackc2 -->
95
+ <g id="node5" class="node">
96
+ <title>libmsgpackc2</title>
97
+ <polygon fill="none" stroke="black" points="1023.5,-252 909.5,-252 909.5,-216 1023.5,-216 1023.5,-252"/>
98
+ <text text-anchor="middle" x="966.5" y="-230.3" font-family="Times,serif" font-size="14.00">libmsgpackc2</text>
99
+ </g>
100
+ <!-- libgroonga0t64&#45;&gt;libmsgpackc2 -->
101
+ <g id="edge4" class="edge">
102
+ <title>libgroonga0t64&#45;&gt;libmsgpackc2</title>
103
+ <path fill="none" stroke="blue" d="M706.26,-169.1C719.28,-173.78 733.57,-178.49 747,-182 806.31,-197.51 823.65,-189.67 883,-205 891.44,-207.18 900.24,-209.84 908.82,-212.65"/>
104
+ <polygon fill="blue" stroke="blue" points="907.78,-216 918.37,-215.88 910.02,-209.37 907.78,-216"/>
105
+ <text text-anchor="middle" x="815" y="-208.8" font-family="Times,serif" font-size="14.00">(&gt;= 2.1.0)</text>
106
+ </g>
107
+ <!-- libzstd1 -->
108
+ <g id="node6" class="node">
109
+ <title>libzstd1</title>
110
+ <polygon fill="none" stroke="black" points="1003.5,-90 929.5,-90 929.5,-54 1003.5,-54 1003.5,-90"/>
111
+ <text text-anchor="middle" x="966.5" y="-68.3" font-family="Times,serif" font-size="14.00">libzstd1</text>
112
+ </g>
113
+ <!-- libgroonga0t64&#45;&gt;libzstd1 -->
114
+ <g id="edge5" class="edge">
115
+ <title>libgroonga0t64&#45;&gt;libzstd1</title>
116
+ <path fill="none" stroke="blue" d="M686.97,-132.96C703.52,-122.56 725.67,-110.16 747,-103 804.46,-83.72 874.33,-76.43 919.34,-73.67"/>
117
+ <polygon fill="blue" stroke="blue" points="919.6,-77.17 929.39,-73.11 919.21,-70.18 919.6,-77.17"/>
118
+ <text text-anchor="middle" x="815" y="-106.8" font-family="Times,serif" font-size="14.00">(&gt;= 1.5.5)</text>
119
+ </g>
120
+ <!-- zlib1g -->
121
+ <g id="node7" class="node">
122
+ <title>zlib1g</title>
123
+ <polygon fill="none" stroke="black" points="996.5,-198 936.5,-198 936.5,-162 996.5,-162 996.5,-198"/>
124
+ <text text-anchor="middle" x="966.5" y="-176.3" font-family="Times,serif" font-size="14.00">zlib1g</text>
125
+ </g>
126
+ <!-- libgroonga0t64&#45;&gt;zlib1g -->
127
+ <g id="edge6" class="edge">
128
+ <title>libgroonga0t64&#45;&gt;zlib1g</title>
129
+ <path fill="none" stroke="blue" d="M722.97,-154.08C767.64,-156.62 829.13,-160.83 883,-167 897.12,-168.62 912.52,-170.9 926.15,-173.11"/>
130
+ <polygon fill="blue" stroke="blue" points="925.74,-176.59 936.18,-174.76 926.89,-169.68 925.74,-176.59"/>
131
+ <text text-anchor="middle" x="815" y="-170.8" font-family="Times,serif" font-size="14.00">(&gt;= 1:1.2.0)</text>
132
+ </g>
133
+ <!-- libjs&#45;jquery&#45;flot&#45;&gt;libjs&#45;jquery -->
134
+ <g id="edge9" class="edge">
135
+ <title>libjs&#45;jquery&#45;flot&#45;&gt;libjs&#45;jquery</title>
136
+ <path fill="none" stroke="blue" d="M722.22,-61.07C776.51,-51.46 854.94,-37.58 907.95,-28.19"/>
137
+ <polygon fill="blue" stroke="blue" points="908.63,-31.62 917.86,-26.43 907.41,-24.73 908.63,-31.62"/>
138
+ </g>
139
+ <!-- groonga&#45;plugin&#45;suggest&#45;&gt;libgroonga0t64 -->
140
+ <g id="edge12" class="edge">
141
+ <title>groonga&#45;plugin&#45;suggest&#45;&gt;libgroonga0t64</title>
142
+ <path fill="none" stroke="blue" d="M400.93,-215.99C414.83,-212.32 429.38,-208.51 443,-205 490.72,-192.7 544.48,-179.23 586.37,-168.82"/>
143
+ <polygon fill="blue" stroke="blue" points="587.34,-172.18 596.2,-166.38 585.66,-165.39 587.34,-172.18"/>
144
+ <text text-anchor="middle" x="507.5" y="-208.8" font-family="Times,serif" font-size="14.00">(= 13.1.1+dfsg&#45;3)</text>
145
+ </g>
146
+ <!-- groonga&#45;plugin&#45;suggest&#45;&gt;libmsgpackc2 -->
147
+ <g id="edge13" class="edge">
148
+ <title>groonga&#45;plugin&#45;suggest&#45;&gt;libmsgpackc2</title>
149
+ <path fill="none" stroke="blue" d="M425.06,-234C553.77,-234 785.17,-234 898.82,-234"/>
150
+ <polygon fill="blue" stroke="blue" points="899.11,-237.5 909.11,-234 899.11,-230.5 899.11,-237.5"/>
151
+ <text text-anchor="middle" x="659.5" y="-237.8" font-family="Times,serif" font-size="14.00">(&gt;= 2.1.0)</text>
152
+ </g>
153
+ <!-- libevent&#45;2.1&#45;7t64 -->
154
+ <g id="node11" class="node">
155
+ <title>libevent&#45;2.1&#45;7t64</title>
156
+ <polygon fill="none" stroke="black" points="729,-303 590,-303 590,-267 729,-267 729,-303"/>
157
+ <text text-anchor="middle" x="659.5" y="-281.3" font-family="Times,serif" font-size="14.00">libevent&#45;2.1&#45;7t64</text>
158
+ </g>
159
+ <!-- groonga&#45;plugin&#45;suggest&#45;&gt;libevent&#45;2.1&#45;7t64 -->
160
+ <g id="edge11" class="edge">
161
+ <title>groonga&#45;plugin&#45;suggest&#45;&gt;libevent&#45;2.1&#45;7t64</title>
162
+ <path fill="none" stroke="blue" d="M425.33,-248.41C474.03,-256.05 533.25,-265.35 579.83,-272.65"/>
163
+ <polygon fill="blue" stroke="blue" points="579.44,-276.14 589.86,-274.23 580.53,-269.22 579.44,-276.14"/>
164
+ <text text-anchor="middle" x="507.5" y="-274.8" font-family="Times,serif" font-size="14.00">(&gt;= 2.1.8&#45;stable)</text>
165
+ </g>
166
+ <!-- libzmq5 -->
167
+ <g id="node12" class="node">
168
+ <title>libzmq5</title>
169
+ <polygon fill="none" stroke="black" points="696.5,-387 622.5,-387 622.5,-351 696.5,-351 696.5,-387"/>
170
+ <text text-anchor="middle" x="659.5" y="-365.3" font-family="Times,serif" font-size="14.00">libzmq5</text>
171
+ </g>
172
+ <!-- groonga&#45;plugin&#45;suggest&#45;&gt;libzmq5 -->
173
+ <g id="edge14" class="edge">
174
+ <title>groonga&#45;plugin&#45;suggest&#45;&gt;libzmq5</title>
175
+ <path fill="none" stroke="blue" d="M366.54,-252.23C388.01,-263.73 416.78,-278.54 443,-290 500.37,-315.07 568.49,-339.13 612.56,-353.97"/>
176
+ <polygon fill="blue" stroke="blue" points="611.54,-357.32 622.13,-357.17 613.76,-350.68 611.54,-357.32"/>
177
+ <text text-anchor="middle" x="507.5" y="-342.8" font-family="Times,serif" font-size="14.00">(&gt;= 3.2.3+dfsg)</text>
178
+ </g>
179
+ <!-- libbsd0 -->
180
+ <g id="node13" class="node">
181
+ <title>libbsd0</title>
182
+ <polygon fill="none" stroke="black" points="1001,-414 932,-414 932,-378 1001,-378 1001,-414"/>
183
+ <text text-anchor="middle" x="966.5" y="-392.3" font-family="Times,serif" font-size="14.00">libbsd0</text>
184
+ </g>
185
+ <!-- libzmq5&#45;&gt;libbsd0 -->
186
+ <g id="edge15" class="edge">
187
+ <title>libzmq5&#45;&gt;libbsd0</title>
188
+ <path fill="none" stroke="blue" d="M696.69,-372.2C752.92,-377.18 861.11,-386.76 921.68,-392.12"/>
189
+ <polygon fill="blue" stroke="blue" points="921.43,-395.61 931.7,-393.01 922.04,-388.64 921.43,-395.61"/>
190
+ <text text-anchor="middle" x="815" y="-391.8" font-family="Times,serif" font-size="14.00">(&gt;= 0.0)</text>
191
+ </g>
192
+ <!-- libgssapi&#45;krb5&#45;2 -->
193
+ <g id="node14" class="node">
194
+ <title>libgssapi&#45;krb5&#45;2</title>
195
+ <polygon fill="none" stroke="black" points="1032,-360 901,-360 901,-324 1032,-324 1032,-360"/>
196
+ <text text-anchor="middle" x="966.5" y="-338.3" font-family="Times,serif" font-size="14.00">libgssapi&#45;krb5&#45;2</text>
197
+ </g>
198
+ <!-- libzmq5&#45;&gt;libgssapi&#45;krb5&#45;2 -->
199
+ <g id="edge16" class="edge">
200
+ <title>libzmq5&#45;&gt;libgssapi&#45;krb5&#45;2</title>
201
+ <path fill="none" stroke="blue" d="M696.63,-363.42C712.11,-361.18 730.41,-358.72 747,-357 794.69,-352.06 848.42,-348.35 890.66,-345.85"/>
202
+ <polygon fill="blue" stroke="blue" points="891.08,-349.33 900.86,-345.26 890.68,-342.34 891.08,-349.33"/>
203
+ <text text-anchor="middle" x="815" y="-360.8" font-family="Times,serif" font-size="14.00">(&gt;= 1.17)</text>
204
+ </g>
205
+ <!-- libnorm1t64 -->
206
+ <g id="node15" class="node">
207
+ <title>libnorm1t64</title>
208
+ <polygon fill="none" stroke="black" points="1019,-306 914,-306 914,-270 1019,-270 1019,-306"/>
209
+ <text text-anchor="middle" x="966.5" y="-284.3" font-family="Times,serif" font-size="14.00">libnorm1t64</text>
210
+ </g>
211
+ <!-- libzmq5&#45;&gt;libnorm1t64 -->
212
+ <g id="edge17" class="edge">
213
+ <title>libzmq5&#45;&gt;libnorm1t64</title>
214
+ <path fill="none" stroke="blue" d="M692.48,-350.85C708.42,-342.49 728.27,-333.09 747,-327 798.51,-310.26 859.32,-300.14 903.69,-294.42"/>
215
+ <polygon fill="blue" stroke="blue" points="904.26,-297.88 913.75,-293.17 903.39,-290.93 904.26,-297.88"/>
216
+ <text text-anchor="middle" x="815" y="-330.8" font-family="Times,serif" font-size="14.00">(&gt;= 1.5r6)</text>
217
+ </g>
218
+ <!-- libpgm&#45;5.3&#45;0t64 -->
219
+ <g id="node16" class="node">
220
+ <title>libpgm&#45;5.3&#45;0t64</title>
221
+ <polygon fill="none" stroke="black" points="1032,-522 901,-522 901,-486 1032,-486 1032,-522"/>
222
+ <text text-anchor="middle" x="966.5" y="-500.3" font-family="Times,serif" font-size="14.00">libpgm&#45;5.3&#45;0t64</text>
223
+ </g>
224
+ <!-- libzmq5&#45;&gt;libpgm&#45;5.3&#45;0t64 -->
225
+ <g id="edge18" class="edge">
226
+ <title>libzmq5&#45;&gt;libpgm&#45;5.3&#45;0t64</title>
227
+ <path fill="none" stroke="blue" d="M673.29,-387.03C688.51,-407.07 715.82,-438.88 747,-456 791.21,-480.28 846.81,-492.28 890.85,-498.21"/>
228
+ <polygon fill="blue" stroke="blue" points="890.56,-501.7 900.92,-499.49 891.44,-494.76 890.56,-501.7"/>
229
+ <text text-anchor="middle" x="815" y="-499.8" font-family="Times,serif" font-size="14.00">(&gt;= 5.1.116~dfsg)</text>
230
+ </g>
231
+ <!-- libsodium23 -->
232
+ <g id="node17" class="node">
233
+ <title>libsodium23</title>
234
+ <polygon fill="none" stroke="black" points="1018.5,-468 914.5,-468 914.5,-432 1018.5,-432 1018.5,-468"/>
235
+ <text text-anchor="middle" x="966.5" y="-446.3" font-family="Times,serif" font-size="14.00">libsodium23</text>
236
+ </g>
237
+ <!-- libzmq5&#45;&gt;libsodium23 -->
238
+ <g id="edge19" class="edge">
239
+ <title>libzmq5&#45;&gt;libsodium23</title>
240
+ <path fill="none" stroke="blue" d="M696.86,-387.1C712.06,-394.1 730.1,-401.7 747,-407 799.02,-423.33 860.03,-434.71 904.34,-441.65"/>
241
+ <polygon fill="blue" stroke="blue" points="903.96,-445.13 914.38,-443.19 905.02,-438.21 903.96,-445.13"/>
242
+ <text text-anchor="middle" x="815" y="-440.8" font-family="Times,serif" font-size="14.00">(&gt;= 1.0.3)</text>
243
+ </g>
244
+ </g>
245
+ </svg>
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,345 @@
1
+ # Debianの64bit time_t移行は\\n今どうなっているのか
2
+
3
+ subtitle
4
+ : 64bit time_tの進展状況をながめてみよう
5
+
6
+ author
7
+ : Kentaro Hayashi
8
+
9
+ institution
10
+ : ClearCode Inc.
11
+
12
+ content-source
13
+ : 2024年04月 東京エリア・関西合同Debian勉強会
14
+
15
+ allotted-time
16
+ : 25m
17
+
18
+ theme
19
+ : .
20
+
21
+ # スライドは\\nRabbit Slide Showにて公開済み
22
+
23
+ * Debianの64bit time_t移行は今どうなっているのか
24
+ * {::note}<https://slide.rabbit-shocker.org/authors/kenhys/tokyodebian-timet-transition-202404>{:/note}
25
+
26
+ # 本日の内容
27
+
28
+ * Debianの64bit time_t transitionを追いかけてみよう
29
+ * 64bit time_t移行はなぜ必要なのか
30
+ * 移行計画はどのようになっているのか
31
+ * 移行の進展状況は
32
+
33
+ ## note
34
+
35
+ 今日の発表の狙いは64bit time_tへの移行の状況を知ってもらって、自身が利用しているパッケージの
36
+ 対応がすすんでいないとか、パッケージがビルドできない問題を抱えているとかいうのを見つけたら
37
+ そういった対応作業の手助けをしてもらえるとよい
38
+
39
+ # 本日の内容
40
+
41
+ * Debianの64bit time_t transitionを追いかけてみよう
42
+ * **64bit time_t移行はなぜ必要なのか**
43
+ * 移行計画はどのようになっているのか
44
+ * 移行の進展状況は
45
+
46
+ # 64bit time_t移行はなぜ必要なのか
47
+
48
+ * Linuxディストリビューションの動向
49
+ * 32bitアーキテクチャのサポートは廃止ないしは縮小の流れ
50
+ * Debianではarmel,armhf,i386が残っている
51
+ * 32bit time_tのままでは2038年問題不可避
52
+ * signed 32bit で扱える範囲 (〜2147483647)
53
+
54
+ # 2038年問題
55
+
56
+ * Xデーは2038年1月19日
57
+ * time_tが32bitで時刻を保持しているため32bitアーキテクチャでオーバーフローが発生する問題
58
+
59
+ ```
60
+ Time.at(2147483647)
61
+ => 2038-01-19 12:14:07 +0900
62
+ ```
63
+
64
+ ## note
65
+
66
+ 2038年問題というが具体的にいつなのかというと1月19日の昼過ぎ(日本時間)
67
+ 2**31-1=2,147,483,647
68
+
69
+ # かつての2000年問題との比較
70
+
71
+ * 2000年問題
72
+ * 西暦下2桁処理で節約したリソースが問題を引き起こす
73
+ * 上記前提で実装されたアプリケーションによる障害発生
74
+ * 事前の対策が進められたことから大混乱は回避された
75
+ * 2038年問題
76
+ * システム全体で障害発生{::note}(32bitアーキテクチャにおいて){:/note}
77
+
78
+
79
+ # Debianにおける\\n2038年問題対策の構成要素
80
+
81
+ * カーネル
82
+ * glibc
83
+ * ファイルシステム
84
+ * アプリケーション/ライブラリー etc...
85
+
86
+ # 2038年問題を踏んだらどうなるか(1)
87
+
88
+
89
+ * シェルでの操作不能に陥る
90
+
91
+ * 試すならqemuイメージなどがおすすめ
92
+
93
+ ```
94
+ $ sudo date --set="2038-01-19 12:14:00"
95
+ Tue Jan 19 12:14:00 UTC 2038
96
+ $ sudo ls
97
+ sudo: unable to open /etc/sudo.conf: Value too large for defined data type
98
+ sudo: unable to determine tty: Value too large for defined data type
99
+ sudo: unable to get time of day: Value too large for defined data type
100
+ sudo: error initializing audit plugin sudoers_audit
101
+ ```
102
+
103
+
104
+ # Debianにおける\\n2038年問題対策の構成要素
105
+
106
+ * カーネル (kernel 5.6以降対応済み)
107
+ * glibc (2.34以降対応済み)
108
+ * ファイルシステム (ext4など対応済み)
109
+ * **アプリケーション/ライブラリー** etc...
110
+
111
+ ## note
112
+
113
+ https://www.lineo.co.jp/blog/yocto/vol03-2038.html
114
+ ext2は対応していないし、kernel 6.9でdeprecated扱いになった
115
+ /bootにext2使っている場合は注意が必要かも
116
+
117
+ https://www.phoronix.com/news/Linux-6.9-Deprecates-EXT2
118
+
119
+ # アプリケーション・ライブラリーの点検が必要
120
+
121
+ * 内部で時刻を扱うケースはないか?
122
+ * 時刻をどのように保存するようにしているか?
123
+
124
+ # 事例: Groongaの場合 (1)
125
+
126
+ * <https://github.com/groonga/groonga/discussions/1698>
127
+ * データベースで時刻を扱う型がある
128
+ * Timeカラムは int64_tでマイクロ秒を保持 => 問題なし
129
+
130
+ ```
131
+ Time.at(9223372036854775807 / 10**6)
132
+ => 294247-01-10 13:00:54 +0900
133
+ ```
134
+
135
+ # 事例: Groongaの場合 (2)
136
+
137
+ * データベースの内部表現(オブジェクトヘッダ)で時刻(更新)を扱う
138
+ * データベース内のオブジェクトを区別するためのシステム情報
139
+ * uint32_tなのでもうすこし頑張れる(2106年問題)
140
+
141
+ ```
142
+ Time.at(4294967295)
143
+ => 2106-02-07 15:28:15 +0900
144
+ ```
145
+
146
+
147
+ # 2038年問題を踏んだらどうなるか(2)
148
+
149
+ * 実験: Xデー以降にデータベースを更新する
150
+ * → データベース更新中にクラッシュする💣
151
+
152
+ ```
153
+ root@debian:/home/debian/bug1062131# date --set="2038-01-19 12:14:00"
154
+ Tue Jan 19 12:14:00 UTC 2038
155
+ root@debian:/home/debian/bug1062131# groonga db/test < update-last-modified.grn
156
+ Segmentation fault
157
+ ```
158
+
159
+ # 本日の内容
160
+
161
+ * Debianの64bit time_t transitionを追いかけてみよう
162
+ * 64bit time_t移行はなぜ必要なのか
163
+ * **移行計画はどのようになっているのか**
164
+ * 移行の進展状況は
165
+
166
+ # Debianにおける64bit time_t transition (1)
167
+
168
+ * <https://wiki.debian.org/ReleaseGoals/64bit-time>
169
+
170
+ * ✅ transitionが必要なABIの変更対象をリストアップする
171
+ * <https://lists.debian.org/debian-devel/2023/05/msg00168.html>
172
+ * 当初少なくとも4900ソースパッケージが影響を受けると考えられていた
173
+ * ✅ dpkg-buildflagが-D_FILE_OFFSET_BITS=64と-D_TIME_BITS=64 を既定で有効にする(i386系を除く)
174
+ * dpkg 1.22.5以降で有効
175
+
176
+ # Debianにおける64bit time_t transition (2)
177
+
178
+ * ✅ NMUでライブラリー名変更を実施
179
+ * 進行中は依存関係を満たせずインストールできない、意図せず削除される等が発生
180
+ * ✅依存ライブラリーを大量にリビルドしなおす(進行中)
181
+
182
+
183
+ # NMUでライブラリー名変更を実施
184
+
185
+
186
+ * d/controlの例
187
+
188
+ ```diff
189
+ -Package: libfoo0
190
+ +Package: libfoo0t64
191
+ +Provides: ${t64:Provides}
192
+ +Replaces: libfoo0
193
+ +Breaks: libfoo0 (<< ${source:Version})
194
+ ```
195
+
196
+ # t64:Providesの役割
197
+
198
+ * debhelper 13.14で実装されているマクロ
199
+ * dh_makeshlibsを参照するとよい
200
+ * 32bitアーキテクチャでない or abi=time64が定義されていない
201
+ * 64bit time_t transition関係ないアーキテクチャではt64サフィックスなしのProvides:を定義
202
+ * t64:Providesに `libfoo0 = ${binary:Version}`を設定
203
+
204
+ ## note
205
+
206
+ libfoo0に依存しているパッケージがあって、libfoo0からlibfoo0t64へ円滑に
207
+ アップグレードできるようにするためのもの。
208
+
209
+ # i386で64bit time_tを\\n有効にするには
210
+
211
+ * <https://lists.debian.org/debian-devel/2024/02/msg00100.html>
212
+ * 従来i386では既定で64bit time_tは有効にしない
213
+ * パッケージのメンテナーが明示的に指定したら有効になる
214
+ * `DEB_BUILD_OPTIONS=abi=+time64`
215
+
216
+ # リリースチームやメンテナーの動き
217
+
218
+ * 64bit time_t移行のためのパッチをメンテナーに提供
219
+ * 各パッケージメンテナーは必要に応じてexperimentalでテスト
220
+ * NMUでライブラリー名変更まで実施済み
221
+ * メンテナーとしてはFTBFSとかに遭遇しなければとくになし
222
+
223
+ # 例: 依存関係の\\nトラブルシューティング
224
+
225
+ * 例えばbuild-depに失敗したときにどうやって調べるか
226
+
227
+ ```
228
+ $ apt build-dep groonga
229
+ dd-schroot-cmd -c $sid apt-get
230
+ Reading package lists...
231
+ Reading package lists...
232
+ Building dependency tree...
233
+ Reading state information...
234
+ ...
235
+
236
+ The following packages have unmet dependencies:
237
+ libnorm1t64 : Breaks: libnorm1 (< 1.5.9+dfsg-3.1) but 1.5.9+dfsg-3 is to be installed
238
+ libpgm-5.3-0t64 : Breaks: libpgm-5.3-0 (< 5.3.128~dfsg-2.1) but 5.3.128~dfsg-2 is to be installed
239
+ E: Unable to correct problems, you have held broken packages.
240
+ Command apt-get --dry-run build-dep -- groonga exited with exit code 1.
241
+ ```
242
+
243
+ # 依存関係を調べるのに便利なもの
244
+
245
+ * apt depends
246
+ * 直接の依存関係を知るのに便利
247
+ * 再帰的な依存関係は一度ではわからない
248
+ * apt-rdepends
249
+ * 再帰的な依存関係もわかる
250
+ * debtree
251
+ * 再帰的な依存関係を可視化できる
252
+
253
+ # debtreeによる依存関係の可視化
254
+
255
+ * 例: groongaの依存関係を可視化
256
+
257
+ ```
258
+ debtree --no-recommends groonga > groonga.dot
259
+ dot -Tsvg groonga.dot > groonga.svg
260
+ ```
261
+
262
+ # debtreeで可視化(一部省略)
263
+
264
+ ![](images/groonga.no-recommends.svg){:relative-height="100"}
265
+
266
+ # debtreeで可視化するときのヒント
267
+
268
+ * `--no-recommends`を指定して余計な依存関係を省く
269
+ * `--skiplist=`を指定して特定の依存先を省く
270
+ * libc6やドキュメント関係を指定するとわかりやすくなる
271
+
272
+ ```
273
+ python3-sphinx
274
+ groonga-doc
275
+ libc6
276
+ gcc-14-base
277
+ ...
278
+ ```
279
+
280
+ # 本日の内容
281
+
282
+ * Debianの64bit time_t transitionを追いかけてみよう
283
+ * 64bit time_t移行はなぜ必要なのか
284
+ * 移行計画はどのようになっているのか
285
+ * **移行の進展状況は**
286
+
287
+ # 64bit time_t transitionの進捗状況
288
+
289
+ * <https://bugs.debian.org/cgi-bin/pkgreport.cgi?users=debian-arm@lists.debian.org;tag=time-t>
290
+ * time-t でタグ付けされているバグを参照するとよい
291
+ * すでに1100近くNMUされている
292
+ * debian-develメーリングリストを購読していると定期的に進捗報告あり
293
+
294
+ ## note
295
+
296
+
297
+ # 64bit time_t transitionの進捗状況
298
+
299
+ * <https://qa.debian.org/dose/debcheck/unstable_main/index.html>
300
+ * Packages not installable in scenario unstable_main
301
+ * transition中は頻繁に衝突する
302
+ * => リビルド状況の変化は64bit time_t移行の進展をみるのに使えそう
303
+
304
+ # およそ一ヶ月ほど前 2024/03/15
305
+
306
+ ![](images/debcheck20240315.jpeg){:relative-height="100"}
307
+
308
+ # 先週の状況 2024/04/10
309
+
310
+ ![](images/debcheck20240410.min.png){:relative-height="100"}
311
+
312
+ # 今週の状況 2024/04/15
313
+
314
+ ![](images/debcheck20240415.min.png){:relative-height="100"}
315
+
316
+ # dpkgはまだ移行できていない
317
+
318
+ ![](images/dpkg-testing-migrations.png){:relative-height="70"}
319
+
320
+ * dpkg 1.22.5 はまだtestingに入っていない
321
+ * dpkg >= 1.22.5の指定があるものもtestingに入らない
322
+
323
+ # 移行進捗の停滞ぎみ(1)
324
+
325
+ * <https://lists.debian.org/debian-devel/2024/04/msg00331.html>
326
+ * そもそもインストールできない状態のまま
327
+ * FTBFSだけどバグが立っていないので見落とされている
328
+ * 移行前のライブラリ名がハードコーディングされている
329
+ * 移行前と移行後のライブラリー双方への依存で衝突
330
+
331
+ # 移行進捗の停滞ぎみ(2)
332
+
333
+ * 完全に依存先の問題が解消される前にリビルドされた(ので古い)
334
+ * symbol/shlibsが正しくない依存関係になっている
335
+ * まだbinNMUされていない
336
+
337
+ # 64bit time_tでの懸念事項
338
+
339
+ * <https://lists.debian.org/debian-devel/2024/03/msg00294.html>
340
+ * transitionを進めるため、機能を無効化することがある。再度有効化しないと機能差が発生するかも
341
+ * FTBFSが原因でパッケージが削除される方向にすすむことがある
342
+ * FTBFSが原因でパッケージが32bitアーキテクチャのサポートをやめてしまうことがある
343
+ * 使っているパッケージが該当していないかは注視が必要
344
+
345
+
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-kenhys-tokyodebian-timet-transition-202404
3
+ version: !ruby/object:Gem::Version
4
+ version: 2024.04.20.1
5
+ platform: ruby
6
+ authors:
7
+ - Kentaro Hayashi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-04-20 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/debcheck20240315.jpeg
39
+ - images/debcheck20240406.png
40
+ - images/debcheck20240408.png
41
+ - images/debcheck20240410.min.png
42
+ - images/debcheck20240410.png
43
+ - images/debcheck20240415.min.png
44
+ - images/debcheck20240415.png
45
+ - images/dpkg-testing-migrations.png
46
+ - images/groonga.no-recommends.svg
47
+ - pdf/tokyodebian-timet-transition-202404-timet-transition.pdf
48
+ - theme.rb
49
+ - timet-transition.md
50
+ homepage: https://slide.rabbit-shocker.org/authors/kenhys/tokyodebian-timet-transition-202404/
51
+ licenses:
52
+ - CC-BY-SA-4.0
53
+ metadata: {}
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ requirements: []
69
+ rubygems_version: 3.3.26
70
+ signing_key:
71
+ specification_version: 4
72
+ summary: Tokyo Debian 64bit time_t transition
73
+ test_files: []