Rabbit Slide Show

Tokyo Debian debexpo 20201121

2020-11-21

Description

Text

Page: 1

debexpo(mentors.d.n)を
ハックするには
(2020年版)
Kentaro Hayashi
ClearCode Inc.
2020年11月 東京エリア・関西合同Debian勉強会

Page: 2

お知らせ: スライドは公開
済みです
この資料はRabbit Slide Showで公開済み
debexpo(mentors.d.n)をハックするには(2020年版)
https://slide.rabbit-shocker.org/authors/kenhys/
tokyodebian-debexpo-20201121/

Page: 3

プロフィール
ひよこDebian Developer
2020/09になったばかり
twitter: @kenhys
トラックポイント(ソフトドーム派)

Page: 4

ちょっと宣伝
Software Design 2020年12月号
Debian Hot Topics(by やまねさん)
Debian 11のデスクトップとカーネルを大予測
新Debian Developerへのインタビューが掲載されます

Page: 5

本日の内容
mentors.debian.netについて
前に発表したときから変わったこと
開発環境のつくりかた
まとめ

Page: 6

mentors.debian.netとは

Page: 7

mentors.debian.netとは
コントリビューターとスポンサーをつなぐサイト
一時的なアップロード先として使える
RFSの雛形も用意してくれる
パッケージのチェック結果をWebで確認できる

Page: 8

前回からのあらすじ
(2016-06-25)
debexpoをハックするには
東京Debian勉強会 140回

Page: 9

debexpoをハックするには
mentors.d.nの残念なところをどうにかしようとした
話
https://slide.rabbit-shocker.org/authors/kenhys/
tokyodebian-debexpo-20160625/

Page: 10

その後の主な動き
GitHubからSalsaへ移行した
Python2からPython3に移行した
PylonsからDjangoへ移行した
メッセージの国際化対応(フランス語)

Page: 11

