Προς το περιεχόμενο

[solved] Απορίες με δημιούργία PKGBUILD (arch)


mandos

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Ο τίτλος έπρεπε να λέει "βοήθεια με pkgbuild" αλλά δεν το επιτρέπει το forum.

 

Στο arch το πακέτο του nginx δεν έχει κάποια custom-addons που χρειάζομαι.

Το AUR package nginx-custom τα έχει, αλλά χρησιμοποιεί το /conf/ folder το οποίο δεν το θέλω.

 

Έτσι αποφάσισα να φτιάξω ένα δικό μου πακέτο, συνδιάζοντας τα παραπάνω.

Μετά απο αρκετές ώρες βγήκε το παρακάτω pkgbuild:

 

 

 





cfgdir=/etc/nginx

_tmpdir=/var/lib/nginx





# 3d party modules versions:

_cachepurge_ver="2.1"

_slowfscache_ver="1.10"

_echo_ver="v0.45"

_headersmore_ver="v0.19"

_uploadprogress_ver="v0.9.0"

_upstreamfair_hash="a18b4099fbd458111983200e098b6f0c8efed4bc"

_fancyindex_ver="master"

_httpupload_ver="2.2.0"

_authpam_ver="1.2"





pkgname=nginx

pkgver=1.2.8

pkgrel=1

pkgdesc='Lightweight HTTP server and IMAP/POP3 proxy server compatible with Perusios configuration'

arch=('i686' 'x86_64')

depends=('pcre' 'zlib' 'openssl')

makedepends=('gd' 'libxslt')

url="http://nginx.org"

license=('custom')

install=nginx.install

backup=(${_cfgdir:1}/fastcgi.conf

        ${_cfgdir:1}/fastcgi_params

        ${_cfgdir:1}/koi-win

        ${_cfgdir:1}/koi-utf

        ${_cfgdir:1}/mime.types

        ${_cfgdir:1}/nginx.conf

        ${_cfgdir:1}/scgi_params

        ${_cfgdir:1}/uwsgi_params

        ${_cfgdir:1}/win-utf

        etc/logrotate.d/nginx)

source=("http://nginx.org/download/nginx-$pkgver.tar.gz"

"http://labs.frickle.com/files/ngx_cache_purge-${_cachepurge_ver}.tar.gz"

        "http://labs.frickle.com/files/ngx_slowfs_cache-${_slowfscache_ver}.tar.gz"

        "https://github.com/masterzen/nginx-upload-progress-module/tarball/${_uploadprogress_ver}"

        "https://github.com/agentzh/headers-more-nginx-module/tarball/${_headersmore_ver}"

        "https://github.com/agentzh/echo-nginx-module/tarball/${_echo_ver}"

        "https://github.com/gnosek/nginx-upstream-fair/tarball/${_upstreamfair_hash}"

        "ngx_fancyindex-${_fancyindex_ver}.tar.gz::http://gitorious.org/ngx-fancyindex/ngx-fancyindex/archive-tarball/${_fancyindex_ver}"

        "https://github.com/vkholodkov/nginx-upload-module/tarball/${_httpupload_ver}"

        "http://web.iti.upv.es/~sto/nginx/ngx_http_auth_pam_module-${_authpam_ver}.tar.gz"

        service

        logrotate)



md5sums=('b9f7640cca35196d0e719ac5da24c7bd'

'b403e963108f4e1700607cbe40916807'

'68a1af12d5c1218fb2b3e05ed7ff6f0c'

'9dd5dc90990dbaea68881a14d4b6d9f3'

'e0f1c0cf4291387e8f5ac481cecd0ddd'

'851f882cf83732b2c70995227bdb07c6'

'ac5e7f485476af70e0ee1c52016cddaf'

'8db9d2ef8b7ac63f9e23901dc3d36ab1'

'8766b931f29602889e0454749580a781'

'3f6322663c6479a7b6b974bfa7417e5c'

'62d494d23aef31d0b867161f9fffa6eb'

'd7f84ca51ef0a8a343a6ce9d6dd74162')







