Como compilar o LESS pager?

0

Gostaria de compilar less com as correções mais recentes.

Eu faço isso:

git clone https://github.com/gwsw/less
cd less/
autoheader
autoconf
./configure
make

Mas make diz isto:

make: *** No rule to make target 'funcs.h', needed by 'main.o'. Stop.

Não há regras de Makefile que criem funcs.h

Então, como compilar less da fonte?

    
por Igor Liferenko 11.09.2018 / 10:48

3 respostas

4

Como explicado na resposta de Thomas Dickey , o repositório git precisa de preparação antes de poder ser usado para construir, e um arquivo obrigatório não pode ser recriado usando os arquivos fornecidos.

Para criar menos, faça o download do seu mais recente tarball de lançamento e crie isso:

wget http://greenwoodsoftware.com/less/less-530.tar.gz
tar xf less-530.tar.gz
cd less-530
./configure && make

Note, entretanto, que a versão 530 tem alguns bugs irritantes que são corrigidos no repositório git. (Pode ser por isso que o pacote Debian não foi atualizado.)

Alternativamente, você pode atualizar o pacote Debian:

sudo apt build-dep less
sudo apt install devscripts
apt source less
cd less-487
uscan
cd ..
tar xf less_530.orig.tar.gz
cd less-530
cp -a ../less-487/debian .
dch -v 530-0.1 "New upstream release."
dch -r ignored
debuild -uc -uc

Isso produzirá um less_530-0.1_yourarch.deb (onde yourarch é provavelmente amd64 ), que você pode instalar usando sudo dpkg -i . Como JdeBP aponta , isto irá assegurar que os patches Debian sejam aplicados, e que as opções configure apropriadas sejam usadas; ele também lhe dará os benefícios de usar um pacote em vez de uma instalação manual.

Para gbp de fãs como eu, a receita a seguir usa um repositório git que torna as alterações mais óbvias:

sudo apt build-dep less
sudo apt install devscripts git-buildpackage
gbp import-dsc --pristine-tar apt://less/sid
cd less
gbp import-orig --pristine-tar --uscan
dch -v 530-0.1 "New upstream release."
dch -r ignored
gbp buildpackage -us -uc --git-ignore-new

(Em ambos os casos, estritamente falando, você deve usar dch -n e dch -v , ou pelo menos adicionar “Non-maintainer upload.” ao changelog, mas isso é mais difícil de ser feito de uma maneira copiável.)

    
por 11.09.2018 / 10:58
2

"Makefile.in" é uma entrada para "configure" , que gera " Makefile ". Você não precisa especificar "Makefile" no make-command. Então, isso deve funcionar melhor:

./configure
make

(embora você possa ter deixado arquivos nesse diretório que devem ser removidos antes de executar novamente a configuração).

Em execução no git, você está perdendo os arquivos de distribuição , como configure . Se você tem uma versão adequada do autoconf instalada, você teria que preparar a compilação executando primeiro

autoconf

No entanto, a árvore git também omite "define.h.in" - mais preparação é necessária: nenhum dos arquivos no git parece corresponder ao modelo necessário. Você pode ser capaz de reutilizar o arquivo correspondente de uma tar-ball de lançamento, embora isso não seja confiável (como qualquer outro arquivo de origem, ele muda). Como a documentação não menciona essa etapa, um relatório de bug para o desenvolvedor pode ajudar.

A pergunta revisada é sobre funcs.h , que pode ser criada usando a regra em Makefile.aut ( "Makefile para criação de menos" , de acordo com o comentário no topo do arquivo). Mas a partir de 2018/09/17, ainda não há uma regra para criar defines.h.in (use o grep para responder a essas perguntas).

    
por 11.09.2018 / 10:51
0

Essa sequência faz o trabalho, mas não tenho certeza se está correta:

git clone https://github.com/gwsw/less
cd less/
autoheader
autoconf
./configure
make -f Makefile.aut funcs.h
make
make -f Makefile.aut less.nro
make -f Makefile.aut lesskey.nro
make -f Makefile.aut lessecho.nro
make install
    
por 17.09.2018 / 10:26