免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2318 | 回复: 2
打印 上一主题 下一主题

[系统] 一步步在archlinux中建立自己的软件库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-25 21:26 |只看该作者 |倒序浏览
原创文章,如需转载请注明出处。

       本来只是想做个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
也没问题。


      差不多就是这样了,当然,这只是最简单的应用。升级包什么的都没有做。纯粹是为了跑一遍流程。

论坛徽章:
0
2 [报告]
发表于 2013-03-29 16:11 |只看该作者
我安装的archlinux总是启动不起来,求安装策略。

论坛徽章:
0
3 [报告]
发表于 2013-04-01 12:09 |只看该作者
archlinux 有非常详细的wiki教程,只要你是按照wiki上安装的基本上是没问题的。
除非你设置方面有什么特殊的地方。

启动不起来的提示是什么?贴出来看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP