Restic: Empacotamento Debian (repositório)

Criado em 22 nov. 2015  ·  93Comentários  ·  Fonte: restic/restic

Olá a todos,

Comecei a criar um pacote debian de restic que compila e roda bem e é instalável. Em algumas semanas, espero configurar um repositório debian wheezy. Atualmente eu tenho meu rascunho no meu branch master, veja a pasta debian e o destino deb Makefile :
https://github.com/xor-gate/restic

Os testes estão desabilitados porque não consegui fazê-los funcionar.
Além disso, ao usar build.go e /tmp é montado como noexec, ele falha de maneira dolorosa :_).

Eu não sou um desenvolvedor debian real, mas tenho muita experiência em sistemas linux e unix. Portanto, é possível que não atenda às diretrizes completas de empacotamento do debian (ainda).

project

Comentários muito úteis

Existe um PPA que eu possa usar para instalar a versão mais recente do restic no Ubuntu 16.04LTS?

Todos 93 comentários

Obrigado pelo esforço. Você pode definir o diretório temporário por meio da variável de ambiente TMPDIR .

Vou investigar e, quando for aceitável, documentarei, esmagarei e criarei uma solicitação pull.

https://github.com/xor-gate/restic não existe mais, alguém (ainda) está trabalhando no empacotamento do Debian?

Um repositório Debian para isso seria ótimo.

Mebus

@mika , eu estraguei o repositório. Agora é "polido" e reproduzível.

Eu também adicionei uma pequena documentação: https://github.com/xor-gate/restic/tree/debian#debian -packaging

https://github.com/xor-gate/restic/tree/debian
https://github.com/xor-gate/restic/blob/debian/Makefile
https://github.com/xor-gate/restic/releases/tag/v0.0.1-debian

Use o makefile em um contêiner ou VM. Sem garantias :-)

Se @fd0 estiver interessado, posso limpá-lo um pouco e criar um pull request disso? A assinatura real e a configuração de um repositório podem ser feitas com, por exemplo, http://bintray.com . Não é a solução mais legal, mas funciona e não precisa haver alguém hospedando um repositório de pacotes (pain). Opcional, você pode executar o repositório debian você mesmo sem as ferramentas e coisas desagradáveis reprepro : http://www.aptly.info/

@xor-gate Você pretende enviar/manter no debian? Supondo que meu primeiro teste com restic funcione bem, ficaria feliz em patrocinar um upload :)

@sjoerd-ccu eu não sou um desenvolvedor oficial do debian e manter um pacote pode ser demorado. Meu empacotamento debian atual precisará de um pouco de amor para realmente entrar no sistema de empacotamento do debian.

Eu sou um desenvolvedor Debian, portanto, posso patrocinar um upload e revisar seu pacote. Mas sim, a escolha real que você precisa fazer é se deseja mantê-lo adequadamente :)

Eu mesmo fui um desenvolvedor Debian uma vez, mas não tinha mais tempo.

Eu apreciaria muito alguém intensificando e mantendo um pacote adequado, seja dentro ou fora do Debian. Eu também posso hospedar um repositório para pacotes fora do Debian (por exemplo, no GitHub), mas isso precisaria de outra pessoa para gerenciar o empacotamento (estarei feliz em ajudar, é claro) :)

Se houver interesse, podemos, por exemplo, também adicionar um repositório para manutenção de grupos, por exemplo, em github.com/restic/pkg-debian ou algo assim.

Eu gostaria de manter o pacote (fora do debian), mas para tê-lo upstream no Debian seria muito mais esforço e contribuição da comunidade por causa das diretrizes e das pessoas não quebrarem suas configurações. Então eu o configuraria em http://bintray.com , que funciona imediatamente e ninguém precisa executar seu próprio servidor. Tenha em mente que talvez queiramos um repositório restic/packaging para que também o archlinux e outras distros possam se beneficiar. Talvez também specfile RPM. Eu dei uma olhada em http://packager.io , mas os pacotes que ele emite estão inchados.

Olá,

Como outro desenvolvedor Debian de olho no restic, só posso pedir que você reconsidere sua visão de manter o restic fora do Debian é muito esforço. É basicamente o mesmo esforço, ou na minha experiência, menos esforço.

