有没有不依赖服务器的版本控制软件?
时间:2006-03-30
来源:互联网
作者: shannleon 发布时间: 2006-03-30
版本控制的问题,看看这篇文章。
http://www.linux.com/article.pl?sid=06/03/02/174227
不过我还是不太理解你的意思。
作者: seamonkey 发布时间: 2006-03-30
CVS这样的版本控制软件需要个服务器,下源码都得连上这个服务器。分享 SlackBuild 这种小东西,有没有什么不需要服务器的版本控制软件?有点像 P2P 类型的。唉,我也就是突发奇想。高手们别笑话了。
Makefile 的问题是顺便一问。在尝试把我的 SlackBuild 脚本变成 Makefile 。现在我这个小小的库里只有 4 个软件:kmplayer kaffeine fcitx amarok 。还在找错误中,我自己都不信任。学学走走吧。
昨天才第一次看了一下 Makefile 的写法。说实在的,不懂。只是觉得 make 可以帮忙排除掉一些错误比较方便。写了个很初级的,当个示例,明白我意思就得了(我知道我写得很烂)。
目录结构是
slackbuilds/{chinese,multimedia,mk,distfiles,packages}
kaffeine 就是 slackbuilds/multimedia/kaffeine
make fetch 下载源码
make extract 解压源码,放在 /tmp/work 底下
make build 编译
make package 打成 Slackware 包。
现在基本还是一步步来,装个软件要用 make fetch build package clean 以后再搞一条龙的服务吧。
这是 kaffeine 的 Makefile :
# $Id: Makefile,v 1.1 2006/03/30 18:15:08 shannleon Exp $ NAME = kaffeine VERSION = 0.8 EXT = tar.bz2 SITE = http://jaist.dl.sourceforge.net/sourceforge/kaffeine PREFIX = /opt/kde OPTS = --without-dvb OPTS += --without-gstreamer OPTS += --without-oggvorbis OPTS += --without-lame include ../../mk/slack.build.mk
# $Id: slack.build.mk,v 1.1 2006/03/30 18:15:46 shannleon Exp $ NAME ?= VERSION ?= EXT ?= tar.bz2 SITE ?= #---------------------------------------------------------------------- ARCH ?= i686 CPU ?= athlon64 BUILD ?= 1yjs CC ?= gcc CXX ?= g++ CFLAGS ?= -march=${ARCH} -mtune=${CPU} -O2 -pipe CXXFLAGS ?= ${CFLAGS} PREFIX ?= /usr OPTS += #---------------------------------------------------------------------- REALNAME = ${NAME}-${VERSION} FULLNAME = ${REALNAME}.${EXT} PORTNAME = $(subst -,_,${NAME}) PORTVERSION = $(subst -,,${VERSION}) PKGNAME = ${PORTNAME}-${PORTVERSION}-${ARCH}-${BUILD}.tgz DISTFILES = ${CWD}/../../distfiles PACKAGES = ${CWD}/../../packages FETCHCMD ?= /usr/bin/wget TAR ?= /bin/tar #---------------------------------------------------------------------- CWD = $(shell pwd) TMPDIR = /tmp/work SRCDIR = ${TMPDIR}/${REALNAME} PKGDIR = ${TMPDIR}/package-${NAME} DOCDIR = ${PKGDIR}/usr/doc/${REALNAME} #---------------------------------------------------------------------- ## RULES # .PHONY: fetch extract build package clean all: ##### fetch # fetch: ${FETCHCMD} ifneq ($(shell [[ -f ${DISTFILES}/${FULLNAME} ]] && echo 0),0) @echo " ==> Fetching ${DISTFILES}/${FULLNAME} " cd ${DISTFILES} && \ ${FETCHCMD} ${SITE}/${FULLNAME} @echo " ==> Done fetching " endif ##### extract # extract: ${DISTFILES}/${FULLNAME} ifneq ($(shell [[ -d ${SRCDIR} ]] && echo 0),0) @echo " ==> Extracting ${DISTFILES}/${FULLNAME} " mkdir ${TMPDIR} ifeq (${EXT},tar.bz2) ${TAR} jxvf ${DISTFILES}/${FULLNAME} -C ${TMPDIR} else ${TAR} zxvf ${DISTFILES}/${FULLNAME} -C ${TMPDIR} endif @echo " ==> Done extracting " endif ##### build # build: extract ${SRCDIR} @echo " ==> Building ${REALNAME} " cd ${SRCDIR} && \ CC="${CC}" CXX="${CXX}" \ CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ ./configure --prefix=${PREFIX} ${OPTS} && \ make && \ make install DESTDIR=${PKGDIR} mkdir -p ${DOCDIR} cp $(wildcard ${SRCDIR}/[A-Z]*) ${DOCDIR} @echo " ==> Done building " ##### package # package: ${PKGDIR} slack-desc @echo " ==> Making ${PACKAGES}/${PKGNAME} " cd ${PKGDIR} && \ find . | xargs file | grep "current ar archive" \ | cut -f 1 -d : | xargs strip --strip-debug 2>/dev/null; \ find . | xargs file | grep "executable" | grep "ELF" \ | cut -f 1 -d : | xargs strip --strip-unneeded 2>/dev/null; \ find . | xargs file | grep "shared object" | grep "ELF" \ | cut -f 1 -d : | xargs strip --strip-unneeded 2>/dev/null; \ /bin/true mkdir ${PKGDIR}/install cat slack-desc > ${PKGDIR}/install/slack-desc ifeq ($(shell [[ "`id -u`" = "0" ]] && echo 0),0) cd ${PKGDIR} && \ chown -R root.root . && \ /sbin/makepkg -l y -c n ${PACKAGES}/${PKGNAME} endif @echo " ==> Done making package " ##### clean # clean: ${TMPDIR} @echo " ==> Cleaning up ${TMPDIR} " rm -rf ${TMPDIR} @echo " ==> Done cleaning "
作者: shannleon 发布时间: 2006-03-31
脚本的话,每一条命令都检查错误,实在是不行
两者结合会比较好
slackware算是保守主义吧,而且一个东西,用了那么多年,不大可能一下子推倒重来的
作者: baldzhang 发布时间: 2006-03-31
shannleon你对Slackware的包管理系统的改进做了不少探索,我倒觉得你可以像fanx那样,自己做个发行版,基于Slackware,但把你的探索成果加入其中,包管理是发行版的根基,用户很难动摇。但根难动,老根上发新芽不是没可能。很多发行版不就是从已有发行版fork而出的吗。
分享 SlackBuild ,在论坛贴我看也够了,Arch版不就是那么做的吗。
作者: seamonkey 发布时间: 2006-03-31
没有把 swaret 或 slapt-get 加进去是不是有鼓励竞争的意味?一旦加入其中之一那就成事实上的标准了。同时加两个可能又会造成点混乱。
我现在这个东西对我个人能用,但是你看看也知道没有到可以大量使用的地步。更况且,我反对有一点点不一样的东西就做新的发行版。
有对熟悉的朋友请帮忙挑挑上面的 Makefile 的毛病,多谢了 :^)
作者: shannleon 发布时间: 2006-03-31
作者: seamonkey 发布时间: 2006-03-31
比如,检查一个文件是否存在该怎么做?我上面的完全是临时办法
ifneq ($(shell [[ -f filename ]] && echo 0),0) endif
作者: shannleon 发布时间: 2006-03-31
作者: seamonkey 发布时间: 2006-03-31
作者: shannleon 发布时间: 2006-03-31
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28