अन्य उत्तर उबंटू / डेबियन और आर्क लिनक्स के बीच अंतर के बारे में काफी अच्छे हैं, लेकिन वे वास्तव में "तकनीकी रूप से उन्मुख" नहीं हैं ... मैं एक विशेषज्ञ नहीं हूं, मैं सिर्फ एक कट्टर उपयोगकर्ता और AUR अनुरक्षक हूं लेकिन मैं ' मैं इस अधिक "तकनीकी रूप से" का जवाब देने की पूरी कोशिश करने वाला हूं।
कृपया निम्नलिखित पर विचार करें क्योंकि मैं केवल मतभेदों के बारे में बात नहीं कर रहा हूं (और मैं अभी भी नहीं किया गया हूं लेकिन मुख्य अंतर हैं)। वास्तव में, जैसा कि मुझे समझ नहीं आ रहा है कि ओपी को बदलने की आवश्यकता क्यों है, मैं ठीक से ओपी प्रश्न के दूसरे भाग का जवाब नहीं दे सकता हूं।
जैसा कि मैं एक पूर्णकालिक उबंटू / डेबियन उपयोगकर्ता नहीं हूं, इस उत्तर में डेबियन / उबंटू स्पष्टीकरण के आसपास कुछ कमी हो सकती है।
differencies
PKGBUILD
एक आर्क उपयोगकर्ता और AUR में से एक के रूप में पहले मैं यह करता हूं और पहली बात यह है कि प्रत्येक आर्क उपयोगकर्ता को ऐसा करना चाहिए जब ऐसा प्रश्न प्रकट होता है अपाचे पैकेज के PKGBUILD को पढ़ने के लिए जो यहां पाया जा सकता है ।
इसलिए जिस समय मैं यह लिखता हूं, यह निम्नलिखित की तरह दिखता है
# $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
वास्तव में जैसा कि हम आधिकारिक अपाचे रिपॉजिटरी में देख सकते हैं कि डिफ़ॉल्ट समूह और उपयोगकर्ता निम्नलिखित हैं जो हमें आर्क लिनक्स और अन्य वितरण के बीच पहला अंतर दिखाते हैं।
# 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
कस्टम आर्क लेआउट का जोड़
इससे पहले कि हम निम्नलिखित जारी रखें मुझे अपाचे लेआउट के बारे में बात करने दें। अपाचे में डिफ़ॉल्ट रूप से स्वयं का लेआउट शामिल है लेकिन विभिन्न वितरणों के अनुसार कुछ लेआउट भी हैं। यह मुख्य रूप से एक वितरण से दूसरे में इतना भिन्न क्यों है। दरअसल, अपाचे वितरण के अनुसार कस्टम निर्देशिका और "आर्किटेक्चर" संरचना की अनुमति देने के लिए फ़ाइल config.layout का उपयोग करता है ।
अपाचे विकी को उद्धृत करने के लिए दूसरे शब्द में :
कई तृतीय-पक्ष वितरक स्थानीय नीतियों के अनुरूप लेआउट बदलते हैं।
डिफ़ॉल्ट यहांconfig.layout
पाया जा सकता है । दरअसल, जैसा कि आप देख सकते हैं कि आर्क लेआउट डिफ़ॉल्ट config.layout
फ़ाइल में नहीं है, इसलिए हमारे पास लाइन है:
cat "${srcdir}/arch.layout" >> config.layout
आइए डेबियन / उबंटू लेआउट की तुलना आर्क लेआउट से करें
तो यहां डिफ़ॉल्ट डेबियन लेआउट है (उस समय मैं इसे लिखता हूं)
<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>
और यहाँ आर्क आर्क आधिकारिक पैकेज से लिया लेआउट :
<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>
मैं हर चीज का विवरण नहीं दे रहा हूं क्योंकि मुझे लगता है कि यह जरूरी नहीं है क्योंकि हम प्रलेखन या कहीं और अधिक जानकारी पा सकते हैं ।
हम यहां देख सकते हैं कि यह बहुत अलग है। तो यह आर्क और उबंटू / डेबियन अपाचे पैकेज के बीच अंतर के बारे में लगभग सब कुछ बताता है।
build()
मैंने पाया कि डेबियन / उबंटू के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन क्या है, लेकिन मुझे कुछ भी निश्चित नहीं मिला इसलिए यदि आप जानते हैं, तो कृपया इसे जोड़ने और / या इस भाग / उत्तर के लिए एक टिप्पणी छोड़ने के लिए स्वतंत्र महसूस करें।
दूसरी सबसे महत्वपूर्ण बात यह है कि अपाचे जिस तरह से बनाया और कॉन्फ़िगर किया गया है और जो एक वितरण से दूसरे में भिन्न हो सकता है।
आर्क लिनक्स इसे निम्नलिखित के साथ कॉन्फ़िगर करने का चयन करता है जो मुझे लगता है कि डेबियन से अलग होना चाहिए। आप यहाँ कॉन्फ़िगर तर्कों के बारे में और जानकारी प्राप्त कर सकते हैं
./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