O Debian lhe daria visibilidade, espelhos, testes contínuos de atualizações, reprodutibilidade de compilação, um gateway para inclusão no Ubuntu e tantas outras coisas que não posso listar aqui.

Você já tem um desenvolvedor Debian oferecendo patrocínio. Aqui está mais um.

Eu ficaria feliz em ver seu esforço de empacotamento no Debian oficialmente. Se não for você, é muito fácil alguém acabar fazendo isso mais cedo ou mais tarde.

Então, até onde posso ver, temos pessoas suficientes interessadas em manter isso para o Debian. Você pode ter um repositório na organização restic se quiser, por exemplo, github.com/restic/pkg-Debian, e ter acesso a esse repositório. Você está interessado em manter o grupo?

Do meu ponto de vista (autor principal) Seria incrível ter um grupo de pessoas mantendo os pacotes para as diferentes distribuições, fico feliz em ajudar :)

@fd0 um repositório separado seria útil. E eu gostaria de dar o pontapé inicial e, com várias pessoas envolvidas, seria bom, pois a maioria das pessoas faz isso em seu tempo livre (eu) e a qualidade será melhor. Espero que um dia chegue à infraestrutura oficial do debian.

@xor-gate ótimo, criei https://github.com/restic/pkg-Debian e habilitei o acesso push para você. Quando você tiver alguém que deveria ter acesso de gravação, por favor me avise. PRs podem ser criados, e eu habilitei o rastreador de problemas.

@xor-gate obrigado por compartilhar seu trabalho! Infelizmente, sua abordagem com o "go get" dentro do processo de compilação (https://github.com/xor-gate/restic/blob/debian/Makefile) não é o que é considerado as melhores práticas para o empacotamento Debian e não tem chance de resultar em um pacote Debian _oficial_ (como em "dentro do projeto Debian"), especialmente porque a infraestrutura de compilação oficial nem mesmo permite acesso à rede durante o tempo de compilação. Claro que isso não deve impedir ninguém de fornecer pacotes Debian fora do Debian, então jftr && jfyi. :)

Alguns dias atrás eu comecei a olhar para o empacotamento Debian do restic e isso é o que eu tenho no meu histórico de shell o que deve ser relevante como ponto de partida (disclaimer: isso pode não estar 100% correto nem completo, considere isso como um ponto de partida ponto de onde parei):

 dh-make-golang github.com/restic/restic
 dh-make-golang github.com/jessevdk/go-flags-dev
 dh-make-golang github.com/juju/errors-dev
 dh-make-golang github.com/restic/chunker
 dh-make-golang github.com/juju/errors
 dh-make-golang github.com/jessevdk/go-flags
 dh-make-golang github.com/minio/minio-go
 dh-make-golang github.com/juju/testing
 dh-make-golang gopkg/check.v1 golang-gopkg-check.v1-dev 
 dh-make-golang github.com/juju/loggo
 dh-make-golang github.com/juju/utils 

JFTR: Eu também sou um desenvolvedor Debian e ficaria feliz em também patrocinar quaisquer uploads (mas atualmente não tenho tempo para cuidar do empacotamento e manter os pacotes adequadamente).

@mika Sim, eu sei, foi apenas uma correção suja para que funcionasse. Você pode me indicar instruções de como as tags/commits golang podem ser usadas no processo de empacotamento do debian golang?

@xor-gate: confira dh-make-golang, é suposto fazer a maior parte do trabalho para você (PS: eu sou mika, não mike, JFYI :))

Ola pessoal. Algum sucesso? ;)
Espero que isso possa ajudá-lo um pouco
https://github.com/laher/goxc

Alguma novidade por aqui?
Existe uma fonte confiável para um pacote debian ou está construindo o seu próprio caminho?

Apenas para mencionar aqui: Um ITP foi arquivado no rastreador de bugs do debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=846176

Oi pessoal, desculpe pela minha falta de resposta, pois sou o autor deste "problema". Eu não uso restic há muito tempo (bastante porque o borgbackup é atualmente mais estável e possui o mesmo conjunto de recursos). Portanto, não investi tempo e esforço para continuar o empacotamento do debian. Eu estava esperando para ter algum tipo de lançamento restic estável (que eu mesmo uso) para terminar o empacotamento do debian e criar um repositório.

