As outras respostas são bastante boas sobre a diferença entre Ubuntu / Debian e Arch Linux, mas elas não são realmente "tecnicamente orientadas" ... Eu não sou um especialista, sou apenas um usuário de arcos e um mantenedor de AUR mas vou tentar fazer o meu melhor para responder isso mais "tecnicamente".
Por favor, considere o seguinte como incompleto, já que estou falando apenas das diferenças (E ainda não terminei, mas as principais diferenças estão lá). De fato, como não entendo por que OP precisa mudar, não consigo responder adequadamente à segunda parte da pergunta do OP.
Como eu não sou um usuário Ubuntu / Debian em tempo integral, esta resposta pode ter alguma falta sobre a explicação do Debian / Ubuntu.
Diferenças
PKGBUILD
Como usuário do Arch e mantenedor do AUR, o primeiro que faço é a primeira coisa que todos os usuários do Arch devem fazer quando essa pergunta aparece é ler o PKGBUILD do pacote Apache que pode ser encontrado aqui .
Então, no momento em que escrevo isso, parece que o seguinte
# $Id$
# Maintainer: Jan de Groot <[email protected]>
# Contributor: Andrea Scarpino <[email protected]>
# Contributor: Pierre Schmitz <[email protected]>
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 \)||' \
-e 's|#\(LoadModule include_module \)||' \
-e 's|#\(LoadModule userdir_module \)||' \
-e 's|#\(LoadModule slotmem_shm_module \)||' \
-e 's|#\(Include conf/extra/httpd-multilang-errordoc.conf\)||' \
-e 's|#\(Include conf/extra/httpd-autoindex.conf\)||' \
-e 's|#\(Include conf/extra/httpd-languages.conf\)||' \
-e 's|#\(Include conf/extra/httpd-userdir.conf\)||' \
-e 's|#\(Include conf/extra/httpd-default.conf\)||' \
-e 's|#\(Include conf/extra/httpd-mpm.conf\)||' \
-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()
A parte prepare()
é bastante interessante quando vemos o que está acontecendo ...
Primeiro, alteramos o usuário padrão com o seguinte ...
# set default user
sed -e 's#User daemon#User http#' \
-e 's#Group daemon#Group http#' \
-i docs/conf/httpd.conf.in
De fato, como podemos ver no Repositório do Apache > o grupo padrão e o usuário são os seguintes, o que nos mostra a primeira diferença entre o Arch Linux e outras distribuições.
# 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
Adição do layout do arco personalizado
Antes de continuarmos com o seguinte, deixe-me falar sobre os layouts do Apache. O Apache inclui por padrão seu próprio layout, mas também algum layout de acordo com diferentes distribuições. É principalmente por isso que é tão diferente de uma distribuição para outra. De fato, o Apache usa o arquivo config.layout para permitir diretório personalizado e estrutura de "arquitetura" de acordo com a distribuição.
Em outra palavra, para citar o wiki do Apache:
many third-party distributors change the layout to conform to local policies.
O config.layout
padrão pode ser encontrado aqui . De fato, como você pode ver, o layout do Arch não está no arquivo config.layout
padrão e é por isso que temos a linha:
cat "${srcdir}/arch.layout" >> config.layout
Vamos comparar o layout do Debian / Ubuntu com o layout do Arch
Então aqui está o layout padrão do Debian (no momento em que escrevo isso)
<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>
E aqui está o layout do Arch retirado do pacote oficial do 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>
Não vou detalhar tudo porque acho que não é necessariamente porque podemos encontrar mais informações no documentação ou em outro lugar.
O que podemos ver aqui é que é bem diferente. Então, isso explica quase tudo sobre a diferença entre o pacote Arch e o Ubuntu / Debian Apache.
build()
Eu procurei o que é a configuração padrão para o Debian / Ubuntu, mas eu não achei nada certo então se você sabe, por favor sinta-se livre para adicioná-lo e / ou deixar um comentário para esta parte / resposta .
A outra coisa mais importante é a maneira como o Apache é construído e configurado e que pode ser diferente de uma distribuição para outra.
OArch Linux escolheu configurá-lo com o seguinte, que eu acho que deve ser diferente do Debian. Você pode encontrar mais sobre os argumentos de configuração aqui
./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