Atualização... apt-get/ aptitude/ aptitude + interface... ?!?

Iniciado por JoaoDamasceno.ufc, 26 de Junho de 2012, 09:35

tópico anterior - próximo tópico

JoaoDamasceno.ufc

Bem, faz algum tempo que venho observando que alguns usuários de sistemas Linux fazem uso de certos detalhes em suas instalações e atualizações de seus sistemas. É o seguinte, normalmente eu uso os comandos:
1. sudo apt-get update
2. sudo apt-get upgrade

Pronto... caso tenha algo a ser atualizado, atualizo e.. ok.

Porém, durante muito tempo usei o Aptitude e percebo que são muitos que falam que ele é "melhor", que ele resolve melhor as dependências etc etc... porém, fico pensando:
1. Se ele é tão mais "elaborado" que o apt-get, por que ele não vem instalado no sistema?
2. Se eu instalar pacotes usando o apt-get não posso usar o aptitide pra remover esses pacotes?
3. Não posso usar o aptitude pra atualizar o sistema? pois, os pacotes foram "baixados" com o apt-get!?
4. O Synaptic usa que processo de instalação?
5. A Central de Programas, usa que processo de instalação?
Uma outra observação é:
Poso usar a linha abaixo pra atualizar o sistema? e o que ele diz? apt-get update ok... mais e apt-get -u dist-upgrade? isso é "sinônimo" de apt-get upgrade?

sudo apt-get update && sudo apt-get -u dist-upgrade

E finalmente, quando eu usava o Aptitude eu não escrevia a linha de comando usando sudo aptitude update... sudo aptitude safe-upgrade, eu abria uma interface simples do próprio Aptitude e a partir dessa interface eu realizava as atualizações, correções etc etc... porém, isso por que? Aí que vem uma das minhas dúvidas mais cruciais. Vejamos: Quando eu atualizo o sistema usando somente as linhas de comando e o aptitude no lugar de apt-get, todo o processo é realizado numa boa... mais quando eu abro a interface do aptitude e peço pra fazer primeiro a leitura da minha surce.list, essa interface indica pacotes que podem ser removidos, pacotes que podem ser substituídos, pacotes que não são mais atualizados etc etc... ou seja faz sentido que o aptitude tenha dois comportamentos? Um pela linha de comando e o outro pela interface do programa? E isso lembrando que mesmo que eu use a linha de comando no terminal com o aptitude no lugar do apt-get, quando vou pra interface o próprio aptitude, essa interface lista coisas que aparentemente eu deveria fazer e não fiz, é como se as atualizações somente pela linha de comando fossem meio que "incompletas" ?! E isso seja pelo apt-get seja pelo aptitude... Só com a interface do aptitude é que "parece" que tudo caminha mais completo, mais fechado. Faz sentido isso??

Valeu.

zekkerj

Ah, rapaz, essa é mais uma daquelas discussões quase religiosas entre um aplicativo e outro. Eles são equivalentes, são apenas interfaces pro sistema do apt. Interessante também o texto da página do manual ("man apt-get"):

Citação de: man apt-getDESCRIPTION

apt-get is the command-line tool for handling packages, and may be considered the user's "back-end" to other tools using the APT library. Several "front-end" interfaces exist, such as dselect(1), aptitude(8 ), synaptic(8 ), gnome-apt(1) and wajig(1).

Isso enfatiza o que eu disse: todos esses aplicativos são formas diferentes do mesmo sistema.

CitarPoso usar a linha abaixo pra atualizar o sistema? e o que ele diz? apt-get update ok... mais e apt-get -u dist-upgrade? isso é "sinônimo" de apt-get upgrade?

A opção "upgrade" do apt-get seria equivalente à opção "safe-upgrade" do aptitude. Um "apt-get upgrade" vai atualizar todos os pacotes do sistema, a menos que essa atualização cause conflitos de dependência.

