「DeveloperWiki:パッケージャになる方法」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の6版が非表示)
130行目: 130行目:
   
 
=== devtools を使って署名・アップロード・コミット ===
 
=== devtools を使って署名・アップロード・コミット ===
  +
パッケージに満足したら、全ての変更がリポジトリに追跡されていることを確認する必要があります。
Once you are satisfied with the package, you need to make sure all your changes are tracked in the repository.
 
  +
以下のコマンドを {{ic|some-package/trunk/}} ディレクトリで実行します。
Run:
 
   
 
svn status
 
svn status
   
  +
そして、注意深く出力を確認してください。
in the {{ic|some-package/trunk/}} directory and check the output carefully.
 
  +
例えば新しい {{ic|some-package.install}} ファイルを追加したとすると、svn にそのファイルを追跡するように伝える必要があります。例:
If, for example, you have added a new {{ic|some-package.install}} file, you need to tell svn to track that file, e.g.:
 
   
 
svn add some-package.install
 
svn add some-package.install
   
  +
バイナリパッケージ・makepkg ログなどは '''絶対に''' リポジトリに追加しないように確認してください。
Make sure to '''never''' add the binary packages, makepkg logs, etc. to the repository!
 
   
When you're ready to proceed, you can run the devtools scripts to sign, upload and commit your work (i.e. {{ic|communitypkg}} for [[公式リポジトリ#community|community]], {{ic|community-stagingpkg}} for [[公式リポジトリ#Staging_repositories|community-staging]], {{ic|community-testingpkg}} for [[公式リポジトリ#community-testing|community-testing]], {{ic|extrapkg}} for [[公式リポジトリ#extra|extra]], {{ic|gnome-unstablepkg}} for [[公式リポジトリ#gnome-unstable|gnome-unstable]], {{ic|kde-unstablepkg}} for [[公式リポジトリ#kde-unstable|kde-unstable]], {{ic|multilibpkg}} for [[公式リポジトリ#multilib|multilib]], {{ic|multilib-stagingpkg}} for [[公式リポジトリ#Staging_repositories|multilib-staging]], {{ic|multilib-testingpkg}} for [[公式リポジトリ#multilib-testing|multilib-testing]], {{ic|stagingpkg}} for [[公式リポジトリ#Staging_repositories|staging]], {{ic|testingpkg}} for [[公式リポジトリ#testing|testing]]), e.g.:
+
進める準備ができたら、devtools スクリプトを実行して変更を署名・アップロード・コミットすることができます (例えば {{ic|communitypkg}} [[公式リポジトリ#community|community]] に、{{ic|community-stagingpkg}} [[公式リポジトリ#Staging_repositories|community-staging]] に、{{ic|community-testingpkg}} [[公式リポジトリ#community-testing|community-testing]] に、{{ic|extrapkg}} [[公式リポジトリ#extra|extra]] に、{{ic|gnome-unstablepkg}} [[公式リポジトリ#gnome-unstable|gnome-unstable]] に、{{ic|kde-unstablepkg}} [[公式リポジトリ#kde-unstable|kde-unstable]] に、{{ic|multilibpkg}} [[公式リポジトリ#multilib|multilib]] に、{{ic|multilib-stagingpkg}} [[公式リポジトリ#Staging_repositories|multilib-staging]] に、{{ic|multilib-testingpkg}} [[公式リポジトリ#multilib-testing|multilib-testing]] に、{{ic|stagingpkg}} [[公式リポジトリ#Staging_repositories|staging]] に、{{ic|testingpkg}} [[公式リポジトリ#testing|testing]] に使います)、例:
   
 
extrapkg "update to 1.2.3, add post_upgrade hook to fix permissions"
 
extrapkg "update to 1.2.3, add post_upgrade hook to fix permissions"
   
  +
簡潔なコミットメッセージを書くようにしてください。
Please try to write concise commit messages.
 
  +
パッケージが単純なアップストリームの変更であればそれで構いませんが、何かより複雑な変更があれば、適切なコミットメッセージを書いて知らせてください。
If the package is simply an upstream change, that is fine, but if anything more complex changes, please inform us by writing an appropriate commit message.
 
   
  +
これはパッケージと署名を、{{ic|repos.archlinux.org}} 上にあるユーザーの {{ic|~/staging}} ディレクトリ以下のリポジトリ特有の場所にアップロードします。
This will upload the package and its signature to their repository specific location in your user's {{ic|~/staging}} directory on {{ic|repos.archlinux.org}}.
 
   
 
=== リポジトリの更新 ===
 
=== リポジトリの更新 ===
  +
{{ic|db-update}} を使って一連のリポジトリから、呼び出されたパッケージに従って新しいパッケージを探すことができます。
Using {{ic|db-update}} will find new packages for a set of repositories, depending on which is being called.
 
   
To release uploaded packages to [[公式リポジトリ#core|core]], [[公式リポジトリ#extra|extra]], [[公式リポジトリ#gnome-unstable|gnome-unstable]], [[公式リポジトリ#kde-unstable|kde-unstable]], [[公式リポジトリ#Staging_repositories|staging]], or [[公式リポジトリ#testing|testing]] use:
+
アップロードされたパッケージを [[公式リポジトリ#core|core]][[公式リポジトリ#extra|extra]][[公式リポジトリ#gnome-unstable|gnome-unstable]][[公式リポジトリ#kde-unstable|kde-unstable]][[公式リポジトリ#Staging_repositories|staging]][[公式リポジトリ#testing|testing]] にリリースする場合は次のコマンドを使用します。
   
 
ssh repos.archlinux.org "/packages/db-update"
 
ssh repos.archlinux.org "/packages/db-update"
   
To release uploaded packages to [[公式リポジトリ#community|community]], [[公式リポジトリ#Staging_repositories|community-staging]], [[公式リポジトリ#community-testing|community-testing]], [[公式リポジトリ#multilib|multilib]], [[公式リポジトリ#Staging_repositories|multilib-staging]], or [[公式リポジトリ#multilib-testing|multilib-testing]] use:
+
アップロードされたパッケージを [[公式リポジトリ#community|community]][[公式リポジトリ#Staging_repositories|community-staging]][[公式リポジトリ#community-testing|community-testing]][[公式リポジトリ#multilib|multilib]][[公式リポジトリ#Staging_repositories|multilib-staging]][[公式リポジトリ#multilib-testing|multilib-testing]] にリリースするには次のコマンドを使用します。
   
 
ssh repos.archlinux.org "/community/db-update"
 
ssh repos.archlinux.org "/community/db-update"
165行目: 165行目:
   
 
=== パッケージの削除 ===
 
=== パッケージの削除 ===
  +
{{ic|db-remove}} を使用して、指定したバイナリリポジトリからパッケージを削除することができます。
Using {{ic|db-remove}} will remove a package from a specific binary repository.
 
   
To remove a package from [[公式リポジトリ#core|core]], [[公式リポジトリ#extra|extra]], [[公式リポジトリ#gnome-unstable|gnome-unstable]], [[公式リポジトリ#kde-unstable|kde-unstable]], [[公式リポジトリ#Staging_repositories|staging]], or [[公式リポジトリ#testing|testing]] use:
+
[[公式リポジトリ#core|core]][[公式リポジトリ#extra|extra]][[公式リポジトリ#gnome-unstable|gnome-unstable]][[公式リポジトリ#kde-unstable|kde-unstable]][[公式リポジトリ#Staging_repositories|staging]][[公式リポジトリ#testing|testing]] からパッケージを削除するには以下のコマンドを使用します。
   
 
ssh repos.archlinux.org "/packages/db-remove <repo> <arch> <package_name>"
 
ssh repos.archlinux.org "/packages/db-remove <repo> <arch> <package_name>"
   
  +
e.g.
 
   
 
ssh repos.archlinux.org "/packages/db-remove core x86_64 openssh"
 
ssh repos.archlinux.org "/packages/db-remove core x86_64 openssh"
   
To remove a package from [[公式リポジトリ#community|community]], [[公式リポジトリ#Staging_repositories|community-staging]], [[公式リポジトリ#community-testing|community-testing]], [[公式リポジトリ#multilib|multilib]], [[公式リポジトリ#Staging_repositories|multilib-staging]], or [[公式リポジトリ#multilib-testing|multilib-testing]] use:
+
[[公式リポジトリ#community|community]][[公式リポジトリ#Staging_repositories|community-staging]][[公式リポジトリ#community-testing|community-testing]][[公式リポジトリ#multilib|multilib]][[公式リポジトリ#Staging_repositories|multilib-staging]][[公式リポジトリ#multilib-testing|multilib-testing]] からパッケージを削除するには以下のコマンドを使用します。
   
 
ssh repos.archlinux.org "/community/db-remove <repo> <arch> <package_name>"
 
ssh repos.archlinux.org "/community/db-remove <repo> <arch> <package_name>"
   
  +
e.g.
 
   
 
ssh repos.archlinux.org "/community/db-remove community x86_64 jack2"
 
ssh repos.archlinux.org "/community/db-remove community x86_64 jack2"
   
  +
リポジトリからパッケージを完全に削除した場合、パッケージディレクトリ全体をバージョンコントロールからも削除することが推奨されます。
If removing the package from the repositories altogether, it is encouraged to remove the entire package directory from version control as well.
 
   
 
svn update <package_name>
 
svn update <package_name>
189行目: 189行目:
 
svn commit <package_name> -m "Deleting <package_name> because of reason."
 
svn commit <package_name> -m "Deleting <package_name> because of reason."
   
  +
上記のコマンドは時々以下のようなメッセージを出力します。
Sometime the previous command yields:
 
 
svn: E155035: "'/path/to/pkg/<PKG>' is the root of a working copy and cannot be deleted"
 
svn: E155035: "'/path/to/pkg/<PKG>' is the root of a working copy and cannot be deleted"
   
  +
リモートから削除するには以下のコマンドを使用できます。
You can remotely remove it with:
 
 
svn rm svn+ssh://svn-packages@repos.archlinux.org/srv/repos/svn-packages/svn/<PKG>
 
svn rm svn+ssh://svn-packages@repos.archlinux.org/srv/repos/svn-packages/svn/<PKG>
   
 
=== リポジトリ間でのパッケージの移動 ===
 
=== リポジトリ間でのパッケージの移動 ===
  +
{{ic|db-move}} を使って2つのバイナリリポジトリ間でパッケージを移動できます。
Using {{ic|db-move}} will move a package between two binary repositories.
 
   
To move a package somewhere between [[公式リポジトリ#core|core]], [[公式リポジトリ#extra|extra]], [[公式リポジトリ#gnome-unstable|gnome-unstable]], [[公式リポジトリ#kde-unstable|kde-unstable]], [[公式リポジトリ#Staging_repositories|staging]], or [[公式リポジトリ#testing|testing]] use:
+
パッケージを [[公式リポジトリ#core|core]][[公式リポジトリ#extra|extra]][[公式リポジトリ#gnome-unstable|gnome-unstable]][[公式リポジトリ#kde-unstable|kde-unstable]][[公式リポジトリ#Staging_repositories|staging]][[公式リポジトリ#testing|testing]] の間で移動するには以下のコマンドを使用します。
   
 
ssh repos.archlinux.org "/packages/db-move <from_repo> <to_repo> <package_name>"
 
ssh repos.archlinux.org "/packages/db-move <from_repo> <to_repo> <package_name>"
   
  +
例:
e.g.:
 
   
 
ssh repos.archlinux.org "/packages/db-move testing core openssh"
 
ssh repos.archlinux.org "/packages/db-move testing core openssh"
   
   
To move a package somewhere between [[公式リポジトリ#community|community]], [[公式リポジトリ#Staging_repositories|community-staging]], [[公式リポジトリ#community-testing|community-testing]], [[公式リポジトリ#multilib|multilib]], [[公式リポジトリ#Staging_repositories|multilib-staging]], or [[公式リポジトリ#multilib-testing|multilib-testing]] use:
+
パッケージを [[公式リポジトリ#community|community]][[公式リポジトリ#Staging_repositories|community-staging]][[公式リポジトリ#community-testing|community-testing]][[公式リポジトリ#multilib|multilib]][[公式リポジトリ#Staging_repositories|multilib-staging]][[公式リポジトリ#multilib-testing|multilib-testing]] の間で移動するには以下のコマンドを使用します。
   
 
ssh repos.archlinux.org "/community/db-move <from_repo> <to_repo> <package_name>"
 
ssh repos.archlinux.org "/community/db-move <from_repo> <to_repo> <package_name>"
   
  +
例:
e.g.:
 
   
 
ssh repos.archlinux.org "/community/db-move community-testing community jack2"
 
ssh repos.archlinux.org "/community/db-move community-testing community jack2"
   
  +
代わりに、testing から移動することはとても一般的なため、ヘルパースクリプトがあります。
Alternatively, the move from testing is so common, that there are helper scripts:
 
   
 
/packages/testing2x openssh bzip2 coreutils
 
/packages/testing2x openssh bzip2 coreutils
 
/packages/testing2x64 openssh bzip2 coreutils
 
/packages/testing2x64 openssh bzip2 coreutils
   
  +
これらのスクリプトはコマンドラインのパッケージが ''core'' か ''extra'' のどちらかにある場合にのみ機能します。
These scripts only work if the packages on the commandline are either in ''core'' or ''extra''.
 
If a package is only in testing, you have to use ''testing2core'', ''testing2core64'', ''testing2extra'' or ''testing2extra64''.
+
パッケージが testing にしかない場合、''testing2core''''testing2core64''''testing2extra''''testing2extra64'' を使う必要があります。
   
For the special case of moving a binary package and its version controlled [[PKGBUILD]] (and potentially additional files) between [[公式リポジトリ#community|community]] and [[公式リポジトリ#extra|extra]] (either direction), there are the two devtools helper scripts {{ic|community2extra}} and {{ic|extra2community}}.
+
バイナリパッケージとバージョンコントロールされた [[PKGBUILD]] (と潜在的な追加のファイル) [[公式リポジトリ#community|community]] [[公式リポジトリ#extra|extra]] の間 (両方の向き) で移動する特別なケースのために、2つの devtools ヘルパースクリプト {{ic|community2extra}} {{ic|extra2community}} があります。
   
E.g. to move a a package from [[公式リポジトリ#community|community]] to [[公式リポジトリ#extra|extra]], use:
+
例えば [[公式リポジトリ#community|community]] から [[公式リポジトリ#extra|extra]] に移動するには以下のコマンドを使用します。
 
community2extra <package_name>
 
community2extra <package_name>
   
 
=== リリースの "タグ付け" ===
 
=== リリースの "タグ付け" ===
   
Fetch the package dir using {{ic|archco}} or {{ic|communityco}} or from an svn checkout.
+
パッケージディレクトリを {{ic|archco}} {{ic|communityco}}、あるいは svn checkout を使って取得します。
  +
その後:
Then:
 
 
cd package-name/trunk
 
cd package-name/trunk
 
archrelease extra-x86_64
 
archrelease extra-x86_64
   
  +
これは {{ic|extra-x86_64}} という名前のディレクトリ内に trunk エントリーの svn コピーを作成して、このパッケージが ''x86_64'' アーキテクチャの extra リポジトリに入っていることを示されます。
This makes an svn copy of the trunk entries in a directory named {{ic|extra-x86_64}} indicating that this package is in the extra repository for the ''x86_64'' architecture.
 
This will be done automatically when using tools such as {{ic|extrapkg}} (see [[#devtools を使って署名・アップロード・コミット|Use devtools to sign, upload and commit]]).
+
これは {{ic|extrapkg}} のようなツールを使っているときは自動的に実行されます ([[#devtools を使って署名・アップロード・コミット|Use devtools to sign, upload and commit]] を参照してください)
 
   
 
== その他 ==
 
== その他 ==
243行目: 242行目:
 
=== チェックアウトのクリーンアップ ===
 
=== チェックアウトのクリーンアップ ===
   
  +
非再帰的チェックアウトを維持していると、もう追跡していないパッケージを除去したい場合は以下のコマンドを実行します。
Since you are now maintaining a non-recursive checkout, you may want to get rid of packages that you are no longer tracking:
 
   
 
svn update package1 package2 --set-depth exclude
 
svn update package1 package2 --set-depth exclude
   
  +
あるいは、トップレベルを空にしたい場合は以下のコマンドを実行します。
Or if you want an empty toplevel again:
 
   
 
svn update --set-depth empty
 
svn update --set-depth empty
253行目: 252行目:
 
=== 毎回のパスワード入力を省略する ===
 
=== 毎回のパスワード入力を省略する ===
   
  +
{{ic|extrapkg}} や他の devtools を使っているとき、かなり多くの ssh コネクションが確立され、それは ssh キーと ssh エージェントを使っていても変わりません。
When working with {{ic|extrapkg}} and the other devtools, quite a few ssh connections are established, even when using ssh keys and the ssh agent.
 
  +
しかし、これは対処できます。
You can work around that.
 
   
Add this to your {{ic|~/.ssh/config}}:
+
{{ic|~/.ssh/config}} に以下の行を追加してください。
   
 
ControlPath ~/.ssh/master-%h-%p-%r
 
ControlPath ~/.ssh/master-%h-%p-%r
262行目: 261行目:
 
Host repos.archlinux.org
 
Host repos.archlinux.org
   
  +
ここで、作業を始める前に、ssh セッションを以下のコマンドで開いてください。
Now, before you start working, open a ssh session with
 
   
 
ssh -M repos.archlinux.org
 
ssh -M repos.archlinux.org
   
  +
パスワードを入力して、作業を終えるまでこのセッションを開いたままにしておいてください。
Enter your password and leave that session open until you are finished.
 
  +
全ての ssh セッション (scp や svn+ssh を含めて) はこのコネクションを通してトンネルされます。
All ssh sessions (including scp and svn+ssh) will now be tunneled through this connection.
 

2020年5月18日 (月) 15:06時点における最新版

パッケージガイドラインに従う

パッケージガイドラインは Arch Linux ドキュメントにあります。しっかりと従ってください。

Arch パッケージガイドライン

準備とセットアップ

パッケージのインストール

devtoolsnamcap パッケージがインストールされていることを確認してください。

SSH 設定

SSH エージェントに複数の SSH キーを登録している場合、Arch のサーバーと接続する際に正しいキーが使われるようにする必要があります。 さらに、ローカルのユーザー名が Arch のサーバーに接続する際に使うユーザー名と異なる場合も同じように設定する必要があります。

例の ~/.ssh/config の抜粋:

host repos.archlinux.org
	hostname repos.archlinux.org
	port 22
	user foobar
	IdentityFile ~/.ssh/id_arch
	IdentitiesOnly yes

makepkg 設定

~/.makepkg.conf で正しい PACKAGERGPGKEY 変数を設定していることを確認してください。 間違った署名が付けられていたり PACKAGER がなかったりすると、パッケージをリポジトリに入れることができません。

PACKAGER="Foo Bar <foo.bar@archlinux.org>"
GPGKEY="0x0123456789abcdef"

非再帰的チェックアウトを使ったローカルの SVN セットアップ

SVN は範囲を絞ったチェックアウトが可能なため、空のローカルチェックアウトを初期化して、必要なパッケージだけを後で取得することができます。 ローカルチェックアウトをセットアップするには以下のコマンドを実行します。

core・extra・testing・staging リポジトリには以下のコマンドを使用します。

  svn checkout -N svn+ssh://svn-packages@repos.archlinux.org/srv/repos/svn-packages/svn svn-packages

community・community-testing・community-staging・multilib・multilib-testing・multilib-staging リポジトリには以下のコマンドを使用します。

  svn checkout -N svn+ssh://svn-community@repos.archlinux.org/srv/repos/svn-community/svn svn-community

これは svn-packagessvn-community という名前の2つのディレクトリを作成します。中身は空ですが、svn リポジトリとして正しくセットアップされています。

ヘルパースクリプト (任意)

ch

このシェルスクリプトはパッケージをビルドするために chroot をセットアップして維持することを素晴しく簡単にします。 スクリプトは Bluewind により開発され、ch から入手できます。

スクリプトは Btrfs に依存しているため、Btrfs ボリュームを作る必要があります (20GiB あればほとんどの場合十分です)。ファイル・論理ボリューム・専用のパーティションのどれでも構いません。 さらにデフォルトでこのスクリプトは chroot のための Btrfs ボリュームが /mnt/chroots/arch にマウントされていることを想定しています。

その後、以下のコマンドで 64bit パッケージを作ることができます。

  ch build 64

(自動的かつ便利に、全ての必要な引数と共に makechrootpkg コマンドが呼び出されます。)

詳しい情報については、スクリプトの先頭を参照してください。説明と使用例があります。

ワークフロー

ローカルリポジトリのチェックアウト・更新

  cd svn-community
  # 特定のパッケージをアップデート
  svn update <package_name>
  # 全てのパッケージをアップデート
  svn update

新しいパッケージの追加

このステップは新しいパッケージを初めてリポジトリに追加するときだけ必要です。

  cd svn-community
  mkdir -p new-package/{repos,trunk}
  cd new-package
  cp /usr/share/pacman/PKGBUILD.proto trunk/PKGBUILD
  $EDITOR trunk/PKGBUILD
  svn add .
  svn commit

必要なパッケージの更新

  svn update some-package

変更とビルド

パッケージをクリーンな chroot を使ってビルドすることが 必須 です。 これを確実にするために、devtools により提供されるスクリプトを使ってビルドしてください (例えば extra-x86_64-buildextracommunity に、multilib-buildmultilib に、multilib-staging-buildmultilib-staging に、multilib-testing-buildmultilib-testing に、staging-x86_64-buildstagingcommunity-staging に、testing-x86_64-buildtestingcommunity-testing に使います)。

  cd some-package/trunk/
  $EDITOR PKGBUILD
  extra-x86_64-build

あるいは、ch ヘルパーを使っている場合は単純に以下を実行してください。

  cd some-package/trunk/
  $EDITOR PKGBUILD
  ch clean 64
  ch update 64
  ch build 64

PKGBUILD とパッケージに namcap を実行

ノート: これは devtools のビルドスクリプトを使うと自動的に実行されます。
  namcap PKGBUILD
  namcap some-package-1.0-1-x86_64.pkg.tar.xz

パッケージの checkpkg を実行

パッケージをビルドしたディレクトリで実行して、現在リポジトリにあるパッケージのバージョンと比較したファイルリストの差分を得ることができます。

   checkpkg
ノート: これは新しいパッケージを初めてリポジトリに追加するときには省略できます (例えば AUR から community にパッケージをインポートしたとき)。

識別された soname の変更に sogrep を実行

checkpkg が共有オブジェクト名 (別名 soname) の変更を package のライブラリ package.so で見つけた場合、直接それに依存するパッケージをリビルドすることが 必要 です。

リポジトリ (例えば extracommunity) 内のどのパッケージが package 内のライブラリに依存しているかを特定するには、sogrep を使ってください (sogrep(1) も参照)。

   sogrep <repository> package.so

(ワークフロー の残りのステップを実行することで) 対応する staging 環境で package をビルドしたら、特定された依存パッケージの TODO を作成して、依存パッケージのメンテナが新しいバージョンの package に対してリビルドできるようにします。

ノート: はじめに trusted usersdevelopers と同期してください。staging 環境に現在パッケージがあれば、package に対するリビルドをブロックします。

devtools を使って署名・アップロード・コミット

パッケージに満足したら、全ての変更がリポジトリに追跡されていることを確認する必要があります。 以下のコマンドを some-package/trunk/ ディレクトリで実行します。

  svn status

そして、注意深く出力を確認してください。 例えば新しい some-package.install ファイルを追加したとすると、svn にそのファイルを追跡するように伝える必要があります。例:

  svn add some-package.install

バイナリパッケージ・makepkg ログなどは 絶対に リポジトリに追加しないように確認してください。

進める準備ができたら、devtools スクリプトを実行して変更を署名・アップロード・コミットすることができます (例えば communitypkgcommunity に、community-stagingpkgcommunity-staging に、community-testingpkgcommunity-testing に、extrapkgextra に、gnome-unstablepkggnome-unstable に、kde-unstablepkgkde-unstable に、multilibpkgmultilib に、multilib-stagingpkgmultilib-staging に、multilib-testingpkgmultilib-testing に、stagingpkgstaging に、testingpkgtesting に使います)、例:

  extrapkg "update to 1.2.3, add post_upgrade hook to fix permissions"

簡潔なコミットメッセージを書くようにしてください。 パッケージが単純なアップストリームの変更であればそれで構いませんが、何かより複雑な変更があれば、適切なコミットメッセージを書いて知らせてください。

これはパッケージと署名を、repos.archlinux.org 上にあるユーザーの ~/staging ディレクトリ以下のリポジトリ特有の場所にアップロードします。

リポジトリの更新

db-update を使って一連のリポジトリから、呼び出されたパッケージに従って新しいパッケージを探すことができます。

アップロードされたパッケージを coreextragnome-unstablekde-unstablestagingtesting にリリースする場合は次のコマンドを使用します。

  ssh repos.archlinux.org "/packages/db-update"

アップロードされたパッケージを communitycommunity-stagingcommunity-testingmultilibmultilib-stagingmultilib-testing にリリースするには次のコマンドを使用します。

  ssh repos.archlinux.org "/community/db-update"

他の操作

パッケージの削除

db-remove を使用して、指定したバイナリリポジトリからパッケージを削除することができます。

coreextragnome-unstablekde-unstablestagingtesting からパッケージを削除するには以下のコマンドを使用します。

  ssh repos.archlinux.org "/packages/db-remove <repo> <arch> <package_name>"

  ssh repos.archlinux.org "/packages/db-remove core x86_64 openssh"

communitycommunity-stagingcommunity-testingmultilibmultilib-stagingmultilib-testing からパッケージを削除するには以下のコマンドを使用します。

  ssh repos.archlinux.org "/community/db-remove <repo> <arch> <package_name>"

  ssh repos.archlinux.org "/community/db-remove community x86_64 jack2"

リポジトリからパッケージを完全に削除した場合、パッケージディレクトリ全体をバージョンコントロールからも削除することが推奨されます。

   svn update <package_name>
   svn rm --force <package_name>
   svn commit <package_name> -m "Deleting <package_name> because of reason."

上記のコマンドは時々以下のようなメッセージを出力します。

   svn: E155035: "'/path/to/pkg/<PKG>' is the root of a working copy and cannot be deleted"

リモートから削除するには以下のコマンドを使用できます。

   svn rm svn+ssh://svn-packages@repos.archlinux.org/srv/repos/svn-packages/svn/<PKG>

リポジトリ間でのパッケージの移動

db-move を使って2つのバイナリリポジトリ間でパッケージを移動できます。

パッケージを coreextragnome-unstablekde-unstablestagingtesting の間で移動するには以下のコマンドを使用します。

  ssh repos.archlinux.org "/packages/db-move <from_repo> <to_repo> <package_name>"

例:

  ssh repos.archlinux.org "/packages/db-move testing core openssh"


パッケージを communitycommunity-stagingcommunity-testingmultilibmultilib-stagingmultilib-testing の間で移動するには以下のコマンドを使用します。

  ssh repos.archlinux.org "/community/db-move <from_repo> <to_repo> <package_name>"

例:

  ssh repos.archlinux.org "/community/db-move community-testing community jack2"

代わりに、testing から移動することはとても一般的なため、ヘルパースクリプトがあります。

  /packages/testing2x openssh bzip2 coreutils
  /packages/testing2x64 openssh bzip2 coreutils

これらのスクリプトはコマンドラインのパッケージが coreextra のどちらかにある場合にのみ機能します。 パッケージが testing にしかない場合、testing2coretesting2core64testing2extratesting2extra64 を使う必要があります。

バイナリパッケージとバージョンコントロールされた PKGBUILD (と潜在的な追加のファイル) を communityextra の間 (両方の向き) で移動する特別なケースのために、2つの devtools ヘルパースクリプト community2extraextra2community があります。

例えば community から extra に移動するには以下のコマンドを使用します。

   community2extra <package_name>

リリースの "タグ付け"

パッケージディレクトリを archcocommunityco、あるいは svn checkout を使って取得します。 その後:

  cd package-name/trunk
  archrelease extra-x86_64

これは extra-x86_64 という名前のディレクトリ内に trunk エントリーの svn コピーを作成して、このパッケージが x86_64 アーキテクチャの extra リポジトリに入っていることを示されます。 これは extrapkg のようなツールを使っているときは自動的に実行されます (Use devtools to sign, upload and commit を参照してください)。

その他

チェックアウトのクリーンアップ

非再帰的チェックアウトを維持していると、もう追跡していないパッケージを除去したい場合は以下のコマンドを実行します。

  svn update package1 package2 --set-depth exclude

あるいは、トップレベルを空にしたい場合は以下のコマンドを実行します。

  svn update --set-depth empty

毎回のパスワード入力を省略する

extrapkg や他の devtools を使っているとき、かなり多くの ssh コネクションが確立され、それは ssh キーと ssh エージェントを使っていても変わりません。 しかし、これは対処できます。

~/.ssh/config に以下の行を追加してください。

  ControlPath ~/.ssh/master-%h-%p-%r
  
  Host repos.archlinux.org

ここで、作業を始める前に、ssh セッションを以下のコマンドで開いてください。

  ssh -M repos.archlinux.org

パスワードを入力して、作業を終えるまでこのセッションを開いたままにしておいてください。 全ての ssh セッション (scp や svn+ssh を含めて) はこのコネクションを通してトンネルされます。