Se as pessoas não quiserem manter um repositório debian (com servidores próprios), pode ser considerado usar o Bintray para hospedagem de repositório/largura de banda.

Mais uma vez, peço desculpas pelo silêncio sobre este tópico e espero que você entenda.

Obrigado por nos informar. Estou feliz que você encontrou uma solução de backup que funciona para você :)

Woops, eu não tinha visto esse bug (e o repositório de empacotamento), comecei isso do zero e enviei um ITP ontem (que resultou em um link para este bug :-)). Posso compartilhar o resultado em breve, e estaria totalmente aberto à manutenção do grupo.

Empacotei as duas dependências ausentes (golang-github-elithrar-simple-scrypt e golang-github-restic-chunker) e estou procurando patrocinadores para obtê-las no arquivo antes que eu possa compartilhar o pacote restic, de preferência em um estado de trabalho :-).

Obrigado @mika por patrocinar os pacotes :)

Atualização: golang-github-minio-minio-go parece muito antigo para restic. Pelo menos a compilação falha com:

restic/backend/s3/s3.go:39: assignment count mismatch: 2 = 1

Estou tentando obter 2.0.2 no Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=846969 (também entrei em contato com o último uploader em particular)

@legrostdg : Alternativamente, você pode tentar reverter 06b23edb para o pacote debian. Não é legal, mas pode ser uma solução alternativa se a atualização do pacote minio demorar muito.
(Veja https://github.com/minio/minio-go/commit/56218997d01f6c8d77b91154079b57ccf8cf581a para a mudança da API no minio. AFAIKT eles só mudaram a forma como o resultado é relatado de volta para o chamador. Mas eu não verifiquei se existem outras incompatibilidades entre minio 2.0.1 e 2.0.2.)

Acho que não demorará muito para atualizar o minio, se eu não tiver resposta do último uploader, eu mesmo atualizarei o pacote e pedirei um patrocinador no time pkg-go. Mas que esquema de numeração estranho! 2.0.1 não é compatível com a API 2.0.2... @jannic : Obrigado pela sugestão!

Que número de versão o binário restic do pacote Debian reportará? Quando compilado da fonte, as dependências fornecidas são usadas, então o número da versão (que inclui o Git commit e/ou o conteúdo do arquivo VERSION ) especifica exatamente qual código foi compilado, incluindo dependências. Como lidamos com isso para o pacote Debian? Use um sufixo como 0.3.0-debian1 ?

Eu acho que é importante decidir logo no início, porque uma vez que restic está no Debian, os usuários irão reportar bugs então nós precisamos saber qual código eles usaram...

@legrostdg Fico feliz em patrocinar o pacote atualizado, embora nunca tenha recebido um e-mail privado sobre isso se fosse sobre mim, envie-me os URLs correspondentes e ficarei feliz em cuidar

@mika : não, não foi você que enviei o e-mail :-). De qualquer forma, a versão atualizada está disponível lá:
https://mentors.debian.net/debian/pool/main/g/golang-github-minio-minio-go/golang-github-minio-minio-go_2.0.2+dfsg-1.dsc

@fd0 : o sufixo debian geralmente é -$debian_version , então por exemplo 0.3.0-1 . Os usuários devem reportar bugs ao debian bts, que podem ser encaminhados para lá (ou não). Claro, uma dependência de restic com uma versão diferente no debian que as dos fornecedores podem quebrar a compilação, mas é a única maneira de obter um pacote compatível com DFSG... A fonte do pacote obviamente estará disponível em um VCS publicamente acessível .

@legrostdg , minio/minio-go é usado pelo gitlab-ci-multi-runner já no arquivo. Você pode testar a compilação gitlab-ci-multi-runner com o minio-go 2.0.2 para ver se a compilação não quebra com a nova versão?

Observe também que o congelamento do trecho está se aproximando, e se o restic quiser ter uma chance de estar no trecho, ele deve ser carregado o mais rápido possível, pois terá que passar nas verificações manuais do ftp-master sendo um novo pacote e depois sobreviver o período de transição de 10 dias antes que ele possa pousar no teste do Debian. A janela fecha no dia 5. Se não estiver lá até então, está fora.

https://wiki.debian.org/DebianStretch

Obrigado pela lembrança. @legrostdg deixe-me saber se eu puder fazer alguma coisa para ajudar aqui :)

