您尚未登录。

#1 2012-07-18 19:50:04

justzx
会员
注册时间: 2012-07-04
帖子: 55
个人网站

仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

# Maintainer: speps <speps at aur dot archlinux dot org>
pkgbase=openyoudao
pkgname=openyoudao
#true && pkgname=('openyoudao-gtk2')
pkgver=alpha
pkgrel=1
pkgdesc="a youdao client for linux"
arch=('any')
url="http://www.openyoudao.org/"
license=('LGPL3')
depends=('xclip' 'inotify-tools' 'python-xlib' 'python-lxml' 'python-requests')
makedepends=('python')
install="openyoudao.install"
source=("https://github.com/justzx2011/openyoudao/tarball/$pkgver")
md5sums=('52c2c1a4d30000ca3d3ce1e3ef3cf468')
#build() {
#  cd ${srcdir}/justzx2011-openyoudao-*
#  for _pkg in ${pkgname[@]/openyoudao-}; do
#    msg2 "Building $_pkg .."
#    [ -d bld-$_pkg ] || mkdir bld-$_pkg && pushd bld-$_pkg
#
#    cmake .. -DCMAKE_INSTALL_PREFIX=/usr \
#             -DWITH_GTK=`[[ $_pkg = gtk[23] ]] && echo ON || echo OFF` \
#             -DWITH_CHROME=OFF \
#             -DPYTHON_EXECUTABLE=/usr/bin/python2
#    make && popd
#  done
#}