build() {

    local _cachepurge_dirname="ngx_cache_purge-${_cachepurge_ver}"

    local _slowfscache_dirname="ngx_slowfs_cache-${_slowfscache_ver}"

    local _headersmore_dirname="ngx_headers_more-${_headersmore_ver}"

    local _echo_dirname="ngx_echo-${_echo_ver}"

    local _uploadprogess_dirname="ngx_upload_progress-${_uploadprogress_ver}"

    local _upstreamfair_dirname="ngx_upstream_fair"

    local _fancyindex_dirname="ngx_fancyindex"

    local _upload_dirname="ngx_http_upload-${_upload_ver}"

    local _authpam_dirname="ngx_authpam"



    mv agentzh-headers-more-nginx-module-* ${_headersmore_dirname}

    mv agentzh-echo-nginx-module-* ${_echo_dirname}

    mv masterzen-nginx-upload-progress-module-* ${_uploadprogess_dirname}

    mv gnosek-nginx-upstream-fair-* ${_upstreamfair_dirname}

    mv ngx-fancyindex* ${_fancyindex_dirname}

    mv vkholodkov-nginx-upload-module* ${_upload_dirname}

    mv ngx_http_auth_pam_module-${_authpam_ver} ${_authpam_dirname}



    cd "$srcdir"/$pkgname-$pkgver



    ./configure \

--prefix=$_cfgdir \

--conf-path=$_cfgdir/nginx.conf \

--sbin-path=/usr/sbin/nginx \

--pid-path=/var/run/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--user=http --group=http \

--http-log-path=/var/log/nginx/access.log \

--error-log-path=/var/log/nginx/error.log \

--http-client-body-temp-path=$_tmpdir/client-body \

--http-proxy-temp-path=$_tmpdir/proxy \

--http-fastcgi-temp-path=$_tmpdir/fastcgi \

--http-scgi-temp-path=$_tmpdir/scgi \

--http-uwsgi-temp-path=$_tmpdir/uwsgi \

--with-imap --with-imap_ssl_module \

--with-ipv6 --with-pcre-jit \

--with-file-aio \

        --with-http_dav_module \

        --with-http_gzip_static_module \

--with-http_realip_module \

--with-http_ssl_module \

--with-http_stub_status_module \

--with-http_mp4_module \

--with-http_addition_module \

--with-http_xslt_module \

--with-http_image_filter_module \

--with-http_sub_module \

--with-http_flv_module \

--with-http_random_index_module \

--with-http_secure_link_module \

--with-http_degradation_module \

--with-http_perl_module \

        --add-module=../${_cachepurge_dirname} \

        --add-module=../${_echo_dirname} \

        --add-module=../${_headersmore_dirname} \

        --add-module=../${_slowfscache_dirname} \

        --add-module=../${_uploadprogess_dirname} \

        --add-module=../${_upstreamfair_dirname} \

        --add-module=../${_fancyindex_dirname} \

        --add-module=../${_upload_dirname} \

        --add-module=../${_authpam_dirname}

#--with-http_geoip_module \

#--add-module=/usr/lib/passenger/ext/nginx \



    make

}



package() {

    cd "$srcdir"/$pkgname-$pkgver

    make DESTDIR="$pkgdir" install



    sed -e 's|\<user\s\+\w\+;|user html;|g' \

        -e '44s|html|/usr/share/nginx/html|' \

        -e '54s|html|/usr/share/nginx/html|' \

        -i "$pkgdir"/etc/nginx/nginx.conf

    rm "$pkgdir"/etc/nginx/*.default



    install -d "$pkgdir"/$_tmpdir

    install -dm700 "$pkgdir"/$_tmpdir/proxy



    chmod 750 "$pkgdir"/var/log/nginx

    chown http:log "$pkgdir"/var/log/nginx



    install -d "$pkgdir"/usr/share/nginx

    mv "$pkgdir"/etc/nginx/html/ "$pkgdir"/usr/share/nginx



    install -Dm644 "$srcdir"/logrotate "$pkgdir"/etc/logrotate.d/nginx

    install -Dm644 "$srcdir"/service "$pkgdir"/usr/lib/systemd/system/nginx.service

    install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/nginx/LICENSE

    rm -rf "$pkgdir"/var/run

}

 

 

 

Θέλω όμως αν μπορέσω να το κάνω να παίρνει αυτόματο το config από εδώ:

https://github.com/perusio/drupal-with-nginx

 

Επίσης το package που φτιάχνει έχει όνομα nginx, νομίζω θα ήταν σωστό να το κάνω κάτι τύπου nginx-drupal αλλά όταν το κάνω γκρινιάζει στο compile.

 

Κάθε βοήθεια ευπρόσδεκτη :)

Επεξ/σία από mandos
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για το όνομα θελει να αλλάξεις το "pkgname=nginx" σε "pkgname=nginx-drupal". Αν το κάνεις όμως αυτό δε θα μπορείς μετά να χρησιμοποιήσεις τη μεταβλητή $pgkname στις build() και package(). H λύση είναι να ορίσεις μία βοηθητική μεταβλητή (πρέπει να ξεκινάει με κάτω πάυλα) την οποία και θα χρησιμοποιήσεις ως αντικαταστάτη της $pkgname . Δηλαδή

pkgname=nginx-drupal
_pkgname=nginx
Έτσι, όπου έλεγε $pkgname θα το αντικαταστήσεις με $_pkgname

 

Επίσης αν αλλάξεις το όνομα πρέπει να βάλεις και δύο γραμμές

provides=("nginx")

conflicts=("nginx")

 

edit

Για το conf, τι ακριβώς θέλεις από το github και που πηγαίνει; Γενικά ο κώδικας μέσα στην build είναι καθαρό bash. Με τις ίδιες ακριβώς εντολές που θα έβαζες τα αρχεία χειροκίνητα, με τον ίδιο τρόπο θα τα βάλεις και τώρα (πχ git clone και μετά copy, curl, wget κτλ)

 

ps. Επειδή ο editor του insomnia τον παίζει γενικά, ανέβαζε τον κώδικα σε κανά pastebin

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Ευχαριστώ pmav!

Επειδή με τρώει ο πισινος μου αυτές τις μέρες αύριο θα το ξαναστησω με ext4 το σύστημα και μετα θα παλεψω με τον nginx.
Το config του perusio είναι pita, θα πρεπει να το κάνω fork με αλλαγές για το arch. Έχω μέλλον μπροστά μου :-)

 

 

δεν έφερα ακόμα τα git-configs, αλλά το πακέτο είναι έτοιμο

thnx :)

Επεξ/σία από mandos
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...