Другие ответы достаточно хороши о разнице между Ubuntu/Debian и Arch Linux, но на самом деле они не "технически ориентированы" ... Я не специалист, я всего лишь архивный пользователь и сопровождающий AUR, но я постараюсь сделать все возможное, чтобы ответить на этот вопрос более "технически".
Пожалуйста, примите во внимание следующее как неполное, поскольку я говорю только о различиях (и я все еще не закончил, но основные различия есть). На самом деле, поскольку я не понимаю, почему нужно менять ОП, я не могу правильно ответить на вторую часть вопроса ОП.
Поскольку я не являюсь постоянным пользователем Ubuntu/Debian, у этого ответа может быть недостаток объяснения Debian/Ubuntu.
отличия
PKGBUILD
Как пользователь Arch и сопровождающий AUR, первое, что я делаю, и первое, что каждый пользователь Arch должен делать, когда возникает такой вопрос, - это прочитать PKGBUILD пакета Apache, который можно найти здесь.
Итак, в то время, когда я пишу это, это выглядит следующим образом
# $Id$
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
pkgname=apache
pkgver=2.4.27
pkgrel=1
pkgdesc='A high performance Unix-based HTTP server'
arch=('i686' 'x86_64')
url='http://www.apache.org/dist/httpd'
license=('APACHE')
backup=(
etc/httpd/conf/httpd.conf
etc/httpd/conf/extra/httpd-{autoindex,dav,default,info,languages}.conf
etc/httpd/conf/extra/httpd-{manual,mpm,multilang-errordoc}.conf
etc/httpd/conf/extra/httpd-{ssl,userdir,vhosts}.conf
etc/httpd/conf/extra/proxy-html.conf
etc/httpd/conf/{mime.types,magic}
etc/logrotate.d/httpd
)
depends=('zlib' 'apr-util' 'pcre' 'libnghttp2' 'openssl')
makedepends=('libxml2' 'lua')
optdepends=(
'lua: for mod_lua module'
'libxml2: for mod_proxy_html, mod_xml2enc modules'
'lynx: apachectl status'
)
source=(
https://www.apache.org/dist/httpd/httpd-${pkgver}.tar.bz2{,.asc}
openssl-malloc-init.patch
apache.tmpfiles.conf
httpd.logrotate
httpd.service
arch.layout
)
sha256sums=('71fcc128238a690515bd8174d5330a5309161ef314a326ae45c7c15ed139c13a'
'SKIP'
'd305f8b52ac2a9bbda7bb0776496471e69e9d30642740f594d00086a8c7e344c'
'63da1a420f4714a3e7af2672d28384419cc7eedbe7bf35baebd02938fabc15bf'
'0bbbfae23a917b2fce0bf8f900f60319b50769224a96314e9301a75ccd078e16'
'f574bac6d5f398e7a649fc0e1ca66ff01ad4ef34dac71258e93d8a9d9a2b3960'
'dda05c6e76f12624e418ca18a36f2e90ec1c5b1cc52fed7142fce6076ec413f3')
validpgpkeys=('A93D62ECC3C8EA12DB220EC934EA76E6791485A8') # Jim Jagielski
prepare() {
cd httpd-${pkgver}
# set default user
sed -e 's#User daemon#User http#' \
-e 's#Group daemon#Group http#' \
-i docs/conf/httpd.conf.in
cat "${srcdir}/arch.layout" >> config.layout
# https://github.com/openssl/openssl/issues/2865
patch -Np1 -i ../openssl-malloc-init.patch
}
build() {
cd httpd-${pkgver}
./configure --sbindir=/usr/bin \
--enable-layout=Arch \
--enable-mpms-shared=all \
--enable-modules=all \
--enable-mods-shared=all \
--enable-so \
--enable-suexec \
--with-suexec-caller=http \
--with-suexec-docroot=/srv/http \
--with-suexec-logfile=/var/log/httpd/suexec.log \
--with-suexec-bin=/usr/bin/suexec \
--with-suexec-uidmin=99 --with-suexec-gidmin=99 \
--enable-ldap --enable-authnz-ldap --enable-authnz-fcgi \
--enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \
--enable-ssl --with-ssl \
--enable-deflate --enable-cgi --enable-cgid \
--enable-proxy --enable-proxy-connect \
--enable-proxy-http --enable-proxy-ftp \
--enable-dbd --enable-imagemap --enable-ident --enable-cern-meta \
--enable-lua --enable-xml2enc --enable-http2 \
--with-apr=/usr/bin/apr-1-config \
--with-apr-util=/usr/bin/apu-1-config \
--with-pcre=/usr
make
}
package() {
cd httpd-${pkgver}
make DESTDIR="${pkgdir}" install
install -D -m644 "${srcdir}/httpd.logrotate" "${pkgdir}/etc/logrotate.d/httpd"
install -D -m644 "${srcdir}/apache.tmpfiles.conf" "${pkgdir}/usr/lib/tmpfiles.d/apache.conf"
install -D -m644 "${srcdir}/httpd.service" "${pkgdir}/usr/lib/systemd/system/httpd.service"
install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
# symlinks for /etc/httpd
# do we really need this symlink?
ln -fs /usr/lib/httpd/modules "${pkgdir}/etc/httpd/modules"
# set sane defaults
sed -e 's#/usr/lib/httpd/modules/#modules/#' \
-e 's|#\(LoadModule negotiation_module \)|\1|' \
-e 's|#\(LoadModule include_module \)|\1|' \
-e 's|#\(LoadModule userdir_module \)|\1|' \
-e 's|#\(LoadModule slotmem_shm_module \)|\1|' \
-e 's|#\(Include conf/extra/httpd-multilang-errordoc.conf\)|\1|' \
-e 's|#\(Include conf/extra/httpd-autoindex.conf\)|\1|' \
-e 's|#\(Include conf/extra/httpd-languages.conf\)|\1|' \
-e 's|#\(Include conf/extra/httpd-userdir.conf\)|\1|' \
-e 's|#\(Include conf/extra/httpd-default.conf\)|\1|' \
-e 's|#\(Include conf/extra/httpd-mpm.conf\)|\1|' \
-i "${pkgdir}/etc/httpd/conf/httpd.conf"
# cleanup
rm -r "${pkgdir}/usr/share/httpd/manual"
rm -r "${pkgdir}/etc/httpd/conf/original"
rm -r "${pkgdir}/srv/"
rm -r "${pkgdir}/run"
}
prepare()
Часть prepare()
довольно интересна, так как мы видим, что происходит ...
Замена пользователя
Сначала мы меняем пользователя по умолчанию следующим образом ...
# set default user
sed -e 's#User daemon#User http#' \
-e 's#Group daemon#Group http#' \
-i docs/conf/httpd.conf.in
На самом деле, как мы видим в официальном репозитории apache, группа и пользователь по умолчанию следующие, что показывает нам первое различие между Arch Linux и другим дистрибутивом.
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon
Добавление пользовательского макета арки
Прежде чем мы продолжим со следующим, позвольте мне поговорить о разметке Apache. Apache по умолчанию включает в себя свой собственный макет, но также и некоторый макет в соответствии с различными дистрибутивами. Именно поэтому он так сильно отличается от раздачи другому. Действительно, Apache использует файл config.layout для того, чтобы разрешить пользовательский каталог и структуру "архитектуры" в соответствии с дистрибутивом.
Другими словами, процитировать Apache wiki:
многие сторонние дистрибьюторы изменяют макет в соответствии с местными правилами.
config.layout
умолчанию можно найти здесь. На самом деле, как вы можете видеть, макет Arch не входит в config.layout
по умолчанию, поэтому у нас есть строка:
cat "${srcdir}/arch.layout" >> config.layout
Давайте сравним макет Debian / Ubuntu с макетом Arch
Итак, вот макет Debian по умолчанию (в то время, когда я пишу это)
<Layout Debian>
prefix:
exec_prefix: ${prefix}/usr
bindir: ${exec_prefix}/bin
sbindir: ${exec_prefix}/sbin
libdir: ${exec_prefix}/lib
libexecdir: ${exec_prefix}/lib/apache2/modules
mandir: ${exec_prefix}/share/man
sysconfdir: ${prefix}/etc/apache2
datadir: ${exec_prefix}/share/apache2
iconsdir: ${datadir}/icons
htdocsdir: ${prefix}/usr/share/apache2/default-site/htdocs
manualdir: ${htdocsdir}/manual
cgidir: ${prefix}/usr/lib/cgi-bin
includedir: ${exec_prefix}/include/apache2
localstatedir: ${prefix}/var/lock/apache2
runtimedir: ${prefix}/var/run/apache2
logfiledir: ${prefix}/var/log/apache2
proxycachedir: ${prefix}/var/cache/apache2/proxy
infodir: ${exec_prefix}/share/info
installbuilddir: ${prefix}/usr/share/apache2/build
errordir: ${datadir}/error
</Layout>
А вот макет Arch, взятый из официального пакета Arch:
<Layout Arch>
prefix: /etc/httpd
exec_prefix: /usr
bindir: /usr/bin
sbindir: /usr/bin
libdir: /usr/lib/httpd
libexecdir: /usr/lib/httpd/modules
mandir: /usr/share/man
sysconfdir: /etc/httpd/conf
datadir: /usr/share/httpd
installbuilddir: /usr/lib/httpd/build
errordir: /usr/share/httpd/error
iconsdir: /usr/share/httpd/icons
htdocsdir: /srv/http
manualdir: /usr/share/httpd/manual
cgidir: /srv/http/cgi-bin
includedir: /usr/include/httpd
localstatedir: /var
runtimedir: /run/httpd
logfiledir: /var/log/httpd
proxycachedir: /var/cache/httpd
</Layout>
Я не буду вдаваться в детали, потому что думаю, что это не обязательно, так как мы можем найти больше информации в документации или где-то еще.
То, что мы можем увидеть здесь, это то, что все по-другому. Так что это объясняет почти все о разнице между пакетом Arch и Ubuntu/Debian Apache.
build()
Я искал конфигурацию по умолчанию для Debian/Ubuntu, но ничего не нашел, поэтому, если вы знаете, пожалуйста, не стесняйтесь добавить ее и / или оставить комментарий к этой части / ответу.
Другая важная вещь - это то, как Apache создается и настраивается, и это может отличаться от дистрибутива к другому.
Arch Linux решил настроить его следующим образом, который, я думаю, должен отличаться от Debian. Вы можете найти больше о настройке аргументов здесь
./configure --sbindir=/usr/bin \
--enable-layout=Arch \
--enable-mpms-shared=all \
--enable-modules=all \
--enable-mods-shared=all \
--enable-so \
--enable-suexec \
--with-suexec-caller=http \
--with-suexec-docroot=/srv/http \
--with-suexec-logfile=/var/log/httpd/suexec.log \
--with-suexec-bin=/usr/bin/suexec \
--with-suexec-uidmin=99 --with-suexec-gidmin=99 \
--enable-ldap --enable-authnz-ldap --enable-authnz-fcgi \
--enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \
--enable-ssl --with-ssl \
--enable-deflate --enable-cgi --enable-cgid \
--enable-proxy --enable-proxy-connect \
--enable-proxy-http --enable-proxy-ftp \
--enable-dbd --enable-imagemap --enable-ident --enable-cern-meta \
--enable-lua --enable-xml2enc --enable-http2 \
--with-apr=/usr/bin/apr-1-config \
--with-apr-util=/usr/bin/apu-1-config \
--with-pcre=/usr