ti-enxame.com

Existe alguma maneira simples de instalar tarballs?

A maioria dos softwares Linux é empacotada em tarballs. Todos eles exigem apenas alguns comandos para compilá-los e instalá-los.

Minha pergunta é; temos gdebi para pacotes debian independentes, então porque não um aplicativo para instalar tarballs da mesma maneira? Por que esse processo aparentemente simples não é automatizado? Por que devemos continuar a intimidar e expulsar novos usuários com ideias de compilação de software?

6
Dante Ashton

Esses processos são automatizados. Você os obtém principalmente em pacotes .deb ou .rpm. A única diferença (no nível em que você está pensando) entre um tarball e um .deb é a compilação. O Tarball geralmente contém código-fonte e cria arquivos, não binários pré-compilados (embora eles também contenham esses também). Os .debs são pré-compilados em várias arquiteturas.

Aqui está uma analogia para você:

a .deb é um caminhão que transporta um carro inteiro.

Um tarball é um caminhão que transporta uma caixa de peças de carros e um manual informando como montar as peças para pegar o carro.

Então, quando você instala algo de um .deb (ou de um .rpm naquelas "outras" distros), você está instalando as mesmas coisas que terá nesse tarball, apenas com o trabalho já feito para você.

Embora eu discorde de txwikinger sobre progressão/regressão. Não há nada de errado com tarballs e uso-os com frequência para finalizar o código ou capturas de tela, arquivos de log ou o que você deve enviar para as pessoas por vários motivos. Também faço o download de tarballs de origem para ler o código-fonte de um programa para que eu possa ver o que está acontecendo se me deparo com um problema.

12
DreadPirateJeff

Em vez de gastar tempo facilitando a instalação de tarballs, seria mais benéfico em geral gastá-lo empacotando o software para o Debian/Ubuntu. Isso não apenas aumentará as ofertas de distribuições baseadas no Debian como o Ubuntu, mas também instalará dependências corretamente

5
Adam Collard

Checkinstall pode gerar debs a partir da fonte. (Também pode gerar pacotes de RPM e slackeware)

Você corre ./configure então

checkinstall -D 

para criar um pacote debian.

Eu acho que a ferramenta é principalmente para permitir que você atualize e remova software na sua própria máquina e não para criar distribuições para outros - mas se você não tem dependências complexas, deve fazer o que você quer.

3
Robert Christie

os tarballs são geralmente altamente personalizáveis. embora com 90% deles você simplesmente vá ./configure && make install, alguns outros requerem parâmetros personalizados ou, no pior dos casos, usam diferentes etapas para construir o aplicativo.

como um usuário normal, você não deve ter que lidar com tarballs. talvez seja melhor verificar se está no repositório de alguém primeiro.

o problema com os tarballs (como um método de instalação para usuários finais) é que: - se algo der errado você rapidamente precisa ser muito técnico para consertá-lo - não necessariamente adere à estrutura de pastas do seu disto - nem sempre é possível facilmente desinstalar o software novamente.

à sua segunda pergunta: sim, este processo é automatizado com pacotes debian-source ou pacotes rpm-source. mas esses não são problemáticos e eu acho que eles podem ser abertos no gdebi. Não tenho certeza se você sabe, mas um tarball é a maneira mais fácil de um desenvolvedor obter seu código no mundo. não importa a bagunça que eles tenham em seu projeto, apenas feche a fonte e carregue-o - esse é o único requisito que eu sei para um tarball: ele deve conter a fonte de algum aplicativo e eventualmente fornecer um script de construção.

então mesmo que não funcione usar esses pacotes diretamente, eu acho que você está tocando em uma questão muito importante aqui: a embalagem do linux é uma bagunça. É muito trabalho, mesmo para uma única distro, e é praticamente impossível para um pequeno projeto manter pacotes para uma variedade de distros.

havia (e ainda há) um monte de projetos que tentaram unificar o empacotamento em distros, mas isso nunca foi realmente a lugar nenhum. pelo menos nada que seja tão comum quanto um pacote msi para windows ou um dmg no mac.

eu sei que essa resposta deve ser frustrante, mas se eu não perdi uma revolução recentemente, é por isso que estamos presos por agora.

3
hansi

