# 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自动完成?
离线
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
}
离线
openyoudao架构建议不要写any,除非是纯python
另外arch默认的python是python3,你如果使用的是python2那么depends是python2
PKGBUILD里package() 这里不要改,就是package(),里面写打包执行的一系列步骤。
build()里面写用源代码编译的步骤即可,如果没有源代码需要编译那么这一步可以省略
这是看一眼之后的一点建议,细节什么的,没注意看
离线
以下是程序的目录树,没有需要编译的地方:
.
├── 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
离线
按照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:
离线
你可以安装namcap检查一下生成的软件包有什么问题(依赖缺失什么的)。
Site: CVHC.CC Twitter: @cuihaoleo Org: LUG@USTC
AD: ~欢迎参与志愿计算~
离线
package() 那行你还没改,还是 package_openyoudao-gtk2()
不过你程序的目录树怎么是这样的?aur里面存放PKGBUILD干嘛?
程序目录树不需要aur那个和里面的PKGBUILD神马的,那些是放在一个空文件夹里面然后执行 makepkg 来打包用的。
离线
索性照着你的再写一个吧。不过现在用不了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里面我就没仔细看了,不过应该不会有问题
离线
这是检查依赖之后的结果:
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')
离线
程序运行需要用到这些库文件和工具,但是教程中说的依赖到底是指:
编译程序所需的依赖?
还是运行程序所需要的基本环境?
离线
按照建议修改之后,运行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...
离线
目录aur目前用做测试,等打包完成后,会将其转到其它分支。
离线
你package()里面出错了
28行:cd ${srcdir}/justzx2011-openyoudao-*/bld-gtk2
depends是程序运行必需的依赖,makedepends是编译程序所需的依赖,运行不一定需要,optdepends是安装完后提示的可选依赖
离线
由于程序用python编写,没有涉及到编译,package()完成的工作是不是将程序对应的*.py文件 和 资源文件放入系统指定目录中?
1 在linux下程序安放目录有什么要求?
2 如何指定程序文件的权限?
3 如果想在终端直接运行程序:输入openyoudao即可运行,那么是不是要设置环境变量?抑或通过简单的脚本实现程序的终端运行?
离线
对。
一般的应用程序arch和debian没啥不一样,看你在用debian就这样简单说了吧。
程序文件755就对的啊,应该没什么需要改的
不需要,只要你的程序装在了 PATH里就行。你可以执行 echo $PATH 看看都有哪些目录
离线