Una de les coses que mes m'agrada d'Arch Linux i les seves derivades és la tremenda facilitat per crear paquets per després ser instal·lats en el sistema, a l'contrari que passa amb els coneguts .deb de Debian / Ubuntu / Linux Mint / etc que és un caos (i si són llibreries ni us explico).
Una plantilla base seria aquesta:
# Maintainer:
pkgname=
pkgver=
pkgrel=
pkgdesc=
arch=()
url=
license=()
groups=()
depends=()
makedepends=()
source=()
md5sums=()
build() {
...
}
package() {
...
}
Ara explicaré cada paràmetre:
- # Maintainer: S'hi posa el nom de el mantenidor de l'paquet
- pkgname: El nom de l'paquet. Només pot contenir lletres, nombres, -, _ i +
- pkver: versió de l'paquet. pe 1.0.0
- pkgrel: la revisió de el programa o paquet. pe 1
- pkgdesc: descripció de l'paquet.
- arc: l'arquitectura de el programa: pot ser any (per a tots), i686 i x86_64, sent any per a paquets que no requereixen compilació, com programes en bash o Python. Si és un programa que si ho necessita (per exemple programes en C o C ++) s'haurà d'indicar i686 si és per a 32 bits o x86_64 per 64 bits. Per norma general si és compatible amb tots dos es posa (i686, x86_64)
- uRL: la url a la pàgina oficial de el programa. És recomanable posar-ho.
- llicència: la llicència d'el programa. pe GPL3
- grups: els grups a què pertany el paquet. groups = ( 'system')
- depens: en ella vam indicar els paquets que calen per a l'execució de el programa. pe depens = ( 'python2' 'PyGTK')
- makedepends: les dependències que només són necessàries per compilar el paquet. Si es va a baixar el codi des d'un gestor de versions és recomanable posar-ho. pe: makedepends = ( 'git')
- font: al indiquem els arxius necessaris per a la creació d'el paquet. Per norma general és la url a el paquet que conté el codi, un pegat, un arxiu .desktopt, icones, etc. pe: source = (pacsyu.desktop)
- md5sums: aquí van les sumes md5 dels arxius indicats en source. Per saber quins són executem des d'una terminal a la carpeta on hi ha el PKGBUILD (havent escrit les rutes dels arxius en source) makepkg -g i ens sortirà en pantalla les sumes.
També és possible usar altres sumes com SH1. - construir: en aquesta funció posarem els comandes necessàries per procedir a compilar el programari. Si no cal compilar només cal la següent funció)
- package: en aquesta altra funció aniran les ordres d'instal·lació de el programa. Per exemple si compilem codi C aquí aniria el make install.
I ja per a finalitzar només hem d'executar makepkg per comprovar que el paquet es genera.
Com veieu ens és difícil. A continuació us deixo amb alguns paràmetres extra de makepkg:
- -i: Indica a makepkg que instal el paquet un cop creat.
- -s: Instal·la les dependències de l'paquet si aquestes estan en els repositoris.
- -f: Si ja hi ha un paquet amb aquest nom, versió i revisió amb aquest paràmetre li vam indicar que el sobreescriure.
- -c: Neteja les carpetes de treball (pkg i source) un cop acabat.
- -R: Torna a empaquetar el paquet sense haver de tornar a compilar.
Recomano veure més fitxers PKGBUILD per veure més exemples, executar la comanda makepkg -h per veure la resta de paràmetres de el programa, a més de veure la documentació oficial de makepkg en la Wiki d'Arch Linux que podeu trobar aquí
Massa bé ...
Es pot fer que un paquet .exe es gestioni (compile) a un paquet d'Arch?
Com per exemple el famós gestor de descàrregues Mipony ??
Fins on sé no es pot, recorda que els .exe són binaris i no codi font. Però està JDownloader.
Com bé dius no es pot recompilar un exe ja que és codi binari.
Als es pot crear un paquet que l'instal i l'executi amb Wine com fa el paquet que hi ha a AUR de el conegut programa P2P Ares.
algú fa servir linux i estranya Myponi ... jijijijiji
jDownloader està en java, i és ben sabut per tots que java dóna cancer en els pulmons ...
interessant, caldria provar paquets crec que M'inclinaré per fer el de qbittorrent jajaja ja existeix a yaourt però tenir una versió pròpia no estarà gens malament per a provar, gràcies per la informació salutacions.
Bona aportació, +1
Vull afegir que també són més fàcils de crear i mantenir que els ebuilds de Gentoo!
Pel que fa a Debian, crec que aquesta distro aixecaria el seu handicap enormement amb només modernitzar o migrar a un sistema de paqueteria i gestió de paquets més modern, no sé de quan serà l'última actualització del conjunt dpkg / apt però el concepte ja ha de tenir fàcilment 15 anys i la veritat és que avui és anacrònic.
moltes gràcies feu poc el vaig caminar buscant en la wiki i no havia entès l'estructura (volia actualitzar el de la PlayOnLinux) però igual desistiment ... hi ha coses en les que m'agradaria que hi hagués una assistent o alguna cosa així (no m'afusellin) però igual ... a falta d'eines amb el temps vere si crec alguna
Gràcies a la teva guia em vaig posar a crear el PKGBUILD de Zeya (http://web.psung.name/zeya/), Ni bé ho acabi el pujo a l'AUR 🙂
Totalment d'acord, fa un temps intenti crear un paquet per Ubuntu i em va ser impossible trobar informació comprensible sobre com fer un, a la fi vaig desistir i vaig instal·lar el programa al brut.
El mateix programa per Arch em va prendre menys de 5 minuts armar el paquet.
I no estic segur però crec que els RPM són lleugerament més fàcils de fer que els DEB, però més difícils que els d'Arch.
Molt bo i fàcil, i pel que fa als .deb no és tan difícil, bé això per iOS
Salutacions
Crec que això m'hagués servidor fa algun temps quan vaig pujar el meu primer PKGBUILD a AUR 🙂
alguiem em pot explicar això que és, sóc nou, i doncs no sé si això em serveixi per isnstalar un paquet .deb però localment en manjaro, un joc per a ser exactes. si serveix?
Just va escriure un altre article d'com crear paquets per arch / manjaro des paquets .deb
https://blog.desdelinux.net/archlinux-crear-paquetes-multiplataforma-y-desde-paquetes-deb/
si, ja ho havia vist, sinó que sóc molt novell i no entenc si no només esxta línia
cd «$ {srcdir} /»
tar xvzf data.tar.gz -C.
cp -r usr $ {PKGDIR}
el que has enrere
if [ "$ {CARCH}» = 'x86_64']; then
ARCH = 'amd64'
md5sums=(‘192a0a222893d59d95f00c34f3c8a674’)
depends = ( 'OpenAL' 'lib32-OpenAL')
elif [ «$ {CARCH}» = 'i686']; then
ARCH = 'i386'
md5sums=(‘047c670443124193c5cc3dd54da99925’)
depends = ( 'OpenAL')
fi
source = ( «http://www.unaurl.com/files/${name}.$ARCH.deb»)
No ho entenc, es veu molt complex, són passos conjunts o la primera part
cd «$ {srcdir} /»
tar xvzf data.tar.gz -C.
cp -r usr $ {PKGDIR}
es pot fer sola per convertir .deb. .tar.gz?