我想为 MediaWiki 1.25.1 创建一个易于安装的 debian 包(.deb 文件),因为从个人经验中我知道,对于像我这样的网络编程新手来说,安装 MediaWiki 似乎是一项不可能完成的任务。
我读过一些关于如何创建 Debian 软件包的指南,例如这个适合 Ubuntu 用户和Debian Wiki 上的这个,但如果我错了请纠正我,但他们似乎只提到通过实用程序安装的软件包make
,而 MediaWiki 作为一个 Wiki 应用程序已安装(如果您甚至可以称之为安装)通过为 Wiki 创建 Apache 和 MySQL 服务器数据库并运行安装脚本。但我知道可以制作这样的 debian 软件包,因为 PPA 存储库中有一个非常老版本的 MediaWiki(1.19),而且它是一个 debian 软件包。
我知道任何这样的包需要做的基本程序,即(你应该注意到,我的大部分内容都是从我自己的记忆中得到的,加上mediwiki.org 上的这篇文章):
- 安装 LAMP,或至少安装软件包、、
apache2
和。可能通过。mysql-server
php5
php5-mysql
libapache2-mod-php5
sudo apt-get install apache2 mysql-server php5 php5-mysql libapache2-mod-php5
- 安装一些附加软件包(严格来说,它们是可选的,但它们非常有用,特别是如果你是 MediaWiki 新手),例如
imagemagick
、inkscape
和,也可以通过如果在安装过程中可以弹出 GUI 并提示用户应该安装哪些可选软件包php5-cli
,那就太好了。这样的界面还可以完成设置 MySQL 密码的过程)phpmyadmin
sudo apt-get install...
- 将 MediaWiki 1.25.1 的 tarball 解压到
/var/lib/mediawiki
/var/lib/mediawiki
在和之间创建虚拟链接/var/www/html/mediawiki
(通过运行sudo ln -s /var/lib/mediawiki /var/www/html/mediawiki
)- 跑步
mysql_secure_installation
- 配置 PHP(用户可选)并重新启动 Apache。
- 配置 Apache(有关更多详细信息,请参阅我超链接的 mediawiki.org 文章)
- 打开浏览器http://localhost/mediawiki完成MediaWiki配置。
我只是不知道如何创建一个可以做到这一点的 Debian 包。所以总而言之,我希望有人能帮我做到这一点,这样未来的用户在 Ubuntu 上安装 MediaWiki 可能会更容易一些。
我自己尝试创建一个包
我创建了一个目录,/home/fusion809/Debian packaging/bzr
因此我可以尝试以下操作本指南在mediawiki-1.25.1.tar.gz
tarball 上。我开始这里在指南中,我创建的 debian 包(通过bzr builddeb...
在我的/home/fusion809/Debian packaging/bzr/mediawiki/debian
目录中运行命令)只有 2.4 kB 大小(其中 tarball 为 23.7 MB)并出现错误消息:
install-info: warning: no info dir entry in `/usr/share/info/lilypond/pictures/ross-beam-scan.jpg'
install-info: warning: no info dir entry in `/usr/share/info/lilypond/pictures/carter-brey.jpg'
install-info: warning: no info dir entry in `/usr/share/info/lilypond/pictures/darius-blasband.jpg'
install-info: warning: no info dir entry in `/usr/share/info/lilypond/pictures/orm-finnendahl.jpg'
install-info: warning: no info dir entry in `/usr/share/info/mime.info.gz'
当我尝试安装它时。如果您想知道我的control
文件是什么样子的,它在这里:
Source: mediawiki
Section: unknown
Priority: optional
Maintainer: Brenton Horne <[email protected]>
Build-Depends: debhelper (>= 9)
Standards-Version: 3.9.5
Homepage: <insert the upstream URL, if relevant>
#Vcs-Git: git://anonscm.debian.org/collab-maint/mediawiki.git
#Vcs-Browser: http://anonscm.debian.org/?p=collab-maint/mediawiki.git;a=summary
Package: mediawiki
Architecture: all
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: MediaWiki, a free wiki application.
MediaWiki is a free and open-source wiki application written in PHP that is maintained by the Wikimedia Foundation. It depends on
Apache, MySQL and PHP.
我的rules
文件如下:
#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#DH_VERBOSE = 1
# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
# main packaging script based on dh7 syntax
%:
dh $@
# debmake generated override targets
# This is example for Cmake (See http://bugs.debian.org/641051 )
#override_dh_auto_configure:
# dh_auto_configure -- \
# -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)
答案1
Debian/Ubuntu 中的软件包不必使用 来构建make
。从技术上讲,在 中debian/rules
,只需要满足某些目标。以下是我(和 Debian 的 Flightgear 小组)用来将文件从独立于架构的 tarball(不涉及编译,只复制文件)复制到软件包中的方法。
%:
dh $@
override_dh_auto_install:
dh_installdirs -pflightgear-data-aircrafts-ec130 usr/share/games/flightgear/Aircraft/ec130
find -maxdepth 1 ! -name 'debian' -exec cp -r "{}" \
debian/flightgear-data-aircrafts-ec130/usr/share/games/flightgear/Aircraft/ec130 \;
# Fix some insane permissions
find $(CURDIR)/debian/flightgear-data-*/usr/share/games/flightgear \
-type f -exec chmod 644 {} \;
# Drop some silly Windows PE32 executable files
find $(CURDIR)/debian -type f -iname "*.mdl" -delete
# Drop empty directories
find $(CURDIR)/debian -type d -empty -delete
基本上,override_dh_auto_install
只是将源 tarball 中的文件复制到最终包中,并删除一些不需要的文件。由于源 tarball 中没有“编译”文件,因此其他一些目标不执行任何操作。
您可以按照类似这样的方法(以及使用postinst
和prerm
脚本)来自动执行您提到的步骤。请注意,其他软件包的安装将以、或 的debian/control
形式进入。Depends
Recommends
Suggests
答案2
我建议使用uupdate
from 来devscripts
为您的 deb 包获得良好的开端。
安装所需的软件包
$ sudo apt-get install build-essential devscripts
从官方存储库下载旧软件包,并从上游下载新 tar-ball。(我使用的是 14.04)
$ mkdir ~/Downloads/mediawiki
$ cd ~/Downloads/mediawiki
$ apt-get source mediawiki
$ wget http://releases.wikimedia.org/mediawiki/1.25/mediawiki-1.25.1.tar.gz
运行uupdate
以从上游 tar-ball 和旧版本创建一个新的源文件夹debian/control
$ cd mediawiki-1.19.14+dfsg # depends on your Ubuntu version
$ uupdate ../mediawiki-1.25.1.tar.gz 1.25.1
$ cd ../mediawiki-1.25.1
现在你应该检查是否需要更改debian/control
etc 文件。如果已完成,你可以构建 deb 包并安装它
$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb