Como faço para atualizar os pacotes do Ubuntu a partir do código-fonte?

8

Eu gostaria de criar uma versão atualizada do pacote network-manager-openconnect no Ubuntu. Aparentemente eu preciso pegar a última fonte de pacotes:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Então o que? O pacote parece ter uma maneira de se atualizar do código upstream mais recente usando o git. Mas como faço para isso?

    
por James Ward 10.03.2011 / 20:10

2 respostas

6

Construir um pacote atualizado a partir de uma ramificação bzr tende a diferir uma quantia justa, dependendo de quem mantém as filiais ou como o pacote funciona em geral. No entanto, aqui estão algumas diretrizes para uma atualização rápida e suja de praticamente qualquer pacote, para ser enviada para um PPA:

Obtenha o ramo:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Em seguida, mude para ele e atualize o changelog:

dch -i
O

dch -i irá simplesmente abrir uma nova entrada no debian / changelog, aumentando a revisão da versão em um. Se você quiser adicionar um patch, isso é perfeito, mas se você quiser atualizar para uma versão mais recente do software upstream, será necessário atualizar o número da versão antes do traço (-). Digamos, uma versão em 1.2-0ubuntu1 , se você iniciar dch -i , ele será alterado para 1.2-0ubuntu2 , o que é bom para corrigir mas Se você precisar de uma nova versão, provavelmente desejará alterá-la para 1.3-0ubuntu1 .

Se você precisar corrigir, agora é a hora de adicionar suas alterações. Nas ramificações que têm apenas um diretório debian / , você pode usar bzr bd-do (requer o pacote bzr-builddeb) para mudar para uma árvore de trabalho onde você pode fazer mudanças , use o quilt ou qualquer sistema de patch e, em seguida, "exit 0" para que as alterações sejam copiadas de volta.

Se você quiser uma nova versão upstream, uma vez alterado o changelog, você provavelmente executaria um comando semelhante a este:

debian/rules get-orig-source

Isso geralmente faz o download do tarball correto do editor do desenvolvedor para você começar. Se mais alterações forem necessárias, proceda como descrito acima para "aplicar patches" ou alterar outros arquivos no diretório debian / , caso contrário, você está quase pronto:

bzr bd -S

bzr bd cuidará da construção. Chamá-lo sem argumentos começa a construir em seu sistema, enquanto chama-o com -S diz para preparar um pacote fonte, que incluirá um ..._ source.changes arquivo que é o que você deseja enviar para o seu PPA (use dput ppa: < yourname > / < nome do seu ppa > < altera o arquivo > para fazer isso).

Para pacotes do NetworkManager, é um pouco diferente. Vamos ver especificamente o openconnect:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head network-manager-openconnect

Verifique se você também tem todas as dependências de compilação:     sudo get-build-deps

Com a ramificação recuperada, isso lerá o arquivo debian / control e tentará baixar tudo o que você precisa para criar o network-manager-openconnect. Você pode precisar de git também. Feito isso, execute get-orig-source para obter apenas o tarball do snapshot mais recente do git:

debian/rules get-orig-source

Você verá o texto voar e um tarball com um número de versão longo aparecerá. Esse é o código mais recente que você poderia obter para o nm-openconnect.

Você precisará atualizar o changelog com o número da versão do tarball, apenas mantendo o sufixo -0ubuntu1 intacto.

Ou, altere debian / changelog com o número da versão específica que você deseja e, em seguida, execute:     debian / rules get-current-source

Como os plugins não mudam muito, você deve ser capaz de simplesmente construir o pacote a partir daí, usando bzr bd como acima. Caso contrário, aplique as alterações necessárias conforme acima.

Não se esqueça de bzr commit depois de fazer alterações.

Primeiramente, esqueci de adicionar, não hesite em usar o sistema de proposta de mesclagem ( Propor para mesclar link da página da sua filial no LP) quando as alterações que você fizer puderem beneficiar outras pessoas. Normalmente você pode apenas propor a fusão contra o ramo em que o seu é baseado (por exemplo, lp: ~ network-manager / network-manager / openconnect-ubuntu.head neste caso).

    
por Mathieu Trudel-Lapierre 14.03.2011 / 17:23
2

Ok, atualizado sobre como extrair o código da barra de lançamento

% bl0ck_qu0te%

Essa dose é extraída do código do lp (serviço de hospedagem da barra de ativação). Precisamos encontrar onde o código está sentado.

% bl0ck_qu0te%
bzr branch FROM_LOCATION [TO_LOCATION]        
       If  the TO_LOCATION is omitted, the last component of the FROM_LOCATION
       will be used.  In other words, "branch ../foo/bar" will attempt to cre‐
       ate  ./bar.   If the FROM_LOCATION has no / or path separator embedded,
       the TO_LOCATION is derived from the FROM_LOCATION by stripping a  lead‐
       ing   scheme   or  drive  identifier,  if  any.  For  example,  "branch
       lp:foo-bar" will attempt to create ./foo-bar.

Tente alterar para o diretório no qual deseja trabalhar ou adicionar o diretório para o qual você e o código devem ir.

% bl0ck_qu0te%

Se você já fez isso, provavelmente tem um diretório em seu diretório home

% bl0ck_qu0te%

Deve existir um campo README nesse diretório para ver o que deve estar lá. o código do projeto , aqui está um link para README.source

O README deve ter instruções sobre como criar esse projeto individual.

Outras ferramentas úteis do bzr para instalar

% bl0ck_qu0te%

O bzr-explorere permitirá que você navegue pelos seus repositórios bzr que você criou em sua máquina em um gui.

Outra nota. Pode ser necessário puxar toda a fonte do gerenciador de rede para construir a conexão aberta de um componente. Pode haver muitas dependências e entre componentes diferentes.

Você precisa criar uma correção para o pacote opneconnect atual e criar um patch usando todas as ferramentas de comparação que você usa. E envie para o mantenedor do pacote.

Ou se você quiser usar seu novo pacote de correção localmente, você quer criar um arquivo de pacote .deb.

Criando um pacote isso é bastante complicado ler os links a seguir

por nelaaro 11.03.2011 / 10:02