Erro de permissão ao criar backup na instalação omnibus do gitlab

0

Estou usando o gitlab versão 7.10.4 e estou tentando atualizar a instalação. Mas eu estou recebendo isso quando tentei criar back-up

gitlab-rake gitlab:backup:create

Errno::EPERM: Operation not permitted @ chmod_internal - db
Errno::EPERM: Operation not permitted @ chmod_internal - db
/opt/gitlab/embedded/lib/ruby/2.1.0/fileutils.rb:1354:in 'chmod'
/opt/gitlab/embedded/lib/ruby/2.1.0/fileutils.rb:1354:in 'chmod'
/opt/gitlab/embedded/lib/ruby/2.1.0/fileutils.rb:997:in 'block in chmod'
/opt/gitlab/embedded/lib/ruby/2.1.0/fileutils.rb:996:in 'each'
/opt/gitlab/embedded/lib/ruby/2.1.0/fileutils.rb:996:in 'chmod'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:19:in 'block in pack'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:13:in 'chdir'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:13:in 'pack'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:16:in 'block (3 levels) in <top (required)>'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:240:in 'call'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:240:in 'block in execute'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:235:in 'each'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:235:in 'execute'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:179:in 'block in invoke_with_call_chain'
/opt/gitlab/embedded/lib/ruby/2.1.0/monitor.rb:211:in 'mon_synchronize'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:172:in 'invoke_with_call_chain'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:165:in 'invoke'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:150:in 'invoke_task'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in 'block (2 levels) in top_level'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in 'each'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in 'block in top_level'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:115:in 'run_with_threads'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:100:in 'top_level'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:78:in 'block in run'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:176:in 'standard_exception_handling'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:75:in 'run'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/gems/rake-10.4.2/bin/rake:33:in '<top (required)>'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/bin/rake:23:in 'load'
/opt/gitlab/embedded/service/gem/ruby/2.1.0/bin/rake:23:in '<main>'
Tasks: TOP => gitlab:backup:create

Por favor me ajude nisso.

    
por user9744 03.01.2017 / 05:09

1 resposta

3

Em primeiro lugar, a documentação do gitlab parece achar que você deve executar esse comando com o sudo:

link

Com base no código:

link

Parece que ele está executando o chmod 700 em 3 diretórios (repositórios, db, uploads) (e com falha no db) no diretório de backup de sua configuração (Gitlab.config.backup.path). Com base na documentação, essa variável Gitlab.config.backup.path é extraída de config / gitlab.yml. Se você não conseguir encontrar esse arquivo de configuração, você pode adicionar temporariamente uma linha acima de /opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:19 para imprimir o diretório de backup:

puts("Backup dir is: #{Gitlab.config.backup.path}")

Você também pode obter as mesmas informações usando o comando strace:

$ strace -f gitlab-rake gitlab:backup:create 2>&1 | grep "^chdir\|^fchdir"

Depois de encontrar o diretório de backup, veja o diretório db dentro dele. A solução de problemas de permissões de linux padrão deve ser aplicada. Qual usuário você está executando o comando como vs qual conjunto de permissões o diretório possui? Sudo chmod / chown, se necessário.

    
por 07.01.2017 / 04:50