我自己尝试创建一个包

我自己尝试创建一个包

我想为 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-serverphp5php5-mysqllibapache2-mod-php5sudo apt-get install apache2 mysql-server php5 php5-mysql libapache2-mod-php5
  • 安装一些附加软件包(严格来说,它们是可选的,但它们非常有用,特别是如果你是 MediaWiki 新手),例如imagemagickinkscape和,也可以通过如果在安装过程中可以弹出 GUI 并提示用户应该安装哪些可选软件包php5-cli,那就太好了。这样的界面还可以完成设置 MySQL 密码的过程)phpmyadminsudo 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.gztarball 上。我开始这里在指南中,我创建的 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 中没有“编译”文件,因此其他一些目标不执行任何操作。

您可以按照类似这样的方法(以及使用postinstprerm脚本)来自动执行您提到的步骤。请注意,其他软件包的安装将以、或 的debian/control形式进入。DependsRecommendsSuggests

答案2

我建议使用uupdatefrom 来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/controletc 文件。如果已完成,你可以构建 deb 包并安装它

$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb

相关内容