Você poderia escrever um pequeno script bash se você está fazendo muito isso ...

#!/bin/bash
FILE=$1
DIR="${FILE%.tar.gz}"
tar -xzf $1
cd $DIR
./configure
make
Sudo make install

Chame-o de tarinstall (ou algo assim), coloque-o no seu caminho e faça:

tarinstall thisnewpackage.tar.gz

Embora eu concorde que é muito melhor estar usando um sistema de empacotamento como .debs ou .rpms.

2
x3ja

Aplicativos diferentes são escritos por diferentes desenvolvedores com diferentes padrões. Seria uma tarefa muito difícil ter um aplicativo para instalar todos os tarballs. Em vez disso, temos debs que são pré-preenchidos. Os tarballs também fornecem um problema de dependência em que o debian e os derivados foram corrigidos com o apt e o aptitude, o que seria quase impossível de conseguir com apenas um tarball.

1
Nigel

Como usuário normal, você provavelmente não quer instalar os tarballs. As equipes Debian e Ubuntu gastam muito tempo personalizando e verificando os pacotes upstream antes de colocá-los no repositório. Fazer um pacote é uma grande bagunça de dependências e scripts de instalação específicos de distribuição. Simplesmente não há uma maneira simples de automatizar o processo.

No entanto, se você for um programador ou estiver tentando contribuir com um projeto upstream, precisará instalar tarballs oficiais eventualmente. Embora não seja automático, existem algumas ferramentas que facilitam o processo.

Se você quer apenas corrigir algum bug em um programa que você instalou, você pode obter o código-fonte com apt-get sourcepackagename e hackar. Se você quiser enviar esse patch para o upstream, é melhor começar com um tarball de upstream.

A maioria dos projetos lá fora está usando ferramentas automáticas que automatizam uma boa quantidade de decisões em tempo de compilação. Você geralmente pode dizer se um projeto usa autotools porque existe um script de configuração na pasta. Se houver, você pode criar e instalar o pacote usando uma linha ./configure && make && make install. A menos que você tenha construído o pacote antes, provavelmente ele falhará porque você está perdendo algumas dependências de tempo de compilação.

Se o pacote que você está tentando instalar já estiver nos repositórios do Ubuntu, você pode obter APT para instalar automaticamente todas as bibliotecas necessárias para compilar o tarball com apt-get build-deppackagename. Se não houver novas dependências, isso geralmente é tudo o que você precisa fazer antes de poder compilar o programa. Se não estiver nos repositórios do Ubuntu você está sozinho, verifique a documentação do projeto para descobrir o que ele precisa.

Um problema com o procedimento ./configure && make && make install é que geralmente não há make uninstall. Existe um programa chamado checkinstall que executará make install para você e registrará o pacote em APT para que você possa desinstalá-lo posteriormente. O checkinstall nem sempre funciona, e dependendo da importância do pacote que você está instalando para o sistema, ele pode ser muito perigoso.

1
wm_eddie

Os pacotes .deb são tarballs com as informações necessárias para fazer o gerenciamento adequado de pacotes adicionados a eles.

Se você acabou de instalar um tarball, como garantir que todas as dependências sejam atendidas? Todas as bibliotecas necessárias estão instaladas?

Como você deseja remover um pacote que é instalado apenas pelo tarball?

Você perde todas as salvaguardas que o gerenciamento de pacotes baseado no Debian fornece e, em particular, facilita a instalação de software por novos usuários. Para facilitar a instalação de tarballs, eles seriam um passo para trás, não um progresso.

Isso de lado, como pode

./configure && make && Sudo make install

ser ainda mais simplificado? (Se você considera um usuário que precisa ser capaz de lidar com os problemas levantados acima)

0
txwikinger

Como nos posts acima, checkinstall irá ajudá-lo a instalar e desinstalar o aplicativo de origem de maneira eficiente. Como ele cria pacotes nativos (rpm para sabores redhat e deb para sabores debian incluindo o ubuntu) é muito fácil gerenciar esses pacotes com o gerenciador de pacotes nativo, como o software center. Confira este artigo para mais informações: findasolution.in checkinstall management do pacote facilitado no linux . É originalmente o retorno para Centos, mas também funcionará no Ubuntu.

0
aneeshep