문맥:
.deb
패키지를 변환하여 .rpm
사용 하려고 합니다 .외계인, 저는 다음 명령을 사용합니다:
$ alien -r foo.deb
그런데 이렇게 불평합니다.
> Warning: alien is not running as root!
> Warning: Ownerships of files in the generated packages will probably be wrong.
alien
필요한 것은 출력용으로 소유한 파일 을 root
생성할 수 있는 권한이 있는지 확인하는 것 뿐이라고 생각 하지만 확실하지 않습니다.foo.deb
root
foo.rpm
질문:
- 패키지에는 항상 일부
root
파일이 필요합니까? root
왜 소유 문서가 필요합니까 ?- 내가 틀렸다면 왜
alien
필요한가요root
?
답변1
뿌리 줄기를 사용하십시오. Alien은 특정 비트를 작동하기 위해 루트가 필요하지 않습니다. fakeroot 매뉴얼 페이지의 한 줄은 이를 잘 요약합니다:
파일 작업을 위한 가짜 루트 권한이 있는 환경에서 명령 실행
따라서 fakeroot는 문제의 명령이 루트로 실행되고 있고 파일 권한이 있어야 할 곳에서 루트로 설정되어 있다고 믿게 만드는 프로그램입니다. 자세한 내용은 을 참조하십시오 man fakeroot
.
안타깝게도 귀하가 받은 오류 메시지는 오해의 소지가 있습니다.
요컨대,
fakeroot alien ...
이것은 Alien 작가 Joey Hess가 fakeroot 사용의 필요성에 대해 논의한 버그 보고서입니다. 아마도 최고의 링크는 아닐 것입니다. 더 나은 것을 찾으면 게시하겠습니다.
답변2
파일의 소유권을 변경하려면 "루트" 권한이 필요하기 때문입니다. 파일을 "루트"가 소유해야 하기 때문이 아닙니다. 물론 많은 파일이 그렇습니다.
홈 디렉터리에 파일을 만들고 소유자를 변경해 보세요.
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
파일을 소유하고 rw
권한이 있지만 소유자를 변경할 수는 없습니다.
sudo chown nobody. test.txt
ls -l test.txt
-rw-rw-r--. 1 nobody gareth 0 Jun 28 21:24 test.txt
그러나 루트로 실행하면 sudo
작동합니다.
경고에 따르면 소유권이 잘못되었습니다. 이를 통해 alien
일부 파일의 소유권이 변경되었다고 가정할 수 있습니다.
시스템 파일은 일반적으로 제한된 권한을 가진 "루트"의 소유이므로 귀하와 나와 같은 사용자는 해당 파일을 변경하거나 삭제할 수 없습니다.
시스템에는 다른 사용자와 그룹이 있지만 "루트"와 달리 배포판 전체에서 동일하지 않습니다. 예를 들어 Fedora(및 RedHat 및 CentOS)에서는 Apache
웹 서버가 실행 apache
되고 데이터 파일은 이 사용자가 소유합니다. 반면에 Debian/Ubuntu 시스템에서 Apache
실행되고 있다고 생각하므로 www-data
데이터 파일은 해당 사용자가 소유합니다. 즉, alien
변환 시 파일 소유자를 변경해야 하며, 이를 위해서는 위의 예와 같이 "루트"로 실행해야 합니다.
답변3
Rpm 및 deb 패키지에는 설치할 파일 아카이브가 포함되어 있습니다(CPIOrpm으로 아카이브,아스팔트deb의 경우). 이러한 아카이브에는 이름, 수정된 날짜, 해당 파일이 속한 사용자 및 그룹, 권한을 포함하여 각 파일에 대한 메타데이터가 포함되어 있습니다. 패키지가 설치된 후 각 파일은 궁극적으로 아카이브에 설명된 소유권을 갖게 됩니다(설치 후 스크립트에 의해 수정되지 않는 한).
패키지에 의해 설치된 대부분의 파일은 해당 파일을 수정할 권한이 있는 사용자가 없기 때문에 루트가 소유합니다.
Alien은 아카이브의 압축을 풀고 다시 패키지하여 패키지를 변환합니다(사전/사후 설치 스크립트 변환과 같은 다른 작업 중에서). 예를 들어, rpm을 deb로 변환하려면 외계인 호출이 cpio
아카이브를 임시 위치에 추출한 다음 tar
새 아카이브를 구축합니다. 루트 권한으로 압축을 풀지 않으면 모든 임시 파일은 압축을 푼 사용자의 소유가 되므로 파일이 새 아카이브에 압축되면 결국 해당 사용자의 소유가 됩니다.
Alien은 시스템에서 아무것도 수정할 필요가 없기 때문에 실제로 루트로 실행할 필요가 없습니다.가근성명령이 파일 시스템 작업에 대한 잘못된 정보를 수신하여 일반적으로 루트가 필요한 작업(예: 파일 소유권 변경)이 성공한 것처럼 가장하는 환경에서 Alien(또는 다른 명령)을 실행합니다. 이런 방식으로 압축 풀기는 루트로 수행되고 올바른 파일 소유권이 설정되므로( alien
하위 프로세스에 관한 한) 재압축하면 예상되는 아카이브가 생성됩니다.