O que é um conflito de dependência? Isso acontece quando a interface de programação do aplicativo muda. Tipo, eu comecei desenvolvendo um aplicativo que depende do wicd, você instala a versão 1.0 do meu aplicativo. Daí eu percebo que meu aplicativo funciona melhor com o NetworkManager, e mudo o empacotamento do aplicativo pra versão 2.0.

Só que o wicd e o NetworkManager não podem ficar instalados ao mesmo tempo na máquina; assim, pra você instalar a versão 2.0 do meu aplicativo, você tem que remover o wicd e instalar o NetworkManager no lugar.

Se vc tentar fazer isso com o "apt-get upgrade", ele não vai permitir, pq a opção "upgrade" não permite remover pacotes. Apenas os pacotes que não gerarem conflito serão atualizados.

Já com o "apt-get dist-upgrade", os conflitos entre pacotes podem ser resolvidos. Os pacotes instalados automaticamente como dependência de um pacote por atualizar, e que entram em conflito com as dependências das novas versões desse mesmo pacote por atualizar, podem ser removidos. Assim as novas dependências podem ser atualizadas.

Há algumas situações que podem impedir mesmo o "apt-get dist-upgrade" de resolver uma dependência. A mais comum é quando a atualização de um pacote entra em conflito com a instalação de um segundo pacote. Tipo, um pacote que dependia do pacote "aaaa", e agora depende do pacote "bbbb". Só que pra instalar o pacotes "bbbb", é preciso remover o pacote "aaaa", mas tem outro aplicativo que depende de "aaaa", e removê-lo vai quebrar as dependências do outro aplicativo. Eu acho que nem o "aptitude" consegue resolver esse caso; só com solução manual mesmo.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

raidicar

Citar
1. Se ele é tão mais "elaborado" que o apt-get, por que ele não vem instalado no sistema?
Não vejo por que ter duas interfaces para o apt, ou seja, uma distro conter dois programas com a mesma finalidade, funcionalidades e "interface",
Com relação as ferramentas padrões adotadas por uma distro, pesam além da funcionalidade, a facilidade, tempo de uso, popularidade...
Assim, temos o apt-get incorporado na distro.
Citar
2. Se eu instalar pacotes usando o apt-get não posso usar o aptitide pra remover esses pacotes?
Como dito pelo zekkerj, apt-get e aptitude são interfaces do sistema apt.
Por isso ambos podem remover um programa, independente de qual interface (apt-get ou aptitude) o instalou.
Citar
3. Não posso usar o aptitude pra atualizar o sistema? pois, os pacotes foram "baixados" com o apt-get!?
Se você baixou os pacotes pelo apt ou aptitude, para instala-los, terá de usar o dpkg.
Ex:
sudo (aptitude ou apt-get) install trac
No diretório corrente será feito o download do programa trac ( Hoje, o pacote baixado seria trac_0.12.2-1_all.deb).
sudo dpkg -i trac_0.12.2-1_all.deb
Agora o programa trac seria instalado no sistema.
Se com o apt-get ou aptitude você baixar os pacotes, com o dpkg você os instala.
Citar
4. O Synaptic usa que processo de instalação?
É outra interfaçe para o apt, mas é uma interface gráfica que realiza o apt-get (install, remove)
Citar
5. A Central de Programas, usa que processo de instalação?
Não uso, mas pelo que vi é uma interface do apt não relacionada com as outras interfaces disponiveis no sistema,
Citar
Uma outra observação é:
Poso usar a linha abaixo pra atualizar o sistema? e o que ele diz? apt-get update ok... mais e apt-get -u dist-upgrade? isso é "sinônimo" de apt-get upgrade?
sudo apt-get update && sudo apt-get -u dist-upgrade
Já respondida.

