- 论坛徽章:
- 0
|
原创文章,如需转载请注明出处。
本来只是想做个archlinux的内核更新包,但看完archlinux这方面的wiki后,发现做个本地库好像也不太难。随手建立了一个本地的软件库。当然,这只是最简单的库。如需添加软件,稍微修改一下即可。
写的都很简陋,勉强可以说明流程。将就看一下。呵呵……
好了,先简单的说下流程。
我首先写了一个最简单的C小程序,然后将它打成ArchLinux的软件包。再利用这个包建立起本地的软件库。
第一步,先写C程序。目录结构如下。
├── SayHello-0.1
│ ├── include
│ │ └── hello.h
│ ├── Makefile
│ ├── SayHello
│ └── src
│ └── hello.c
├── SayHello-0.1.md5
└── SayHello-0.1.tar.gz
SayHello-0.1是项目文件夹,SayHello-.0.1.tar.gz是项目文件夹打包得到的压缩文件。SayHello-0.1.md5是用md5sum SayHello-0.1.tar.gz > SayHello-0.1.md5得到的校验文件(不是非要这个文件,但在制作ArchLinux文件包时,它一直提醒没有校验,没办法了,只好做了一个)。
代码如下:
################################
hello.h
#include <stdio.h>
#include <errno.h>
#define ERR_EXIT(m)\
do\
{\
perror(m);\
exit(-1);\
}while(0)
#####################################
hello.c
#include "hello.h"
int main(int argc ,char* argv[])
{
printf("Hello\n");
printf("This is a test program\n");
return 0;
}
#####################################
Makefile
CC = gcc
CFLAGS = -Wall -g
obj = hello.o
VPATH = include:src
#vpath %.c src
#vpath %.h include
SayHello:hello.o
$(CC) $(CFLAGS) -o $@ $<
hello.o:hello.c hello.h
$(CC) -c -Iinclude -o $@ $<
##SayHello:hello.c
##$(CC) $(FLAGS) -Iinclude $< -o $@
.PHONY:clean install uninstall
clean:
-rm hello.o SayHello
install:
cp SayHello ~/bin/
##sudo cp SayHello /usr/local/bin/
uninstall:
-rm ~/bin/SayHello
#######################################3
好了,程序部分已经完成了。然后再打包,建立校验文件。
tar zcvf SayHello-0.1.tar.gz SayHello-0.1
md5sum SayHello-0.1.tar.gz > SayHello-0.1.md5
把它们上传到虚拟机的服务器上去。
scp SayHello-0.1.* XXX@xxx.xxx.xxx.xxx:/var/myftp/pub/
(这一步可以省略,只要把下面的PBKBUILD文件修改一下就可以了。)
第二步,把程序打包成ArchLinux的安装包。
abs的安装配置省略,wiki上已经说得非常清楚了。
在家目录上建立打包目录。
mkdir -pv ~/abs/SayHello
cd ~/abs/SayHello
vi PKGBUILD
这里只有一个文件。代码如下。
#########
PKGBUILD
pkgname=SayHello
pkgver=0.1
pkgrel=20130324
pkgdesc="A Say Hello test program."
arch=('i686' 'x86_64')
url="ftp://xxx.xxx.xxx.xxx"
license=('GPL2')
#depends=()
source=("ftp://xxx.xxx.xxx.xxx/mypub/$pkgname-$pkgver.tar.gz")
md5sums=('这里就是md5文件中的内容,被我隐藏了')
##install=SayHello.install
build()
{
cd $startdir/src/$pkgname-$pkgver
make clean
make
make install
}
好了,现在打包。很简单,直接执行makepkg.现在得到文件
SayHello-0.1-20130324-x86_64.pkg.tar.xz,这个就是需要的archlinux安装包。
现在差不多是最后一步了,先建立仓库位置。
mkdir -pv ~/LocalRepo/Arch
cp SayHello-0.1-20130324-x86_64.pkg.tar.xz ~/LocalRepo/Arch/
cd ~/LocalRepo/Arch/
给仓库添加数据库。
repo-add ~/LocalRepo/Arch/LocalRepo.db.tar.gz SayHello-0.1-20130324-x86_64.pkg.tar.xz
最终的文件如下。
├── LocalRepo.db -> LocalRepo.db.tar.gz
├── LocalRepo.db.tar.gz
└── SayHello-0.1-20130324-x86_64.pkg.tar.xz
最后一步,在pacman.conf中加入本地库。
[LocalRepo]
Server = file:///××××××/LocalRepo/Arch/
好了,所有的流程都完毕了。可以开始测试了。
pacman -Sy
LocalRepo 428.0 B 569K/s 00:00 [######################] 100%
本地库已经载入
pacman -Sv SayHello
没有问题。
pacman -Rs SayHello
也没问题。
差不多就是这样了,当然,这只是最简单的应用。升级包什么的都没有做。纯粹是为了跑一遍流程。 |
|