package_openyoudao-gtk2() {
  cd ${srcdir}/justzx2011-openyoudao-*/bld-gtk2

  # bin
  install -Dm755 scripts/openyoudao \
    "$pkgdir/usr/bin/openyoudao"

  # libs
  install -d "$pkgdir/usr/lib/python2.7/site-packages/openyoudao"
  install -Dm644 openyoudao/*.py* \
    "$pkgdir/usr/lib/python2.7/site-packages/openyoudao"

  # desktop file
  install -Dm644 desktop/openyoudao.desktop \
    "$pkgdir/usr/share/applications/openyoudao.desktop"
}
# vim:set ts=2 sw=2 et:

1 程序使用gtk2和python编写的,是不是只要将文件放入相应的路径,并处理好权限问题就可以完成打包?

2 build() 函数是一个怎样的过程?

3 程序的安装和写在需要自己手动写脚本实现?还是可以通过makepkg自动完成?

离线

#2 2012-07-18 19:50:52

justzx
会员
注册时间: 2012-07-04
帖子: 55
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

openyoudao.install 文件内容如下:
post_install() {
  gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
  update-desktop-database -q
}

post_upgrade() {
  post_install
}

post_remove() {
  post_install
}

离线

#3 2012-07-18 20:00:31

phoenixlzx
晩ご飯だよー
注册时间: 2011-08-19
帖子: 1,789
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

openyoudao架构建议不要写any,除非是纯python

另外arch默认的python是python3,你如果使用的是python2那么depends是python2

PKGBUILD里package() 这里不要改,就是package(),里面写打包执行的一系列步骤。

build()里面写用源代码编译的步骤即可,如果没有源代码需要编译那么这一步可以省略

这是看一眼之后的一点建议,细节什么的,没注意看

离线

#4 2012-07-18 20:12:21

justzx
会员
注册时间: 2012-07-04
帖子: 55
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

以下是程序的目录树,没有需要编译的地方:
.
├── a
├── aur
│   ├── openyoudao.install
│   └── PKGBUILD
├── cache
│   ├── config.html
│   ├── construction
│   │   ├── icb
│   │   │   ├── body-end.txt
│   │   │   ├── body-start.txt
│   │   │   └── head.html
│   │   └── youdao
│   │       ├── body-end.txt
│   │       ├── body-start.txt
│   │       └── head.html
│   ├── css
│   │   ├── blue-glass
│   │   │   ├── inject-bottom.png
│   │   │   ├── inject-left.png
│   │   │   ├── inject-right.png
│   │   │   ├── inject-top.png
│   │   │   └── sidebar.css
│   │   ├── dark-glass
│   │   │   ├── inject-bottom.png
│   │   │   ├── inject-left.png
│   │   │   ├── inject-right.png
│   │   │   ├── inject-top.png
│   │   │   └── sidebar.css
│   │   ├── red-glass
│   │   │   ├── inject-bottom.png
│   │   │   ├── inject-left.png
│   │   │   ├── inject-right.png
│   │   │   ├── inject-top.png
│   │   │   └── sidebar.css
│   │   ├── result-min.css
│   │   └── style_result.css
│   ├── databases
│   │   └── file__0.localstorage
│   ├── images
│   │   ├── bg_more2.png
│   │   ├── blog_background.jpg
│   │   ├── down_arrow.gif
│   │   ├── icon
│   │   │   └── icon.jpg
│   │   ├── ok.png
│   │   ├── scrollbar_handle.gif
│   │   ├── scrollbar_track.gif
│   │   └── up_arrow.gif
│   └── js
│       ├── autocomplete.r156903.js
│       ├── extra.js
│       ├── huaci.js
│       ├── icibatop.js
│       ├── jquery.min.js
│       ├── jquery.sidebar.js
│       ├── jquery-ui.min.js
│       ├── jsScrollbar.js
│       ├── jsScroller.js
│       ├── jsScrollerTween.js
│       └── result-min.js
├── desktop
│   └── openyoudao.desktop
├── fusionicb.py
├── fusionyoudao.py
├── gl.py
├── README.md
├── record_xclip.py
├── ref
│   ├── browser.py
│   ├── inspector.py
│   └── scrolledwin.py
├── web
│   ├── css
│   │   ├── bootstrap.css
│   │   ├── bootstrap.min.css
│   │   ├── loading.gif
│   │   ├── themes
│   │   │   ├── dark.css
│   │   │   ├── font
│   │   │   │   ├── AbrilFatface-Average.css
│   │   │   │   ├── Arvo-PTSans.css
│   │   │   │   ├── Bevan-PotanoSans.css
│   │   │   │   ├── BreeSerif-OpenSans.css
│   │   │   │   ├── DroidSerif-DroidSans.css
│   │   │   │   ├── Lekton-Molengo.css
│   │   │   │   ├── Lora-Istok.css
│   │   │   │   ├── Merriweather-NewsCycle.css
│   │   │   │   ├── NixieOne-Ledger.css
│   │   │   │   ├── Pacifico-Arimo.css
│   │   │   │   ├── PlayfairDisplay-Muli.css
│   │   │   │   ├── PoiretOne-Molengo.css
│   │   │   │   ├── PT.css
│   │   │   │   ├── PTSerif-PTSans.css
│   │   │   │   ├── Rancho-Gudea.css
│   │   │   │   └── SansitaOne-Kameron.css
│   │   │   ├── timeline-dark.png
│   │   │   └── timeline-texture.png
│   │   ├── timeline.css
│   │   └── timeline.png
│   ├── fork_me_on_github.png
│   ├── img
│   │   ├── glyphicons-halflings.png
│   │   └── glyphicons-halflings-white.png
│   ├── index.html
│   ├── js
│   │   ├── bootstrap.js
│   │   ├── bootstrap.min.js
│   │   ├── jquery-min.js
│   │   ├── locale
│   │   │   ├── cz.js
│   │   │   ├── de.js
│   │   │   ├── dk.js
│   │   │   ├── en.js
│   │   │   ├── es.js
│   │   │   ├── fo.js
│   │   │   ├── fr.js
│   │   │   ├── id.js
│   │   │   ├── is.js
│   │   │   ├── it.js
│   │   │   ├── ja.js
│   │   │   ├── kr.js
│   │   │   ├── nl.js
│   │   │   ├── pl.js
│   │   │   ├── pt-br.js
│   │   │   ├── ru.js
│   │   │   ├── zh-ch.js
│   │   │   └── zh-tw.js
│   │   ├── timeline-embed.js
│   │   ├── timeline.js
│   │   └── timeline-min.js
│   ├── json
│   │   ├── timeline.json
│   │   └── timeline.json~
│   └── openyoudao.jpg
├── webshot.py
└── youdao.py

23 directories, 113 files

离线

#5 2012-07-18 20:17:27

justzx
会员
注册时间: 2012-07-04
帖子: 55
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

按照phoenixlzx建议修改之后的PKGBUILD:

# Maintainer: speps <speps at aur dot archlinux dot org>
pkgbase=openyoudao
pkgname=openyoudao
#true && pkgname=('openyoudao-gtk2')
pkgver=alpha
pkgrel=1
pkgdesc="a youdao client for linux"
arch=('x86_64' 'i686')
url="http://www.openyoudao.org/"
license=('LGPL3')
depends=('xclip' 'inotify-tools' 'python-xlib' 'python-lxml' 'python-requests')
makedepends=('python2')
install="openyoudao.install"
source=("https://github.com/justzx2011/openyoudao/tarball/$pkgver")
md5sums=('52c2c1a4d30000ca3d3ce1e3ef3cf468')
#build() {
#  cd ${srcdir}/justzx2011-openyoudao-*
#  for _pkg in ${pkgname[@]/openyoudao-}; do
#    msg2 "Building $_pkg .."
#    [ -d bld-$_pkg ] || mkdir bld-$_pkg && pushd bld-$_pkg
#
#    cmake .. -DCMAKE_INSTALL_PREFIX=/usr \
#             -DWITH_GTK=`[[ $_pkg = gtk[23] ]] && echo ON || echo OFF` \
#             -DWITH_CHROME=OFF \
#             -DPYTHON_EXECUTABLE=/usr/bin/python2
#    make && popd
#  done
#}

package_openyoudao-gtk2() {
  cd ${srcdir}/justzx2011-openyoudao-*/bld-gtk2

  # bin
  install -Dm755 scripts/openyoudao \
    "$pkgdir/usr/bin/openyoudao"

  # libs
  install -d "$pkgdir/usr/lib/python2.7/site-packages/openyoudao"
  install -Dm644 openyoudao/*.py* \
    "$pkgdir/usr/lib/python2.7/site-packages/openyoudao"

  # desktop file
  install -Dm644 desktop/openyoudao.desktop \
    "$pkgdir/usr/share/applications/openyoudao.desktop"
}
# vim:set ts=2 sw=2 et:

离线

#6 2012-07-18 20:37:17

cuihao
所在地: USTC, Hefei
注册时间: 2011-08-19
帖子: 1,222
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

你可以安装namcap检查一下生成的软件包有什么问题(依赖缺失什么的)。


Site: I-YU.ME   Twitter: @cuihaoleo   Org: LUG@USTC
AD:  ~欢迎参与志愿计算~

离线

#7 2012-07-18 20:42:15

phoenixlzx
晩ご飯だよー
注册时间: 2011-08-19
帖子: 1,789
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

package() 那行你还没改,还是 package_openyoudao-gtk2()

不过你程序的目录树怎么是这样的?aur里面存放PKGBUILD干嘛?

程序目录树不需要aur那个和里面的PKGBUILD神马的,那些是放在一个空文件夹里面然后执行 makepkg 来打包用的。

离线

#8 2012-07-18 20:50:59

phoenixlzx
晩ご飯だよー
注册时间: 2011-08-19
帖子: 1,789
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

索性照着你的再写一个吧。不过现在用不了Arch,所以没测试

其实也没啥改动的说....==

# Maintainer: justzx <your_email at example dot com>
#pkgbase=openyoudao    #这一行是干嘛的?,貌似没用,建议删掉
pkgname=openyoudao
#true && pkgname=('openyoudao-gtk2')
pkgver=alpha
pkgrel=1
pkgdesc="a youdao client for linux"
arch=('x86_64' 'i686')
url="http://www.openyoudao.org/"
license=('LGPL3')
depends=('python2' 'xclip' 'inotify-tools' 'python-xlib' 'python-lxml' 'python-requests')    #这一行里面建议检查下python有关的依赖是py2还是py3
#makedepends=('python2')    #这一行不需要。你没有编译步骤,这一行是编译完了提示不再需要的包。写到depends里就好了
install="openyoudao.install"
source=("https://github.com/justzx2011/openyoudao/tarball/$pkgver")
md5sums=('52c2c1a4d30000ca3d3ce1e3ef3cf468')
#build() {
#  cd ${srcdir}/justzx2011-openyoudao-*
#  for _pkg in ${pkgname[@]/openyoudao-}; do
#    msg2 "Building $_pkg .."
#    [ -d bld-$_pkg ] || mkdir bld-$_pkg && pushd bld-$_pkg
#
#    cmake .. -DCMAKE_INSTALL_PREFIX=/usr \
#             -DWITH_GTK=`[[ $_pkg = gtk[23] ]] && echo ON || echo OFF` \
#             -DWITH_CHROME=OFF \
#             -DPYTHON_EXECUTABLE=/usr/bin/python2
#    make && popd
#  done
#}
package() {
  cd ${srcdir}/justzx2011-openyoudao-*/bld-gtk2
  # bin
  install -Dm755 scripts/openyoudao \
    "$pkgdir/usr/bin/openyoudao"
  # libs
  install -d "$pkgdir/usr/lib/python2.7/site-packages/openyoudao"
  install -Dm644 openyoudao/*.py* \
    "$pkgdir/usr/lib/python2.7/site-packages/openyoudao"
  # desktop file
  install -Dm644 desktop/openyoudao.desktop \
    "$pkgdir/usr/share/applications/openyoudao.desktop"
}

package里面我就没仔细看了,不过应该不会有问题

离线

#9 2012-07-18 22:06:18

justzx
会员
注册时间: 2012-07-04
帖子: 55
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

这是检查依赖之后的结果:

namcap openyoudao-alpha-1-i686.pkg.tar.xz
openyoudao W: No ELF files and not an "any" package
openyoudao W: Dependency included and not needed ('xclip')
openyoudao W: Dependency included and not needed ('inotify-tools')
openyoudao W: Dependency included and not needed ('python-xlib')
openyoudao W: Dependency included and not needed ('python-lxml')
openyoudao W: Dependency included and not needed ('python-requests')

离线

#10 2012-07-18 22:07:55

justzx
会员
注册时间: 2012-07-04
帖子: 55
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

程序运行需要用到这些库文件和工具,但是教程中说的依赖到底是指:

编译程序所需的依赖?

还是运行程序所需要的基本环境?

离线

#11 2012-07-18 22:10:19

justzx
会员
注册时间: 2012-07-04
帖子: 55
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

按照建议修改之后,运行makepkg,提示如下错误:

/home/justzx/aur/project/openyoudao/aur/PKGBUILD: line 28: cd: /home/justzx/aur/project/openyoudao/aur/src/justzx2011-openyoudao-*/bld-gtk2: No such file or directory
==> ERROR: A failure occurred in package().
    Aborting...

离线

#12 2012-07-18 22:13:42

justzx
会员
注册时间: 2012-07-04
帖子: 55
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

目录aur目前用做测试,等打包完成后,会将其转到其它分支。

离线

#13 2012-07-18 22:33:35

phoenixlzx
晩ご飯だよー
注册时间: 2011-08-19
帖子: 1,789
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

你package()里面出错了

28行:cd ${srcdir}/justzx2011-openyoudao-*/bld-gtk2

depends是程序运行必需的依赖,makedepends是编译程序所需的依赖,运行不一定需要,optdepends是安装完后提示的可选依赖

离线

#14 2012-07-18 22:50:57

justzx
会员
注册时间: 2012-07-04
帖子: 55
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

由于程序用python编写,没有涉及到编译,package()完成的工作是不是将程序对应的*.py文件 和 资源文件放入系统指定目录中?
1 在linux下程序安放目录有什么要求?
2 如何指定程序文件的权限?
3 如果想在终端直接运行程序:输入openyoudao即可运行,那么是不是要设置环境变量?抑或通过简单的脚本实现程序的终端运行?

离线

#15 2012-07-18 23:08:01

phoenixlzx
晩ご飯だよー
注册时间: 2011-08-19
帖子: 1,789
个人网站

Re: 仿照hotot给自己程序编写了PKGBUILD,还请大家帮忙指正?

对。

一般的应用程序arch和debian没啥不一样,看你在用debian就这样简单说了吧。

程序文件755就对的啊,应该没什么需要改的

不需要,只要你的程序装在了 PATH里就行。你可以执行 echo $PATH 看看都有哪些目录

离线

页脚