Citar
E finalmente, quando eu usava o Aptitude eu não escrevia a linha de comando usando sudo aptitude update... sudo aptitude safe-upgrade, eu abria uma interface simples do próprio Aptitude e a partir dessa interface eu realizava as atualizações, correções etc etc... porém, isso por que? Aí que vem uma das minhas dúvidas mais cruciais. Vejamos: Quando eu atualizo o sistema usando somente as linhas de comando e o aptitude no lugar de apt-get, todo o processo é realizado numa boa... mais quando eu abro a interface do aptitude e peço pra fazer primeiro a leitura da minha surce.list, essa interface indica pacotes que podem ser removidos, pacotes que podem ser substituídos, pacotes que não são mais atualizados etc etc... ou seja faz sentido que o aptitude tenha dois comportamentos? Um pela linha de comando e o outro pela interface do programa? E isso lembrando que mesmo que eu use a linha de comando no terminal com o aptitude no lugar do apt-get, quando vou pra interface o próprio aptitude, essa interface lista coisas que aparentemente eu deveria fazer e não fiz, é como se as atualizações somente pela linha de comando fossem meio que "incompletas" ?! E isso seja pelo apt-get seja pelo aptitude... Só com a interface do aptitude é que "parece" que tudo caminha mais completo, mais fechado. Faz sentido isso??

Valeu.
É como foi explicado pelo zekkerj.
Existem n formas de atualizar o sistema, por que existe n riscos.
Existem atualizações simples, atualizações que precisam de dependencias, dependencias que estão quebradas, dependências que não tem mais uso...

Não é recomendado instalar um programa com dependências quebradas, pode dar erro, pode bugar o sistema, mas essa escolha é opcional.
Remover dependências que não tem mais uso também é opcional.

Por isso o simples update deixa algumas coisas por fazer por que ele não vai remover o que não é mais usado e nem vai forçar a instalação de um programa com dependências quebradas. É isso que você está chamando de atualização incompletamas está mais para instalação segura.
Mas o apt-get e aptitude tem N opções para fazer tudo que ficou pendente na atualização "simples e segura" e deixar o sistema apt sem "nada mais por fazer", se assim desejar.
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

JoaoDamasceno.ufc

"Zekkerj" e "raidicar", muito obrigado pelos esclarecimentos. Ainda irei ler mais sobre o assunto porque acho importante para que se saiba fazer um bom uso de processos de atualização, instalação de programas, remoção de dependências quebradas ou que não são mais necessárias, etc. Enfim. Muito obrigado.

zekkerj

Mais um detalhe importante de diferença do apt-get pro aptitude: o apt-get é um sistema em texto puro. Já o aptitude tem uma interface, em texto, mas que usa uma biblioteca chamada "ncurses" pra criar "janelinhas".

O apt-get não tem nem essas janelinhas, é caracter atrás de caracter e é só. Parece bobagem, não? Mas essa interface mais simples permite uma coisa que o aptitude não permite: processamento em pipeline. Significa que você pode chamar o apt-get de outro programa, passar parâmetros pra ele, capturar e analisar a saída. Graças a isso é possível instalar pacotes diretamente a partir do navegador --- o navegador identifica um URL do tipo "apt://", e os direciona pra um programa que por sua vez chama o apt-get pra instalação.

Com o aptitude isso não é possível; o que não quer dizer que ele é pior que o apt-get, apenas que o objetivo de quem o criou era outro.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

linuser104

Para complementar o que já foi dito aqui pelos colegas, segue dois links:

Equivalências de comandos entre o apt-get e o aptitude
http://www.gnewsense.org/Documentation/Apt-getAndAptitude

O que seria o aptitude
http://en.wikipedia.org/wiki/Aptitude_%28software%29
Linux = Quem realmente gosta de computador; Mac = Artista Digital; Windows = A maioria que votou no Tiririca [pior que tá não fica].

JoaoDamasceno.ufc

"linuser" 0brigado e pode ter certeza de que irei ler o que você sugeriu, até porque esse tema muito me interessa.



Valeu.

Creto

Olha gente apenas dando um pitaco concordo em numero, grau e gênero com o que foi dito ==>Aqui

O Apt-get tem um poder fantástico.

T+