让msys2支持cygstart
2015-06-13 本文已影响1179人
陌辞寒
Cygwin中有一个很有用的工具,cygstart
,可以使用默认的程序打开任意文件,以及使用超级管理员运行命令(cygstart --action=runas
)等。但msys2每个这个命令,使用超级管理员运行命令的功能几乎没有替代品。
但后来我想到既然msys2是从cygwin改的,应该也能编译出来cygstart
,折腾一番后果然可以。
首先需要一个popt,PKGBUILD:
# Maintainer: Gore Liu <goreliu@126.com>
pkgname=popt
pkgver=1.16
pkgrel=7
pkgdesc="A commandline option parser"
arch=('i686' 'x86_64')
url="http://rpm5.org"
license=('custom')
source=(http://rpm5.org/files/${pkgname}/${pkgname}-${pkgver}.tar.gz)
sha1sums=('cfe94a15a2404db85858a81ff8de27c8ff3e235e')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr
if [ $(grep '^static int$' poptconfig.c | wc -l) -ne 1 ]; then
exit 1
fi
sed -i 's/^static int$/int/g' poptconfig.c
make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
install -Dm644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
}
然后就是包含cygstart的cygutils,PKGBUILD:
# Maintainer: Gore Liu <goreliu@126.com>
pkgname=cygutils
pkgver=1.4.14
pkgrel=1
pkgdesc="A collection of simple cygwin utilities"
arch=('i686' 'x86_64')
url="http://cygutils.fruitbat.org/cygutils-package/index.html"
license=('custom')
depends=('popt')
source=("http://mirror.bit.edu.cn/cygwin/x86_64/release/cygutils/${pkgname}-${pkgver}-1-src.tar.bz2")
sha1sums=('f9f5ae35ba61aa6efccf9581c2b019c26ea6671a')
build() {
cd "${srcdir}"
tar -xf ${pkgname}-${pkgver}.tar.xz
cd ${pkgname}-${pkgver}
./configure --prefix=/usr
sed -i 's/stricmp/strcasecmp/g' src/lpr/Printer.cc
make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
install -Dm644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
for i in `find -name '*.exe'`; do
cp $i "${pkgdir}"/usr/bin/
done
}
依次保存为PKGBUILD文件,运行makepkg
,然后使用pacman auto -U *.pkg.*
就可以了。
更多的msys2包,https://github.com/goreliu/my-MSYS2-Packages。官方的repo对于msys2分支的PKGBUILD要求很苛刻,基本不收,之后自己维护了。如果有朋友有其他的PKGBUILD,可以一起维护。
付费解决 Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua 等领域相关问题,灵活定价,欢迎咨询,微信 ly50247。