Differences

This shows you the differences between two versions of the page.

Link to this comparison view

trabalhando_com_o_ports_no_openbsd_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Trabalhando com o ports no OpenBSD ​ ======
  
 +
 +E ai galera, aqui eu vou abordar um pouco do trabalho com o ports no <​nowiki>​OpenBSD</​nowiki>,​ são coisas simples que nós ajudam no dia-a-dia.
 +
 +Vamos obter o ports, eu vou utilizar o ports do <​nowiki>​OpenBSD</​nowiki>​ 5.4 que é a current no momento dia 04/12/2013
 +<sxh bash>
 +cd /usr
 +ftp ftp://​openbsd.locaweb.com.br/​pub/​OpenBSD/​5.4/​ports.tar.gz
 +tar xzvf ports.tar.gz
 +rm -rf ports.tar.gz
 +</​sxh>​
 +
 +
 +Agora vamos alterar alguns caminhos padrões que o sistema ports utiliza por ex:
 +  * WRKOBJDIR: Este é o diretório de trabalho do nosso ports, geralmente ele fica em /​usr/​ports/​pobj
 +  * DISTDIR: Este diretório contem os arquivos fontes depois de obtidos de um ftp, http ou afins
 +  * PACKAGE_REPOSITORY:​ Este diretório vai conter os novos pacotes binários depois de preparados.
 +
 +
 +Vamos colocar estes diretórios fora do ports, vamos deixar eles no /usr
 +<sxh bash>
 +vim /​etc/​mk.conf
 +WRKOBJDIR=/​usr/​obj/​ports
 +DISTDIR=/​usr/​distfiles
 +PACKAGE_REPOSITORY=/​usr/​packages
 +</​sxh>​
 +
 +Agora vamos verificar como fazemos uma pesquisa na arvore do ports
 +
 +Vamos primeiro acessar o diretório do ports
 +<sxh bash>
 +cd /usr/ports
 +</​sxh>​
 +
 +Agora vamos procurar o seguinte pacote rsnapshot
 +<sxh bash>
 +make search key=rsnapshot
 +Port:   ​rsnapshot-1.3.1p2
 +Path:   ​net/​rsnapshot
 +Info:   ​remote filesystem snapshot utility
 +Maint: ​ Antoine Jacoutot <​ajacoutot@openbsd.org>​
 +Index: ​ net sysutils
 +L-deps:
 +B-deps: STEM->​=1.21:​textproc/​groff net/rsync
 +R-deps: devel/​p5-Lchown net/rsync
 +Archs: ​ any
 +</​sxh>​
 +
 +A nossa pesquisa nos trouxe um overview da aplicação que foi encontrada com a palavra chave rsnapshot, caso tenhamos mais de uma aplicação com essa palavra chave, vamos ter vários resultados por pesquisa. ​
 +
 +Aqui nos temos o nome do ports, o caminho dele dentro de /usr/ports, temos uma descrição do ports, temos quem é o mantenedor do ports e mais algumas informações úteis.
 +
 +Podemos também fazer uma pesquisa no arquivo de INDEX que fica em /​usr/​ports ​
 +
 +<sxh bash>
 + make key=rsnapshot describe
 +===> net/​rsnapshot
 +rsnapshot-1.3.1p2|net/​rsnapshot||remote filesystem snapshot utility|net/​rsnapshot/​pkg/​DESCR|Antoine Jacoutot <​ajacoutot@openbsd.org>​|net sysutils||STEM->​=1.21:​textproc/​groff net/​rsync|devel/​p5-Lchown net/​rsync|any|y|y|y
 +</​sxh>​
 +
 +Note que temos a mesma saída porém com uma formação diferente.
 +
 +Para instalarmos um ports precisamos acessar o seu diretório
 +<sxh bash>
 +cd /​usr/​ports/​net/​rsnapshot
 +</​sxh>​
 +
 +Agora precisamos mandar compilar ele e manda instalar
 +<sxh bash>
 +make install
 +===> ​ Checking files for rsnapshot-1.3.1p2
 +>> Fetch http://​www.rsnapshot.org/​downloads/​rsnapshot-1.3.1.tar.gz
 +rsnapshot-1.3.1.tar.gz 100% |***************************| ​  210 KB    00:02
 +>> (SHA256) rsnapshot-1.3.1.tar.gz:​ OK
 +===> rsnapshot-1.3.1p2 depends on: rsync-* -> rsync-3.0.9p3
 +===> rsnapshot-1.3.1p2 depends on: groff->​=1.21 -> groff-1.22.2p1
 +===> ​ Extracting for rsnapshot-1.3.1p2
 +===> ​ Patching for rsnapshot-1.3.1p2
 +===> ​ Configuring for rsnapshot-1.3.1p2
 +checking for a BSD-compatible install... /​usr/​bin/​install -c -o root -g bin
 +checking whether build environment is sane... yes
 +checking for gawk... no
 +checking for mawk... no
 +checking for nawk... no
 +checking for awk... awk
 +checking whether make sets $(MAKE)... yes
 +checking whether make sets $(MAKE)... (cached) yes
 +checking for a BSD-compatible install... /​usr/​bin/​install -c -o root -g bin
 +checking for perl... /​usr/​bin/​perl
 +checking for rsync... /​usr/​local/​bin/​rsync
 +checking for cp... /bin/cp
 +checking for rm... /bin/rm
 +checking for ssh... /​usr/​bin/​ssh
 +checking for logger... /​usr/​bin/​logger
 +checking for du... /usr/bin/du
 +configure: creating ./​config.status
 +config.status:​ creating Makefile
 +config.status:​ creating rsnapshot
 +config.status:​ creating rsnapshot-diff
 +config.status:​ creating rsnapshot.conf.default
 +config.status:​ creating t/​support/​etc/​configtest.conf
 +config.status:​ creating t/​support/​etc/​rsync.conf
 +config.status:​ creating t/​support/​etc/​gnu_cp.conf
 +config.status:​ creating t/​support/​etc/​relative_delete_bugfix.conf
 +config.status:​ creating t/​configtest.t
 +config.status:​ creating t/rsync.t
 +config.status:​ creating t/gnu_cp.t
 +config.status:​ creating t/​relative_delete_bugfix.t
 +===> ​ Building for rsnapshot-1.3.1p2
 +perl /​usr/​ports/​infrastructure/​bin/​pkg_subst -DSAMPLES_DIR=/​usr/​local/​share/​examples/​rsnapshot -DMACHINE_ARCH=amd64 -DARCH=amd64 -DHOMEPAGE=http://​www.rsnapshot.org/​ -D^PREFIX=/​usr/​local -D^SYSCONFDIR=/​etc -DFLAVOR_EXT= -DFULLPKGNAME=rsnapshot-1.3.1p2 -DMAINTAINER=Antoine\ Jacoutot\ \<​ajacoutot@openbsd.org\>​ -D^BASE_PKGPATH=net/​rsnapshot -D^LOCALBASE=/​usr/​local -D^X11BASE=/​usr/​X11R6 -D^TRUEPREFIX=/​usr/​local -D^RCDIR=/​etc/​rc.d /​usr/​obj/​ports/​rsnapshot-1.3.1/​rsnapshot-1.3.1/​rsnapshot.1 /​usr/​obj/​ports/​rsnapshot-1.3.1/​rsnapshot-1.3.1/​README ​ /​usr/​obj/​ports/​rsnapshot-1.3.1/​rsnapshot-1.3.1/​rsnapshot-program.pl
 +cd . && /bin/sh ./​config.status rsnapshot
 +config.status:​ creating rsnapshot
 +/​usr/​bin/​pod2man -c ''​ -n '​rsnapshot'​ -r ''​ rsnapshot > rsnapshot.1
 +/​usr/​bin/​pod2man -c ''​ -n '​rsnapshot-diff'​ -r ''​ rsnapshot-diff > rsnapshot-diff.1
 +===> ​ Faking installation for rsnapshot-1.3.1p2
 +test -z "/​usr/​local/​bin"​ || /bin/sh ./​mkinstalldirs "/​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​bin"​
 + ​install -c -o root -g bin -m 555 '​rsnapshot'​ '/​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​bin/​rsnapshot'​
 + ​install -c -o root -g bin -m 555 '​rsnapshot-diff'​ '/​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​bin/​rsnapshot-diff'​
 +test -z "/​usr/​local/​share/​examples/​rsnapshot"​ || /bin/sh ./​mkinstalldirs "/​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot"​
 +mkdir /​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot
 + ​install -c -o root -g bin -m 444 '​rsnapshot.conf.default'​ '/​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot/​rsnapshot.conf.default'​
 +test -z "/​usr/​local/​man/​man1"​ || /bin/sh ./​mkinstalldirs "/​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​man/​man1"​
 + ​install -c -o root -g bin -m 444 '​./​rsnapshot.1'​ '/​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​man/​man1/​rsnapshot.1'​
 + ​install -c -o root -g bin -m 444 '​./​rsnapshot-diff.1'​ '/​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​man/​man1/​rsnapshot-diff.1'​
 +install -d -o root -g bin -m 755 /​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot/​utils
 +systrace: deny user: root, prog: /​usr/​bin/​install,​ pid: 22950(0)[15143],​ policy: /​usr/​bin/​make,​ filters: 244, syscall: native-fswrite(136),​ filename: /usr
 +systrace: deny user: root, prog: /​usr/​bin/​install,​ pid: 22950(0)[15143],​ policy: /​usr/​bin/​make,​ filters: 244, syscall: native-fswrite(136),​ filename: /usr/obj
 +systrace: deny user: root, prog: /​usr/​bin/​install,​ pid: 22950(0)[15143],​ policy: /​usr/​bin/​make,​ filters: 244, syscall: native-fswrite(136),​ filename: /​usr/​obj/​ports
 +install -d -o root -g bin -m 755 /​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot/​utils/​rsnapshotdb
 +systrace: deny user: root, prog: /​usr/​bin/​install,​ pid: 28300(0)[15143],​ policy: /​usr/​bin/​make,​ filters: 244, syscall: native-fswrite(136),​ filename: /usr
 +systrace: deny user: root, prog: /​usr/​bin/​install,​ pid: 28300(0)[15143],​ policy: /​usr/​bin/​make,​ filters: 244, syscall: native-fswrite(136),​ filename: /usr/obj
 +systrace: deny user: root, prog: /​usr/​bin/​install,​ pid: 28300(0)[15143],​ policy: /​usr/​bin/​make,​ filters: 244, syscall: native-fswrite(136),​ filename: /​usr/​obj/​ports
 +install -c -o root -g bin -m 444 /​usr/​obj/​ports/​rsnapshot-1.3.1/​rsnapshot-1.3.1/​README /​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot
 +install -c -o root -g bin -m 444 /​usr/​obj/​ports/​rsnapshot-1.3.1/​rsnapshot-1.3.1/​utils/​README /​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot/​utils
 +install -c -o root -g bin -m 444 /​usr/​obj/​ports/​rsnapshot-1.3.1/​rsnapshot-1.3.1/​utils/​rsnapshot-copy /​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot/​utils
 +install -c -o root -g bin -m 444 /​usr/​obj/​ports/​rsnapshot-1.3.1/​rsnapshot-1.3.1/​utils/​rsnaptar /​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot/​utils
 +install -c -o root -g bin -m 444 /​usr/​obj/​ports/​rsnapshot-1.3.1/​rsnapshot-1.3.1/​utils/​*.pl /​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot/​utils
 +install -c -o root -g bin -m 444 /​usr/​obj/​ports/​rsnapshot-1.3.1/​rsnapshot-1.3.1/​utils/​*.sh /​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot/​utils
 +install -c -o root -g bin -m 444 /​usr/​obj/​ports/​rsnapshot-1.3.1/​rsnapshot-1.3.1/​utils/​rsnapshotdb/​* /​usr/​obj/​ports/​rsnapshot-1.3.1/​fake-amd64/​usr/​local/​share/​examples/​rsnapshot/​utils/​rsnapshotdb
 +===> ​ Building package for rsnapshot-1.3.1p2
 +Create /​usr/​packages/​amd64/​no-arch/​rsnapshot-1.3.1p2.tgz
 +Link to /​usr/​packages/​amd64/​all/​rsnapshot-1.3.1p2.tgz
 +Link to /​usr/​packages/​amd64/​ftp/​rsnapshot-1.3.1p2.tgz
 +Link to /​usr/​packages/​amd64/​cdrom/​rsnapshot-1.3.1p2.tgz
 +===> rsnapshot-1.3.1p2 depends on: p5-Lchown-* - not found
 +===> ​ Verifying install for p5-Lchown-* in devel/​p5-Lchown
 +===> ​ Checking files for p5-Lchown-1.01p2
 +>> Fetch http://​mirror.sov.uk.goscomb.net/​CPAN/​modules/​by-module/​../​by-authors/​id/​N/​NC/​NCLEATON/​Lchown-1.01.tar.gz
 +Lchown-1.01.tar.gz 100% |*******************************| ​ 4018       00:00
 +>> (SHA256) Lchown-1.01.tar.gz:​ OK
 +===> p5-Lchown-1.01p2 depends on: groff->​=1.21 -> groff-1.22.2p1
 +===> ​ Verifying specs: c perl c perl
 +===> ​ found c.69.0 perl.13.0
 +===> ​ Extracting for p5-Lchown-1.01p2
 +===> ​ Patching for p5-Lchown-1.01p2
 +===> ​ Configuring for p5-Lchown-1.01p2
 +Created MYMETA.yml and MYMETA.json
 +Creating new '​Build'​ script for '​Lchown'​ version '​1.01'​
 +Created MYMETA.yml and MYMETA.json
 +Creating new '​Build'​ script for '​Lchown'​ version '​1.01'​
 +===> ​ Building for p5-Lchown-1.01p2
 +Building Lchown
 +cc -I/​usr/​libdata/​perl5/​amd64-openbsd/​5.16.3/​CORE -DXS_VERSION="​1.01"​ -DVERSION="​1.01"​ -DPIC -fPIC -c -DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE -fno-strict-aliasing -fno-delete-null-pointer-checks -pipe -fstack-protector -I/​usr/​local/​include -O2 -pipe -O2 -o lib/​Lchown.o lib/​Lchown.c
 +ExtUtils::​Mkbootstrap::​Mkbootstrap('​blib/​arch/​auto/​Lchown/​Lchown.bs'​)
 +cc -shared -fPIC -fstack-protector -o blib/​arch/​auto/​Lchown/​Lchown.so lib/​Lchown.o
 +===> ​ Faking installation for p5-Lchown-1.01p2
 +Building Lchown
 +Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
 +Installing /​usr/​obj/​ports/​p5-Lchown-1.01/​fake-amd64/​usr/​local/​libdata/​perl5/​site_perl/​amd64-openbsd/​auto/​Lchown/​Lchown.bs
 +Installing /​usr/​obj/​ports/​p5-Lchown-1.01/​fake-amd64/​usr/​local/​libdata/​perl5/​site_perl/​amd64-openbsd/​auto/​Lchown/​Lchown.so
 +Installing /​usr/​obj/​ports/​p5-Lchown-1.01/​fake-amd64/​usr/​local/​libdata/​perl5/​site_perl/​amd64-openbsd/​Lchown.pm
 +Installing /​usr/​obj/​ports/​p5-Lchown-1.01/​fake-amd64/​usr/​local/​man/​man3p/​Lchown.3p
 +===> ​ Building package for p5-Lchown-1.01p2
 +Create /​usr/​packages/​amd64/​all/​p5-Lchown-1.01p2.tgz
 +Link to /​usr/​packages/​amd64/​ftp/​p5-Lchown-1.01p2.tgz
 +Link to /​usr/​packages/​amd64/​cdrom/​p5-Lchown-1.01p2.tgz
 +===> ​ Cleaning for p5-Lchown-1.01p2
 +===> p5-Lchown-1.01p2 depends on: groff->​=1.21 -> groff-1.22.2p1
 +===> ​ Verifying specs: c perl
 +===> ​ found c.69.0 perl.13.0
 +===> ​ Installing p5-Lchown-1.01p2 from /​usr/​packages/​amd64/​all/​
 +p5-Lchown-1.01p2:​ ok
 +===> Returning to build of rsnapshot-1.3.1p2
 +===> rsnapshot-1.3.1p2 depends on: p5-Lchown-* -> p5-Lchown-1.01p2
 +===> ​ Installing rsnapshot-1.3.1p2 from /​usr/​packages/​amd64/​all/​
 +rsnapshot-1.3.1p2:​ ok
 +</​sxh>​
 +
 +Temos o nosso ports compilado e instalado e pronto para utilizar, agora temos o seguinte ele acabou gerando vários arquivo temporários isso ocupa espaço então vamos mandar limpar
 +<sxh bash>
 +make clean
 +===> ​ Cleaning for rsnapshot-1.3.1p2
 +</​sxh>​
 +
 +Agora podemos mandar limpar o arquivo que foi obtido via ftp
 +<sxh bash>
 +make clean=packages
 +===> ​ Cleaning for rsnapshot-1.3.1p2
 +rm -f /​usr/​packages/​amd64/​all/​rsnapshot-1.3.1p2.tgz /​usr/​packages/​amd64/​no-arch/​rsnapshot-1.3.1p2.tgz /​usr/​packages/​amd64/​ftp/​rsnapshot-1.3.1p2.tgz /​usr/​packages/​amd64/​cdrom/​rsnapshot-1.3.1p2.tgz ​ /​usr/​ports/​update/​amd64/​rsnapshot-1.3.1p2
 +</​sxh>​
 +
 +Se eu precisar limpar os pacotes dependência podemos fazer da seguinte forma
 +<sxh bash>
 +make clean=depends
 +===> ​ Cleaning for groff-1.22.2p1
 +===> ​ Cleaning for p5-Lchown-1.01p2
 +===> ​ Cleaning for rsync-3.0.9p3
 +===> ​ Cleaning for rsnapshot-1.3.1p2
 +</​sxh>​
 +
 +Agora vamos ver algo muito importando os flavors que são como versões de um ports, vamos analisar o ports do vim
 +<sxh bash>
 +cd /​usr/​ports/​editors/​vim
 +</​sxh>​
 +
 +Agora vamos listar os seus flavors
 +<sxh bash>
 +make show=FLAVORS
 +huge gtk2 athena motif no_x11 perl python ruby
 +</​sxh>​
 +
 +Note que temos várias opções para o nosso vim, eu sempre utilizo o no_x11 pois não utilizo ambiente gráfico, para instalarmos o ports com está opção podemos fazer da seguinte forma
 +<sxh bash>
 +env FLAVOR=no_x11 make install
 +</​sxh>​
 +
 +Agora imagine que você precisa instalar o python e com isso precisamos saber quais versões eu tenho disponível no meu ports podemos fazer da seguinte forma
 +<sxh bash>
 +cd /​usr/​ports/​lang/​python && make show=PACKAGES
 +
 +===> lang/​python/​2.7
 +
 +===> lang/​python/​3.3
 +</​sxh>​
 +
 +Note que temos múltiplas versões do python com isso temos um subdiretório para cada uma.
 +
 +Agora vamos verificar o que cada versão aceita de subpacotes
 +<sxh bash>
 +cd /​usr/​ports/​lang/​python && make show=MULTI_PACKAGES
 +===> lang/​python/​2.7
 +-main -tests -tools -gdbm -idle -tkinter -bsddb
 +===> lang/​python/​3.3
 +-main -tests -gdbm -idle -tkinter
 +</​sxh>​
 +
 +Note que agora temos vários subpacotes do nosso python para mandarmos instalar um subpacote podemos fazer da seguinte forma
 +<sxh bash>
 +cd /​usr/​ports/​lang/​python/​3.3 && env SUBPACKAGE="​-tests"​ make install
 +</​sxh>​
 +
 +Agora se eu quiser instalar todos os subpacotes de um ports podemos fazer da seguinte forma.
 +<sxh bash>
 +cd /​usr/​ports/​lang/​python/​3.3 && make install-all
 +</​sxh>​
 +
 +Para mandarmos deinstalar um ports podemos fazer da seguinte forma
 +<sxh bash>
 +cd /​usr/​ports/​lang/​python/​3.3 && make unistall
 +</​sxh>​
 +
 +Para mandarmos reinstalar um ports podemos fazer da seguinte forma
 +<sxh bash>
 +cd /​usr/​ports/​lang/​python/​3.3 && make reinstall
 +</​sxh>​
 +
 +Para atualizar o ports podemos fazer o seguinte
 +
 +Vamos exportar a variável do CVSROOT
 +<sxh bash>
 +export CVSROOT=anoncvs@anoncvs.openbsd.org.ar:/​cvs ​
 +</​sxh>​
 +
 +Agora vamos acessar o usr que é o local do ports
 +<sxh bash>
 +cd /usr
 +</​sxh>​
 +
 +Agora vamos obter o ports só precisamos aceitar a chave do cvs
 +<sxh bash>
 +cvs -d$CVSROOT checkout -P ports
 +</​sxh>​
 +
 +Agora temos o nosso ports atualizado. ​
 +
 +====== Referências ======
 +  - http://​www.openbsd.org/​faq/​ports/​ports.html