Re: Arch

Posted: 日 6 15, 2014 6:07 pm

JDのPKGBUILDの勝手な解読

# Contributor: noonov <noonov@gmail.com>  <ーーー#が有るのでREM文だと思われる。

pkgname=jd  <ーーーbuildする物がjdだとPCに知らせている。
pkgver=2.8.8  <ーーーbuildする物のVerが2.8.8だとPCに知らせている。
_date=140601  <ーーーbuildする物のVerが2.8.8の140601だとPCに知らせている。つまり2014年6月1日に作られた物だとPCに知らせている。

pkgrel=1  <ーーーリリース番号は1からスタートします。

https://wiki.archlinux.org/index.php/PKGBUILD_%28%E6%97%A5%E6%9C%AC%E8%AA%9E%29#pkgrel

pkgdesc="A 2channel browser written in C++ using gtkmm"    <ーーーパッケージの説明
arch=('i686' 'x86_64')   <ーーーアーキテクチャi686或いはx86_64だとPCに知らせている。ビルド・動作するアーキテクチャの文字列
url="http://
jd4linux.sourceforge.jp/"     <ーーーJD for Linux のhttp
license=('GPL2')        <ーーーソフトウェアが配布されるライセンス。
depends=('gnutls' 'libsm' 'gtkmm')    <ーーーソフトウェアを実行する前にインストールする必要があるパッケージの名前を示す文字列。
conflicts=('jd-svn')      <ーーーインストールするとパッケージと問題が生じるパッケージの名前の文字列。
source=(http://dl.sourceforge.jp/jd4linux /61281/${pkgname}-${pkgver}-${_date}.tgz)  <ーーーパッケージをビルドするのに必要なファイルの文字列。 ソフトウェアのソースの場所を入れる必要があり、多くの場合 HTTP や FTP の URL です。下記がjd-2.8.8-140601.tgzが落とせるhttp

http://sourceforge.jp/projects/jd4linux/downloads/61281/jd-2.8.8-140601.tgz/    なので
${pkgname}はjd
${pkgver}は2.8.8
${_date}は140601
 
md5sums=('113e1e8cbef88111df937b6a9b338e55')    <ーーーsource 行に含まれるファイルの MD5 チェックサムの文字列。
http://sourceforge.jp/projects/jd4linux/downloads/61281/jd-2.8.8-140601.tgz/  より
jd4linux 2.8.8-140601 (768,814 バイト/MD5: 113e1e8cbef88111df937b6a9b338e55)のダウンロードが開始されます  との事なのでmd5sumsは 113e1e8cbef88111df937b6a9b338e55だと分かる。

build() {
cd ${srcdir}/${pkgname}-${pkgver}-${_date}  <ーーーこれはtarを展開して出来たフォルダーだと思う。

${srcdir}はコンパイルしているソースのディレクトリ。通常この変数の値はconfigureシェルスクリプトで挿入されます
ソース
慣習的なMekifile
http://www.ecoop.net/coop/translated/GNUMake3.77/make_14.jp.html

autoreconf -i
./configure --prefix=/usr
make
  <ーーーこれらの3行はJDをビルドする時のイディオムみたいな物。ただ--prefix=/usr  が付加されていて何なのかわからず。
}

build() 関数は、煎じ詰めて言えば手でコンパイルするのに必要な操作を自動化したものなのです。今パッケージしているソフトウェアが configure を使っているのなら、--prefix=/usr を 使うのが良いでしょう。(多くのソフトウェアがファイルをインストールするのに使う) /usr/local ディレクトリは、手動でインストールする場合のみに限って使われるべきです。すべての Arch Linux パッケージは、/usr ディレクトリを使うべきです。

ソース
Creating Packages (日本語)

https://wiki.archlinux.org/index.php/Creating_Packages_%28%E6%97%A5%E6%9C%AC%E8%AA%9E%29

package() {
cd ${srcdir}/${pkgname}-${pkgver}-${_date}

make DESTDIR=${pkgdir} install

}


${pkgdir} は、この変数はパッケージに入れられるものの root ディレクトリになります。基本的に make DESTDIR="$pkgdir" install のように使われます。

pacman によって読み込まれるようにする為に最後のpackage(){  } は有るのか?

PKGBUILD はパッケージを作成するときに使われる Arch Linux のパッケージビルド記述ファイルです (中身はシェルスクリプトです)。

Arch Linux では makepkg ユーティリティと PKGBUILD 内の情報を使ってパッケージがビルドされます。makepkg が実行されると、作業ディレクトリ内で PKGBUILD が検索されその中の記述に従ってコンパイルしたりファイルを取得してパッケージファイル (pkgname.pkg.tar.xz) が作成されます。作られたパッケージにはバイナリファイルとインストールの記述が含まれており、pacman によって読み込まれインストールされます。

ソース
https://wiki.archlinux.org/index.php/PKGBUILD_%28%E6%97%A5%E6%9C%AC%E8%AA%9E%29#pkgrel