@jmallach gitlab-ci-multi-runner compila com minio-go 2.0.2+dfsg-1 (aquele dos mentores). Posso enviar o .build
Estou ciente do congelamento, farei o mais rápido possível :-).

@fd0 por enquanto, não tenho certeza se você poderia fazer muito agora. Ajudaria ter apenas os últimos lançamentos (e não commits git arbitrários) das dependências em vendor/.

@legrostdg Você poderia garantir que golang-github-elithrar-simple-scrypt-dev inclui minha correção em https://github.com/elithrar/simple-scrypt/commit/2325946f714c95de4a6088202c402fbdfa64163b? caso contrário, restic é quebrado em 386 (veja #676).

o golang-github-elithrar-simple-scrypt-dev agora no debian sid é baseado neste (último) commit.

Ok, obrigado por verificar.

@legrostdg , seu pacote já foi patrocinado?

FYI: Eu lancei o restic 0.3.1 ontem.

@jmallach Ainda estou esperando que golang-github-minio-minio-go-dev seja patrocinado, mas deve ser feito em breve.

@fd0 eu importei restic 0.3.1

No momento, a compilação (com go run build.go e go run build.go --test ) vai bem, mas a criação do pacote falha no final. Perguntei aos pkg-go-maintainers sobre isso e estou esperando uma resposta. Provavelmente é um problema com dh-golang ...

dpkg-buildpackage
-----------------

dpkg-buildpackage: info: source package restic
dpkg-buildpackage: info: source version 0.3.1-1
dpkg-buildpackage: info: source distribution UNRELEASED
dpkg-buildpackage: info: source changed by Félix Sipma <[email protected]>
 dpkg-source --before-build restic-0.3.1
dpkg-buildpackage: info: host architecture amd64
 fakeroot debian/rules clean
dh clean --buildsystem=golang --with=golang
   dh_testdir -O--buildsystem=golang
   dh_auto_clean -O--buildsystem=golang
   dh_autoreconf_clean -O--buildsystem=golang
   dh_clean -O--buildsystem=golang
 dpkg-source -b restic-0.3.1
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building restic using existing ./restic_0.3.1.orig.tar.gz
dpkg-source: info: building restic in restic_0.3.1-1.debian.tar.xz
dpkg-source: info: building restic in restic_0.3.1-1.dsc
 debian/rules build
dh build --buildsystem=golang --with=golang
   dh_testdir -O--buildsystem=golang
   dh_update_autotools_config -O--buildsystem=golang
   dh_autoreconf -O--buildsystem=golang
   dh_auto_configure -O--buildsystem=golang
   debian/rules override_dh_auto_build
make[1]: Entering directory '/<<PKGBUILDDIR>>'
go run build.go
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
   debian/rules override_dh_auto_test
make[1]: Entering directory '/<<PKGBUILDDIR>>'
go run build.go --test
ok      restic  14.374s
ok      restic/archiver 87.269s
ok      restic/backend  2.500s
ok      restic/backend/local    1.824s
ok      restic/backend/mem  1.956s
ok      restic/backend/rest 0.033s
ok      restic/backend/s3   0.018s
ok      restic/backend/sftp 0.004s
ok      restic/backend/test 2.072s
ok      restic/checker  8.874s
ok      restic/crypto   0.814s
?       restic/debug    [no test files]
?       restic/errors   [no test files]
ok      restic/filter   0.529s
?       restic/fs   [no test files]
ok      restic/fuse 1.423s
ok      restic/index    72.766s
?       restic/list [no test files]
ok      restic/location 0.005s
?       restic/mock [no test files]
ok      restic/pack 0.013s
ok      restic/pipe 0.014s
ok      restic/repository   6.332s
?       restic/test [no test files]
ok      restic/walk 1.685s
ok      restic/worker   0.003s
ok      cmds/restic 56.811s
ok      cmds/restic-server  0.026s
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
 fakeroot debian/rules binary