開発環境を構築するには
docs/*.rstの参照を推奨
必要なものをインストール
ホストの設定を追加する
サーバーを起動する
ワーカーを起動する

Page: 12

必要なものをインストール
virtualenv環境でインストールする例
$ git clone https://salsa.debian.org/mentors.debian.net-team/debexpo.git
$ cd debexpo
$ python3 setup.py build
$ python3 setup.py install
$ python3 setup.py develop
$ python3 manage.py migrate
$ python3 manage.py collectstatic --no-input --clear

Page: 13

ホストの設定を追加する
diff --git a/debexpo/settings/develop.py b/debexpo/settings/develop.py
index 7b7121b7..3e8c2cbc 100644
--- a/debexpo/settings/develop.py
+++ b/debexpo/settings/develop.py
@@ -35,7 +35,7 @@ SECRET_KEY = 'DoNotUseThisKeyInProductionEnvironment'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
-ALLOWED_HOSTS = []
+ALLOWED_HOSTS = ["*"]
これをしておかないとdputできない

Page: 14

サーバーを起動する
$ python3 manage.py runserver 0.0.0.0:8000
他のホストからアクセスしないなら0.0.0.0:8000は不
要
依存関係を嫌ってVMを立てたときは忘れずに

Page: 15

ワーカーを起動する
$ celery --app debexpo worker --beat
バックグラウンドジョブを走らせる
例:パッケージをインポートする

Page: 16

ワーカーが正常に起動でき
ると
$ celery --app debexpo inspect registered
-> celery@buster: OK
* debexpo.accounts.tasks.CleanupAccounts
* debexpo.importer.tasks.importer
* debexpo.packages.tasks.remove_old_uploads
* debexpo.packages.tasks.remove_uploaded_packages
* debexpo.repository.tasks.remove_from_repository

Page: 17

アップロードする前に
~/.dput.cf に設定を追加する
[debexpo]
fqdn = localhost:8000
incoming = /upload
method = http
allow_unsigned_uploads = 0

Page: 18

アカウントを作成する
ブラウザで (開発環境の):8000にアクセス
サインインのリンクを踏む
アカウント情報を登録する
data/mboxを参照して有効化する
GPGの鍵を登録する

Page: 19

サインインのリンクを踏む
画面右上のSign me upをクリックする

Page: 20

アカウント情報を登録する
名前とメールアドレスを入力する

Page: 21

data/mboxを参照して有効
化する
$ find data/mbox/
data/mbox/
data/mbox/20201107-082449-140269976552592.log
メールの内容がmbox以下に作成される

Page: 22

アカウントのアクティベー
ト
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: Next step: Confirm your email address
From: debexpo <support@example.org>
To: kenhys@gmail.com
Date: Sat, 07 Nov 2020 08:24:49 -0000
Message-ID: <160473748915.1139.18222488963671024124@localhost>
Hello,
Please activate your account by visiting the following address
in your web-browser:
http://192.168.121.172:8000/accounts/reset/MQ/5le-acd00fdca7302c8dee26/
If you didn't create an account on debexpo,
you can safely ignore this email.
Thanks,

Page: 23

GPGの鍵を登録する
gpg --export --export-options export-minimal --armor keyid
フォームに上記の結果を貼り付けて登録する

Page: 24

パッケージをアップロード
する
$ dput debexpo xxx.changes
パッケージに署名するのを忘れずに

Page: 25

明示的にインポートするに
は
$ celery --app debexpo call debexpo.importer.tasks.importer
すぐにインポートしたいときはタスクを直接実行する

Page: 26

アップロードされたパッ
ケージが表示される

Page: 27

最近やったこと
すでにDebianにはいっているかどうか区別できるよう
にする
https://salsa.debian.org/mentors.debian.net-team/
debexpo/-/merge_requests/167

Page: 28

修正画面イメージ

Page: 29

Packages listの関連ファイ
ル
$ find debexpo/packages/
debexpo/packages/
debexpo/packages/serializers.py
debexpo/packages/views.py
debexpo/packages/__init__.py
debexpo/packages/migrations
debexpo/packages/migrations/0001_initial.py
debexpo/packages/migrations/__init__.py
debexpo/packages/apps.py
debexpo/packages/tasks.py
debexpo/packages/templates
debexpo/packages/templates/package.html
debexpo/packages/templates/packages.html
debexpo/packages/templates/packages-list.html
debexpo/packages/templates/email-upload-removed.html
debexpo/packages/models.py

Page: 30

Packages listの関連スキー
マ
$ sqlite3 db.sqlite3
SQLite version 3.27.2 2019-02-25 16:06:06
Enter ".help" for usage hints.
sqlite> .schema packages_package
CREATE TABLE IF NOT EXISTS "packages_package" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"name" varchar(100) NOT NULL UNIQUE,
"needs_sponsor" bool NOT NULL,
"in_debian" bool NOT NULL);

Page: 31

Packages listのviewを修
正
diff --git a/debexpo/packages/templates/packages-list.html b/debexpo/packages/templates/packages-list.html
index 263f8e50..299b84f0 100644
--- a/debexpo/packages/templates/packages-list.html
+++ b/debexpo/packages/templates/packages-list.html
@@ -7,10 +7,11 @@
<table width="100%">
<tr>
<th width="15%">{% trans 'Package' %}</th>
-
<th width="40%">{% trans 'Description' %}</th>
+
<th width="30%">{% trans 'Description' %}</th>
<th width="20%">{% trans 'Version' %}</th>
<th width="15%">{% trans 'Uploader' %}</th>
<th width="10%">{% trans 'Needs a sponsor?' %}</th>
+
<th width="10%">{% trans 'Already in Debian' %}</th>
</tr>
{% for pkg in group.packages %}
@@ -32,6 +33,13 @@
{% trans 'No' %}
{% endif %}
</td>
+
<td class="lines">
+
{% if pkg.in_debian %}
+
{% trans 'Yes' %}
+
{% else %}
+
{% trans 'No' %}
+
{% endif %}
+
</td>
</tr>
{% endfor %}
</table>

Page: 32

まとめ
mentors.d.nは継続的に開発が続いているよ
DjangoアプリなのでPythonな人はいじりやすいかも
解決したいissueがいっぱいあるよ
https://salsa.debian.org/mentors.debian.net-team/
debexpo/-/issues
気になるところがあればぜひフィードバックしよう

Other slides

DebConf20 DebConf20
2020-08-25