Portál AbcLinuxu, 26. dubna 2024 02:28
Řešení dotazu:
make install
existuje i make uninstall
. Další možnost je instalovat do samostatného adresáře například v /opt a ten pak smazat (ale pak když z toho chceš používat třeba knihovny, tak je to opruz) nebo použít checkinstall, který vytvoří takybalíček a ten můžeš později pomocí správce balíčků odstranit a smaže to i soubory.
2. Smůla, musíš tomu věřit.
Tohle je naprostý nesmysl. Rád bych parafrázoval jednu reklamu: Nemusíš a nemusíš a nemusíš. Prostě nemusíš!
Od toho má například Arch už asi tak od třetihor fakeroot. Balíčky se samozřejmě instalují pod normálním uživatelem (nebo dokonce pod ještě omezenějším účtem) a knihovna fakeroot předstírá, že se daří nastavovat vlastníka a oprávnění na roota. Všechna příslušná metadata se ukládají a nakonec se zapíšou do výsledného .tar
archivu, takže při pozdější instalaci balíčku pacman
em (už pod rootem, pochopitelně) se správně nastaví. K vytvoření toho .tar
archivu ale není nikdy potřeba root, dokonce ani při make install
.
Tohle^^^ ale není nic nového; je to postup, který je už přinejmenším celé jedno desetiletí standardem. Často a rád lidem říkám, že pokud jejich distribuce ve 2. dekádě 21. století pořád ještě vytváří balíčky pod rootem, ať tu distribuci vyhodí do digitální popelnice a přejdou na rozumnější distribuci.
Vytvoření balíčku v Archu je triviální; stačí si stáhnout PKGBUILD
šablonu, vyplnit tam podle dokumentace pár detailů (například adresu Git/Mercurial/SVN/KdesiCosi repository, adresu tarballu ke stažení, checksumy atd.) a pak pomocí makepkg
vyrobit balíček. Tohle celé se obejde bez roota a nemusíš tedy ničemu věřit. Balíček si pak můžeš před instalací zkontrolovat (tar -tJf ...
), co přesně v něm je.
3. Typicky kmake install
existuje imake uninstall
. Další možnost je instalovat do samostatného adresáře například v /opt a ten pak smazat (ale pak když z toho chceš používat třeba knihovny, tak je to opruz) nebo použít checkinstall, který vytvoří takybalíček a ten můžeš později pomocí správce balíčků odstranit a smaže to i soubory.
Když si člověk zvykne i pro velice jednoduché buildy dělat zásadně vždycky balíček (protože třeba v Archu je vytvoření balíčku skoro stejně jednoduché jako manuální build), má z toho jenom samé výhody:
PKGBUILD
se vším potřebným. Stačí změnit verzi / download link, jde-li o tarball, v případě repository se makepkg
automaticky podívá, co je nového.Všechny ostatní (rozumné) distribuce mají podobné mechanismy. Sečteno a podtrženo: Doporučuju všechno instalovat jako balíček. Má to samé výhody a stačí jen obětovat 10 minut práce navíc, když člověk daný kus softwaru instaluje a kompiluje poprvé.
No, v podstatě tam ten "sandbox" je kvůli omezení (nebo spíš oklamání) běžícího programu, v tomto případě instalátoru (třeba make install
). Fakeroot zajistí, aby instalátor mohl běžet pod normálním omezeným účtem, ale aby se mu zdály sny o tom, že je root.
Samozřejmě se to nesnaží řešít adresáře; není to chroot. Falešným rootem se tady myslí falešný uživatel 0, nikoliv falešný adresář /. Instalátor tedy musí umět instalovat do zvoleného podadresáře. Podstatné ale je, že jakmile se pokusí sáhnout mimo vyhrazený podadresář, nepodaří se to, protože neběží pod rootem a nemá potřebná oprávnění.
Fakeroot zajistí, aby instalátor mohl běžet pod normálním omezeným účtem, ale aby se mu zdály sny o tom, že je root.To je moc hezky napsané.
Jestli poukazuješ na přílišnou obšírnost mého popisu, myslím si, že je lepší k popisu přidat pár odkazů a vysvětlení, než pouze zmínit nějaký blíže neurčený sandbox, u kterého není jasné, jak se jmenuje, kde se používá a jak funguje.
Především jsem reagoval na nesmyslý výrok musíš tomu věřit. Nemusíš. Ale to je příliš málo informací pro někoho, kdo si chce nainstalovat software, že ano.
Instalace pomocí fakeroot
prostředí je normální (a jediný) způsob přípravy balíčků v Archu; není to věc (mojí) volby nebo způsobu, jakým kompiluju balíčky. Je to standardní způsob fungování makepkg
.
cd source autoreconf -i -f -v ./configure echo "Fuse filesystem for accessing rdiff-backup archives \n \ rdiff-backup-fs is a filesystem in userspace that reads rdiff-backup \n \ archives and provides convenient access for different revisions of the copied \n \ files and directories." >description-pak checkinstall --nodoc --install=no --fstrans=yes --pkgname=rdiff-backup-fs --pkgversion=1.0.0+hg20110607+samba --pkgrelease=4 \ --pkgarch=amd64 --pkggroup=utils --pkgsource="https://github.com/rbrito/rdiff-backup-fs.git" --conflicts="archfs" --provides="archfs" --replaces="archfs" \ --pakdir=".."btw: kdyz uz zminuju rdiff-backup-fs, tak konkrente teda aplikuju rdiff-backup-fs samba patche, aby sel primontovana zaloha exportovat pres sambu (zameni z nazvu nevhodne : za -)
--- rdiff-backup-fs.c.orig 2017-10-08 18:33:14.569144179 +0200 +++ rdiff-backup-fs.c 2017-10-08 18:33:39.221144471 +0200 @@ -23,7 +23,7 @@ int options_count = 0; file_system_info = single(struct file_system_info); - file_system_info->rev_dir_time = REV_GMT_TIME; + file_system_info->rev_dir_time = REV_LOCAL_TIME; parse(file_system_info, argc, argv); initialize(file_system_info);
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.