dh binary --buildsystem=golang --with=golang
   dh_testroot -O--buildsystem=golang
   dh_prep -O--buildsystem=golang
   dh_auto_install -O--buildsystem=golang
    mkdir -p /<<PKGBUILDDIR>>/debian/restic/usr/share/gocode/src/github.com/restic/restic
    cp -r -T src/github.com/restic/restic /<<PKGBUILDDIR>>/debian/restic/usr/share/gocode/src/github.com/restic/restic
   dh_install -O--buildsystem=golang
   dh_installdocs -O--buildsystem=golang
   dh_installchangelogs -O--buildsystem=golang
   dh_perl -O--buildsystem=golang
   dh_link -O--buildsystem=golang
   dh_strip_nondeterminism -O--buildsystem=golang
   dh_compress -O--buildsystem=golang
   dh_fixperms -O--buildsystem=golang
   dh_strip -O--buildsystem=golang
   dh_makeshlibs -O--buildsystem=golang
   dh_shlibdeps -O--buildsystem=golang
   dh_installdeb -O--buildsystem=golang
   dh_golang -O--buildsystem=golang
can't load package: package restic: cannot find package "restic" in any of:
    /usr/lib/go-1.7/src/restic (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic (from $GOPATH)
can't load package: package restic/archiver: cannot find package "restic/archiver" in any of:
    /usr/lib/go-1.7/src/restic/archiver (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/archiver (from $GOPATH)
can't load package: package restic/backend: cannot find package "restic/backend" in any of:
    /usr/lib/go-1.7/src/restic/backend (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend (from $GOPATH)
can't load package: package restic/backend/local: cannot find package "restic/backend/local" in any of:
    /usr/lib/go-1.7/src/restic/backend/local (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend/local (from $GOPATH)
can't load package: package restic/backend/mem: cannot find package "restic/backend/mem" in any of:
    /usr/lib/go-1.7/src/restic/backend/mem (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend/mem (from $GOPATH)
can't load package: package restic/backend/rest: cannot find package "restic/backend/rest" in any of:
    /usr/lib/go-1.7/src/restic/backend/rest (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend/rest (from $GOPATH)
can't load package: package restic/backend/s3: cannot find package "restic/backend/s3" in any of:
    /usr/lib/go-1.7/src/restic/backend/s3 (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend/s3 (from $GOPATH)
can't load package: package restic/backend/sftp: cannot find package "restic/backend/sftp" in any of:
    /usr/lib/go-1.7/src/restic/backend/sftp (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend/sftp (from $GOPATH)
can't load package: package restic/checker: cannot find package "restic/checker" in any of:
    /usr/lib/go-1.7/src/restic/checker (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/checker (from $GOPATH)
can't load package: package restic/crypto: cannot find package "restic/crypto" in any of:
    /usr/lib/go-1.7/src/restic/crypto (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/crypto (from $GOPATH)
can't load package: package restic/debug: cannot find package "restic/debug" in any of:
    /usr/lib/go-1.7/src/restic/debug (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/debug (from $GOPATH)
can't load package: package restic/errors: cannot find package "restic/errors" in any of:
    /usr/lib/go-1.7/src/restic/errors (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/errors (from $GOPATH)
can't load package: package restic/filter: cannot find package "restic/filter" in any of:
    /usr/lib/go-1.7/src/restic/filter (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/filter (from $GOPATH)
can't load package: package restic/fs: cannot find package "restic/fs" in any of:
    /usr/lib/go-1.7/src/restic/fs (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/fs (from $GOPATH)
can't load package: package restic/fuse: cannot find package "restic/fuse" in any of:
    /usr/lib/go-1.7/src/restic/fuse (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/fuse (from $GOPATH)
can't load package: package restic/index: cannot find package "restic/index" in any of:
    /usr/lib/go-1.7/src/restic/index (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/index (from $GOPATH)
can't load package: package restic/list: cannot find package "restic/list" in any of:
    /usr/lib/go-1.7/src/restic/list (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/list (from $GOPATH)
can't load package: package restic/location: cannot find package "restic/location" in any of:
    /usr/lib/go-1.7/src/restic/location (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/location (from $GOPATH)
can't load package: package restic/pack: cannot find package "restic/pack" in any of:
    /usr/lib/go-1.7/src/restic/pack (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/pack (from $GOPATH)
can't load package: package restic/pipe: cannot find package "restic/pipe" in any of:
    /usr/lib/go-1.7/src/restic/pipe (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/pipe (from $GOPATH)
can't load package: package restic/repository: cannot find package "restic/repository" in any of:
    /usr/lib/go-1.7/src/restic/repository (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/repository (from $GOPATH)
can't load package: package restic/test: cannot find package "restic/test" in any of:
    /usr/lib/go-1.7/src/restic/test (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/test (from $GOPATH)
can't load package: package restic/walk: cannot find package "restic/walk" in any of:
    /usr/lib/go-1.7/src/restic/walk (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/walk (from $GOPATH)
can't load package: package restic/worker: cannot find package "restic/worker" in any of:
    /usr/lib/go-1.7/src/restic/worker (from $GOROOT)
    /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/worker (from $GOPATH)
go list of dependencies failed with code 31488,  at /usr/bin/dh_golang line 55.
debian/rules:8: recipe for target 'binary' failed
make: *** [binary] Error 123
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
--------------------------------------------------------------------------------

@legrostdg este é #660 em vigor. build.go usa truques, desfigura $GOPATH etc... e dh-golang provavelmente espera que uma fonte Go bem definida faça sua mágica corretamente. Infelizmente, #660 foi rejeitado...

O programa build.go foi feito para usuários finais, não necessariamente para mantenedores de pacotes. É perfeitamente possível usar a ferramenta go para isso:

$ GOPATH=$PWD:$GOPATH go build -ldflags "-s -w -X \"main.compiledAt=$(date '+%Y-%m-%d %H:%M:%S')\" -X \"main.version=$(cat VERSION)-debian1\"" -o restic cmds/restic

Isso define os campos de versão no binário de acordo. Quando as dependências fornecidas devem ser usadas, o GOPATH dado a go build deve ser ligeiramente modificado:

$ GOPATH=$PWD:$PWD/vendor go build -ldflags "-s -w -X \"main.compiledAt=$(date '+%Y-%m-%d %H:%M:%S')\" -X \"main.version=$(cat VERSION)-debian1\"" -o restic cmds/restic

Isso é basicamente o que o build.go faz.

O comando version funciona então:

$ ./restic version
restic 0.3.1-debian1
compiled at 2016-12-14 18:53:38 with go1.7 on linux/amd64

Talvez @stapelberg possa ajudar? :)

Eu acho que o problema está no lado do debian (dh-golang, debian/rules, outro?). go run build.go constrói muito bem.

Você pode tentar este hack:

ln -s ../src/restic vendor/restic
go install ./src/cmds/restic

Eu costumava fazer isso antes, para poder "ir instalar" o binário. Mas, isso não adicionará as tags @fd0 menciona alguns comentários acima, então é apenas um hack.

@legrostdg ajuda se eu patrocinar o mais rápido possível?

@jmallach nem tanto... Uma vez que golang-github-minio-minio-go-dev estiver no sid, ainda teremos o problema mencionado no meu comentário anterior.

ok, acho que quase tenho um pacote de trabalho. Eu removi dh-golang e usei apenas dh.

@legrostdg, mas o golang-github-minio-minio-go-dev mais rápido atinge a fila NOVA, espero que mais rápido seja limpo. Você já tem um patrocinador olhando para isso, ou eu deveria dar uma olhada?

@jmallach Veja https://lists.debian.org/debian-mentors/2016/12/msg00154.html Entrarei em contato em breve se não tiver feedback de Gianfranco ou Dmitry

@legrostdg ah, este pacote já foi carregado, então estamos prontos. Esta é a única dependência ausente? https://ftp-master.debian.org/deferred.html

@jmallach oh, sim, eu esqueci: Gianfranco colocou em adiado.
Essa é a única dependência ausente. Fiz o upload do pacote restic para os mentores. (veja RFS: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=848148)

Agora preciso que revisores e patrocinadores para restic entrem no sid, se as pessoas quiserem dar uma olhada (veja RFS: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=848148).

@jmallach ainda sem resposta de Gianfranco e Dmitry. Talvez você possa enviar para sid a versão mais recente dos mentores (a que está na fila adiada não é a revisão mais recente)?

golang-github-minio-minio-go-dev 2.0.2 está no sid agora. Meu pacote de restic ainda não tem patrocinador nem testador, então provavelmente não teremos restic no trecho, pois o pacote teria que ser sid antes do dia 25...

Estou respondendo ao RFS enquanto falamos.

Você viu meus comentários em mentors.debian.net?

Não. Se você deseja receber este RFS, atribua-o a você e responda sobre o bug.

Dito isto, os próprios comentários têm mérito; obrigado pela revisão.

@legrostdg Infelizmente, restic 0.3.1 contém um bug que o deixa em pânico sempre que ocorre um erro durante a leitura de arquivos durante o backup (detalhes #699), então eu lancei o 0.3.2 alguns minutos atrás, que não inclui nada, exceto a correção do bug. Você poderia fazer o upload dessa versão? Seria muito valioso colocar 0.3.2 no próximo estábulo, em vez de 0.3.1. Sinto muito pelo horário.

E em relação ao comentário no pacote: restic não se destina a ser usado como uma biblioteca (pelo menos não por enquanto), então do meu ponto de vista não é necessário instalar o código-fonte em nenhum lugar. Quando você tiver um novo pacote pronto, também posso oferecer para dar uma olhada. Afinal, eu já fui um desenvolvedor Debian ;)

Mais comentários de revisão do meu lado:

  • Modificar build.go como você faz em 0001-replace-vendor-src-by-usr-share-gocode-src.patch é uma má ideia: Durante a compilação, o programa cria um novo GOPATH construído a partir do código-fonte restic e do diretório do fornecedor em um diretório temporário . Após a aplicação do patch, todo o código fonte disponível em /usr/share/gocode/src é copiado para o diretório temporário, o que é desnecessário e retarda a compilação.
  • Fiquei surpreso ao ver que você removeu uma seção do manual referente à instalação em outros sistemas operacionais/distribuições em 0002-Debianize-doc-Manual.md.patch . Devo dizer que não gosto nada dessa mudança. Não há motivo para ocultar as instruções de instalação, e você também removeu bastante texto de "introdução" que mostra ao usuário como obter ajuda para comandos restic. Se você não gosta da seção sobre o Debian, tenho certeza que podemos resolver algo.

Se você precisar de ajuda para construir o binário com go build , entre em contato, ficarei feliz em ajudar.

Aqui está uma amostra debian/rules : https://gist.github.com/fd0/c3ec442e3b77be0f959425469f6b7583

Por favor, evite incluir datas de construção e similares em binários. Eles tornam impossível reproduzir a compilação e obter um pacote idêntico byte a byte. https://reproducible-builds.org/docs/timestamps/

Olá @stapelberg! Eu proponho que quando @legrostdg aborda a coisa GPL-3 em debian/* (eu também notei, parece que esqueci de adicionar isso), a coisa Manual.md, o bit de código de instalação e adicione o bit pristiner-tar, o primeiro de nós dois que consegue revisar novamente faz o upload.

A mudança para o pkg-go pode acontecer após o restic ter feito a transição uma vez para o teste e antes de 5 de fevereiro. Quanto menos etapas puderem atrasar o upload, melhor. @legrostdg , deixe-nos saber se você pode trabalhar nisso a curto prazo.

Respondi às preocupações do @stapelberg , no relatório de bug do debian.

Eu também importei 0.3.2.

Com relação 0002-Debianize-doc-Manual.md.patch eu removi o parágrafo de instalação porque estas instruções de instalação manual não são adequadas para Debian, é comum removê-las dos pacotes Debian. Eu também removi o final do parágrafo com as instruções básicas de uso porque senti que isso era apenas a saída de --help . Eu acho que isso provavelmente deveria estar em um novo parágrafo, mas enquanto isso, eu apenas renomeei o parágrafo "uso básico" e restaurei esta parte do Manual.md.

Com relação 0001-replace-vendor-src-by-usr-share-gocode-src.patch , você sabe que o diretório vendor/src deve ser removido do pacote, certo? Eu adicionei este patch porque go run build.go falhou se o fornecedor/src não existisse. É claro que estou aberto a outra coisa. Você acha que seria melhor remover tudo o que menciona o fornecedor?

Acabei de enviar um novo pacote para mentores. Obrigado por seus comentários!

@legrostdg Para construir, sugiro usar go build com GOPATH definido, veja aqui: https://gist.github.com/fd0/c3ec442e3b77be0f959425469f6b7583

Você também pode deixar a variável main.compiledAt indefinida, isso fará com que você tenha compilações reproduzíveis, removerei o timestamp do restic em breve (como sugerido por @jmallach).

Obrigado, atualizei o pacote com seu debian/rules e removi meu patch para modificar o fornecedor em build.go.

Parece bom do meu lado!

Mesmo aqui!

Eu assinei e enviei isso. Esperamos que apareça em breve na fila NOVA. Bom trabalho Félix!

Obrigado! Espero que fique instável dentro de 5 dias, para que o repouso possa estar no limite. Eu teria preferido obter um feedback de @stapelberg , mas acho que você está certo, podemos corrigir o pacote para usar dh-golang e definir o mantenedor para pkg-go mais tarde.

Sim, eu queria fazer o relógio funcionar, e o pacote já é mais do que bom o suficiente para o arquivo. Estou fortemente alinhado com @stapelberg em relação à GPL+3 do debian/*. Está se tornando cada vez mais prática padrão que o empacotamento apenas siga a licença upstream, ou pelo menos seja duplamente licenciado, a menos que a licença upstream não seja livre, é claro.

Com relação ao patch manual.md, também não vejo sentido em corrigi-lo, mas acho que seria menos problemático se você pudesse adicionar uma página de manual para restic que pode ser até mesmo contribuída upstream. Começar com o que o help2man produz é um bom começo e elimina grande parte do trabalho pesado.

Eu também notei que a fonte está na seção utils, enquanto o binário está na seção misc. Eu me contentaria com utils, ou admin, ou qualquer outra coisa, mas não misc.

Finalmente, para o nitpicker em mim, use https na URL "Format" em d/copyright. :)

restic_0.3.2-2_amd64.altera ACEITO em instável, instável

O mais difícil já passou. Parabéns @legrostdg e @fd0! Vamos ver se os bugs do RC nos deixam em paz e conseguimos nos testar antes do dia 5!

Impressionante!

E provavelmente para encerrar este assunto,

https://tracker.debian.org/news/829517

restic 0.3.2-2 MIGRADO para teste

@fd0 , seria bom se um novo lançamento pudesse ser feito durante a próxima semana, incluindo as correções mais recentes e, em particular, https://github.com/restic/restic/commit/e1fc455079f37b27e162d4fcab666da0caa5bc6e. As últimas atualizações restic podem ser estendidas se carregadas por volta de 22 de janeiro.

Legal, obrigado por nos avisar. Farei um lançamento na próxima semana, provavelmente 0.3.3 (sem alterações maiores, apenas correções de bugs).

Feito: restic 0.3.3

Anunciei o pacote debian no blog, junto com o novo lançamento: https://restic.github.io/blog/2017-01-08/restic-0.3.3-released

Eu vi que o código para rest-server foi movido para outro diretório. Infelizmente não será possível que outro pacote entre no trecho.

O que pode ser feito é adicionar um patch para adicionar rest-server de volta, ou ter stretch sem esta funcionalidade. O que você acha?

O servidor REST é um pacote separado agora. E não é construído automaticamente por build.go , então tecnicamente não estava no pacote antes. Também não é necessário executar restic, apenas se você quiser usar um transporte diferente de sftp ou s3.

Eu deixaria de fora por enquanto.

OK! Eu empurrei o pacote atualizado para mentores.

Ei, restic 0.4.0 foi lançado recentemente e acho que deveria ser enviado para o Debian o mais rápido possível. @legrostdg você pode dar uma olhada?

Também notei que 0.3.3 também não foi carregado. Há algo que eu possa fazer para acelerar o upload de novas versões?

Eu vi os lançamentos recentes, mas o Debian entrou no congelamento total, então não haverá nenhum upload de correção não rc para a instável, antes que o trecho seja lançado.

Você pode fazer o upload para experimental enquanto isso.

Ah, isso explica. Hum, chato.

BTW, 0.3.3 foi carregado e entrou no teste antes do congelamento total:
https://tracker.debian.org/pkg/restic

Obrigado pela correção, acabei de olhar para a caixa "notícias".

Existe um PPA que eu possa usar para instalar a versão mais recente do restic no Ubuntu 16.04LTS?

Não respondendo sua pergunta diretamente, mas caso não haja PPA: o pacote Debian deve ser instalável no Ubuntu sem problemas. Depende apenas de libc6.

Esta página foi útil?
0 / 5 - 0 avaliações