+ -
当前位置:首页 → 问答吧 → archlinux里怎么自己做包替换系统已安装包中的文件?

archlinux里怎么自己做包替换系统已安装包中的文件?

时间:2009-11-04

来源:互联网

最近刚从ubuntu下转过来, 以前都用自己做deb安装包来管理配置文件, 比如自己做个fcitx-config来修改fcitx中的某些配置文件. 在debian/control里指定replaces的软件包就可以用于替换修改某个特定软件包里的文件了. 今天开始试着用arch来做类似的事情, 发现PKGBUILD里也有replaces, 但和debian系统里的不是一回事. 请教下各位, archlinux怎么实现类似的机理? 哎, 如果debian, ubuntu不是那么复杂也挺完美的

作者: ybyygu   发布时间: 2009-11-04

没发现还有个provides么?

作者: socket9999   发布时间: 2009-11-05

引用:
作者: socket9999
没发现还有个provides么?
代码:
pkgname=fcitx-config
pkgver=0.1
pkgrel=1
pkgdesc="personal configure files for fcitx"
arch=('any')
license=('GPL3')
#install=fcitx-config.install
url="http://code.google.com/p/fcitx/"
depends=('fcitx' 'wqy-zenhei')
provides=('fcitx')

build() {
 cd $startdir
 mkdir -p $startdir/pkg/usr/share/fcitx/data/
 install wb98.mb $startdir/pkg/usr/share/fcitx/data/
 install wb86.mb $startdir/pkg/usr/share/fcitx/data/
 install config $startdir/pkg/usr/share/fcitx/data/
 install tables.conf $startdir/pkg/usr/share/fcitx/data/
 mkdir -p $startdir/pkg/etc/profile.d/
 install fcitx.sh $startdir/pkg/etc/profile.d/
}
嗯, 搞定. debian里如果fcitx更新的话, 会自动用fcitx-config替换新装的配置文件, arch不知道能不能办到.

PS: 被ubuntu弄烦了, 发现arch真干净, 速度也快了不少啊

作者: ybyygu   发布时间: 2009-11-05

额,不好意思我没好好看。Arch里面的replaces是替换整个包,而不是个别文件。A provides(B)是指,该软件包A安装以后,当有别的包C依赖B时,即使B没有被安装,也看作满足依赖关系。

作者: socket9999   发布时间: 2009-11-05

是和debian里的不同, 不过自己的系统, 凑合着用就行. 看来debian对二进制包的管理仍然是最完善的.

作者: ybyygu   发布时间: 2009-11-05

目前还没发现怎么替换一个已经存在的文件,只能强行覆盖。

可能以后会遇到升级fcitx后,config,tables.conf文件被覆盖。然后你只能重装你这个fcitx-config。不过fcitx升级的时候config文件也会有变化,最好不要这样改系统配置文件。

好像/etc/pacman.conf里面可以设置一个backup可以不覆盖某些文件

如果你自己打包fcitx的话,可以在PKGBUILD里面写backups=()也可以保持这个文件不更新。

记得不清楚了。。

作者: jarryson   发布时间: 2009-11-05

引用:
作者: jarryson
目前还没发现怎么替换一个已经存在的文件,只能强行覆盖。

可能以后会遇到升级fcitx后,config,tables.conf文件被覆盖。然后你只能重装你这个fcitx-config。不过fcitx升级的时候config文件也会有变化,最好不要这样改系统配置文件。

好像/etc/pacman.conf里面可以设置一个backup可以不覆盖某些文件

如果你自己打包fcitx的话,可以在PKGBUILD里面写backups=()也可以保持这个文件不更新。

记得不清楚了。。
言之有理, 不同的系统有不同的哲学. arch要求KISS, 这里的问题可以认看作是特色了

作者: ybyygu   发布时间: 2009-11-05

其实另外一种灵活的方式是可以在.install文件中的post_install, post_upgrade函数中自行处理这些配置文件的替换或者内容的增删,但一定要小心处理。

作者: zlowly   发布时间: 2009-11-05