LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 994|回复: 11

[arch][PKGBUILD]scrot

[复制链接]
发表于 2005-5-11 08:25:36 | 显示全部楼层 |阅读模式
一个X虚拟终端下的命令行抓屏程序。

  1. pkgname=scrot
  2. pkgver=0.8
  3. pkgrel=1
  4. pkgdesc="scrot is a commandline screen capture util like import, but using imlib2"
  5. url="http://linuxbrit.co.uk/scrot/"
  6. depends=(giblib x-server)
  7. source=(http://linuxbrit.co.uk/downloads/$pkgname-$pkgver.tar.gz)
  8. md5sums=(ccae904d225609571bdd3b03445c1e88)

  9. build() {
  10.   cd $startdir/src/$pkgname-$pkgver
  11.   ./configure --prefix=/usr
  12.   make || return 1
  13.   make DESTDIR=$startdir/pkg install
  14.   mkdir -p $startdir/pkg/usr/local/bin
  15.   ln -s /usr/bin/scrot /usr/local/bin/scrot
  16. }
复制代码

菜鸟写的一个PKGBUILD不知道有没有人发过没有。
最后的两行,就是建一个链接,不建这个链接的话,运行scrot命令会提示/usr/local/bin下找不到scrot这个文件。明明PATH变量里有/usr/bin和/usr/local/bin两项,不知道是怎么回事?
但是多了这最后的两行,如果pacman -R scrot以后,再次makepkg -c的话,会提示已经存在/usr/local/bin/scrot,导致失败.请教下,要怎么修正这个问题呢?
发表于 2005-5-11 14:38:08 | 显示全部楼层
兄弟,我试过了。

首先,不加最后那个连接,也可以运行的。不知道你那里为什么不可以。

其次,如果非要加那个连接,也不要在/usr/local/bin/上建连接啊这样的话,那个建好的连接不是包含在包内的。而是直接建到系统里了。所以pacman -R之后,那个连接并不会被删除。再makepkg的时候当然会因为已经存在而提示出错。

所以,解决的办法是把那一行换成ln -s ../../bin/scrot $startdir/pkg/usr/local/bin/scrot

当然。最好不要加这个没用的连接。我这里没有它一样可以工作的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-11 17:54:44 | 显示全部楼层
曾经用的是 ln -s $startdir/pkg/usr/bin/scrot $startdir/pkg/usr/local/bin/scrot
可惜一运行就报错“找不到/usr/local/bin/scrot”之类的东西。所以我干脆就在/usr/local/bin/scrot底下建一个。
对PKGBUILD和pacman理解有误,多谢兄弟指点了。 :thank  :thank 谢谢。
回复 支持 反对

使用道具 举报

发表于 2005-5-11 18:49:23 | 显示全部楼层
其实是你对ln的理解不够。你试试自己手动执行ln -s $startdir/pkg/usr/bin/scrot $startdir/pkg/usr/local/bin/scrot
看看有什么结果:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-16 16:26:51 | 显示全部楼层
晕,又是一个编译打包安装完后,运行提示找不到/usr/local/bin/XXX的程序:zinf
[root@chenpp zinf]# zinf
bash: /usr/local/bin/zinf: 没有那个文件或目录
[root@chenpp zinf]# cat PKGBUILD
pkgname=zinf
pkgver=2.2.5
pkgrel=1
source=($pkgname-$pkgver.tar.gz)
md5sums=()

build() {
  cd $startdir/src/$pkgname-$pkgver
  ./configure --prefix=/usr --enable-cmdline
  make || return 1
  make DESTDIR=$startdir/pkg install
}
非得使用./configure --prefix=/usr/local不可。用./configure --prefix=/usr 就是不行。狂晕中。
回复 支持 反对

使用道具 举报

发表于 2005-5-16 16:44:02 | 显示全部楼层
有的makefile不支持DESTDIR,试试make prefix=$startdir/pkg/usr install

兄弟把下载地址贴出来,我试试看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-16 16:50:18 | 显示全部楼层
make prefix=$startdir/pkg/usr install,这个我已经试过了。老样子。今天 编译了zinf不下5遍了。只有./configure --prefix=/usr/local这个可行。
对了,忘了说了,scrot和zinf,在我用makepkg -c进行编译之前,我曾经直接用./configure make make install编译安装 ,然后用make uninstall卸载过。手动编译安装的默认安装路径就是/usr/local/bin.难道系统会有记录?
那我在makepkg -c scim之前也曾经手动编译过scim,怎么scim就好好的。再晕。 :confused:

下载地址http://prdownloads.sourceforge.net/zinf/zinf-2.2.5.tar.gz
回复 支持 反对

使用道具 举报

发表于 2005-5-16 17:04:58 | 显示全部楼层
应该是之前你make install影响了什么。我这里没问题。

  1. pkgname=zinf
  2. pkgver=2.2.5
  3. pkgrel=1
  4. source=(http://dl.sourceforge.net/zinf/$pkgname-$pkgver.tar.gz)
  5. md5sums=()

  6. build() {
  7. cd $startdir/src/$pkgname-$pkgver
  8. ./configure --prefix=/usr --enable-cmdline
  9. make || return 1
  10. make DESTDIR=$startdir/pkg install
  11. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-5-16 17:09:32 | 显示全部楼层
你制作包的目录,是直接使用的过去的源码目录吗?如果是的话,make clean && make distclean,然后再试试。如果不行,把源码目录删除,再makepkg试试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-16 17:25:39 | 显示全部楼层
不是啊,我起先把zinf的tar.gz包放在一个目录里,tar zxvf zinf-2.2.5.tar.gz,为了看看编译的参数和试试能否编译,而手动编译的。
卸载之后 ,cd .. -->  rm -fr zinf-2.2.5   -->写一个PKGBUILD-->makepkg -c.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表