Como atualizo os pacotes Ubuntu da fonte?

8

Eu gostaria de criar uma versão atualizada do pacote network-manager-openconnect no Ubuntu. Aparentemente, preciso obter a fonte do pacote mais recente:

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

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

James Ward
fonte
Eu pensei que bzr significava bazar - bazaar.canonical.com/pt
Paul

Respostas:

6

Construir um pacote atualizado a partir de uma ramificação bzr tende a diferir uma quantidade razoável, dependendo de quem mantém as ramificações 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, a ser enviada para um PPA:

Obter o ramo:

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

Em seguida, mude para ele e atualize o log de alterações:

dch -i

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

Se você precisar corrigir, agora é a hora de adicionar suas alterações. Nos ramos que possuem apenas um diretório debian / , você pode usar o bzr bd-do (requer o pacote bzr-builddeb) para mudar para uma árvore de trabalho onde você pode fazer alterações, usar quilt ou qualquer sistema de correção e depois "exit 0" para copie suas alterações de volta.

Se você deseja uma nova versão upstream, depois que o changelog for alterado, você provavelmente executará um comando semelhante a este:

debian/rules get-orig-source

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

bzr bd -S

bzr bd cuidará da construção. A chamada sem argumentos começa a se desenvolver no seu sistema, enquanto a chamada com -S diz para preparar um pacote de origem, que incluirá um arquivo ..._ source.changes que é o que você deseja enviar para o seu PPA (use dput ppa: <yourname> / <nome do seu ppa> <arquivo de alterações> para fazer isso).


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

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

Verifique também se possui 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 construir o network-manager-openconnect. Você pode precisar do 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 passar rapidamente e um tarball com um número de versão longo será exibido. Esse é o código mais recente que você pode obter para o nm-openconnect.

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

Ou mude debian / changelog com o número de versão específico desejado e execute: debian / rules get-current-source

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

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

Esqueci de adicionar, não hesite em usar o sistema de proposta de mesclagem ( propor a fusão do link da página de sua filial no LP) quando as alterações que você estiver fazendo puderem beneficiar outras pessoas. Geralmente você pode apenas propor uma fusão com a filial na qual a sua base (por exemplo, lp: ~ gerenciador de rede / gerenciador de rede / openconnect-ubuntu.head neste caso).

Mathieu Trudel-Lapierre
fonte
Imaginei que tinha que esquecer uma coisa: não tenha medo de apresentar suas alterações para mesclar no ramo principal de embalagens, se for uma correção de embalagem (isso inclui patches também), para que todos possam se beneficiar das alterações! :)
Mathieu Trudel-Lapierre
2

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

bzr branch lp: ~ gerenciador de rede / gerenciador de rede / openconnect-ubuntu.head

Qual é a dose retirada do código do lp (serviço de hospedagem da barra de ativação). Precisamos descobrir onde está o código.

man bzr
343 #type 343 conforme a página do manual é exibida.

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 mudar para o diretório em que deseja trabalhar ou adicione o diretório para onde você e o código devem ir.

cd / home / [seu nome de usuário] / [caminho para o diretório de desenvolvimento]
ou bzr branch lp: ~ gerente de rede / gerente de rede / openconnect-ubuntu.head / home / [seu nome de usuário] / [caminho para o diretório de desenvolvimento]
por exemplo, bzr branch lp: ~ gerenciador de rede / gerenciador de rede / openconnect-ubuntu.head / home / joe / projects / gerenciador de rede / dev

Se você já fez isso, provavelmente terá um diretório no diretório home

ls ~
./openconnect-ubuntu.head

Deve haver um fiel do README nesse diretório para ver o que deve estar lá. uma olhada no código do projeto , aqui está um link para o README.source

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

Outras ferramentas bzr úteis para instalar

sudo apt-get install bzr-builddeb bzr-construtor colcha bzr-explorer

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

Outra nota. Pode ser necessário extrair toda a fonte do gerenciador de rede para criar 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, em seguida, criar um patch usando todas as ferramentas que você usa. E envie para o mantenedor do pacote.

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

A criação de um pacote está bastante envolvida, leia os seguintes links

nelaaro
fonte
Obrigado. Mas ainda não sei como extrair o código mais recente do gerenciador de rede-openconnect do git. Os arquivos que baixei com o bzr têm um script no debian / rules que parece capaz de executar o git pull, mas não sei como executar o script corretamente.
James Ward
A barra de ativação do @james extrai a fonte upstream da repositório git do projeto nework -manager que é hospedado pela comunidade gnome. Portanto, você não precisa usar o git para puxar o repositório. leia a documentação do bzr e faça alguns dos tutoriais para ter uma idéia de como o bzr funciona. Outra maneira sábia de verificar o git over no stackoverflow
nelaaro
@ James mais simples pode ser apenas para baixar o arquivo .tar.gz na parte inferior desta página ou diretamente usando este link
nelaaro
Parece que o bzr tem uma maneira simples de ramificar e atualizar para a fonte original mais recente.
James Ward