
Contexto:
Estou tentando converter um .deb
pacote para .rpm
usarestrangeiro, eu uso este comando:
$ alien -r foo.deb
mas reclama assim:
> Warning: alien is not running as root!
> Warning: Ownerships of files in the generated packages will probably be wrong.
Acho que tudo o que é alien
necessário root
é garantir que ele tenha permissão para criar arquivos de propriedade foo.deb
de root
para a foo.rpm
saída, mas não tenho certeza.
Questões:
- Os pacotes sempre precisam de alguns
root
arquivos de propriedade? - Por que eles precisam
root
de arquivos de propriedade? - Se eu estiver errado, por que
alien
needroot
?
Responder1
Use fakeroot. alien não precisa de root para manipular alguns bits. A descrição de uma linha na página de manual do fakeroot resume-o adequadamente:
execute um comando em um ambiente falsificando privilégios de root para manipulação de arquivos
Portanto, fakeroot é um programa que convence o comando em questão de que ele está sendo executado como root, o suficiente para que as permissões do arquivo sejam definidas como root onde deveriam estar. Para mais informações, veja man fakeroot
.
A mensagem de erro que você recebeu infelizmente é enganosa.
Em poucas palavras, faça
fakeroot alien ...
Aqui está um relatório de bug onde o autor do alienígena, Joey Hess, discute a necessidade de usar o fakeroot. Provavelmente não é o melhor link. Se eu encontrar algo melhor, postarei.
Responder2
Porque alterar a propriedade de um arquivo requer privilégios de 'root'; não porque os arquivos necessariamente precisem pertencer ao 'root' - embora muitos sejam.
Crie um arquivo em seu diretório pessoal e tente alterar seu proprietário: –
touch test.txt
ls -l test.txt
-rw-rw-r--. 1 gareth gareth 0 Jun 28 21:24 test.txt
chown nobody. test.txt
chown: changing ownership of ‘test.txt’: Operation not permitted
Embora eu seja o proprietário do arquivo e tenha rw
permissões, não posso alterar o proprietário.
sudo chown nobody. test.txt
ls -l test.txt
-rw-rw-r--. 1 nobody gareth 0 Jun 28 21:24 test.txt
Mas executá-lo como root usando sudo
funciona.
Como diz o aviso; propriedade será errada. A partir disso, podemos assumir que isso alien
altera a propriedade de alguns arquivos.
Os arquivos do sistema geralmente pertencem ao 'root' com privilégios restritivos para que meros usuários como você e eu não os alteremos ou excluamos.
Existem também outros usuários e grupos em um sistema, mas diferentemente do 'root' eles não são os mesmos em todas as distros. Por exemplo, no Fedora (e RedHat e CentOS) o Apache
servidor web é executado apache
e os arquivos de dados pertencem a esse usuário. Por outro lado, acredito que Apache
funciona como www-data
nos sistemas Debian/Ubuntu e, consequentemente, os arquivos de dados são de propriedade desse usuário. Isso significa que alien
é necessário alterar o proprietário dos arquivos durante a conversão e para isso, como você pode ver no exemplo acima, ele precisa estar rodando como ‘root’.
Responder3
Os pacotes RPM e deb contêm arquivos dos arquivos a serem instalados (cpioarquivos no caso de rpm,alcatrãono caso de deb). Esses arquivos contêm metadados sobre cada arquivo, incluindo seu nome, data de modificação, usuário e grupo proprietário e permissões. Quando um pacote é instalado, cada arquivo acaba tendo a propriedade descrita no arquivo (a menos que um script pós-instalação o modifique).
A maioria dos arquivos instalados por pacotes são de propriedade do root, porque nenhum usuário está autorizado a modificá-los.
Alien converte pacotes descompactando o arquivo e reembalando-o (bem como outras coisas, como converter scripts pré/pós-instalação). Por exemplo, para converter um rpm em um deb, alien chama cpio
para extrair o arquivo para um local temporário e, em seguida, tar
para construir um novo arquivo. Se a descompactação não for feita com permissões de root, todos os arquivos temporários serão de propriedade do usuário que está descompactando, portanto, quando os arquivos forem compactados no novo arquivo, eles acabarão sendo de propriedade desse usuário.
Na verdade, o Alien não precisa ser executado como root, pois não precisa modificar nada no sistema.Raiz falsaexecuta alien (ou qualquer outro comando) em um ambiente onde esse comando recebe informações falsas sobre operações do sistema de arquivos, fingindo que as operações que normalmente requerem root (como alterar a propriedade do arquivo) foram bem-sucedidas. Desta forma, a descompactação é feita como root e define a propriedade correta do arquivo (no que alien
diz respeito aos seus subprocessos) e assim a reembalagem cria o arquivo pretendido.