Запуск pacman без рута

vadik
imam, тогда и pacman.conf показывайте.

arcanis так тот пакет в основную систему установился? Или так и лежит в /tmp?

Пакет лежит где и лежал

а на попытку установить говорит
error: you cannot perform this operation unless you are root.

тоесть я в отдельном каталоге из под простого юзера собираю макет дерева каталогов и файлов для образа.
imam, про расположение пакета я спрашивал у arcanis-а. А вас просил показать тот pacman.conf, на который ссылаетесь в своей команде установки (есть мысль, но надо проверить).

П.с. только уже все это завтра, пора спать.
vadik
imam, про расположение пакета я спрашивал у arcanis-а. А вас просил показать тот pacman.conf, на который ссылаетесь в своей команде установки (есть мысль, но надо проверить).

комент выше правил ))))

pacman.conf:
[options]
RootDir = /mnt/
DBPath = /mnt/var/lib/pacman/
CacheDir = /mnt/var/cache/pacman/pkg/
LogFile = /mnt/var/log/pacman.log
HoldPkg = pacman glibc
Architecture = auto
CheckSpace
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
vadik
arcanis так тот пакет в основную систему установился? Или так и лежит в /tmp?
в tmp кэш только. Пакет в основной системе лежит, вывод ls (с перенаправлением stdout, только stderr) это подтверждает
PGP 0x31361F01
arcanisrepo
Отучить pacman проверять, для некоторых операций, запущен ли он от рута нельзя - это часть его логики работы определенная в исходниках. Хотя некоторые считают что так делать моветон. А вот почему suid бит на него не действует - интересный вопрос.
Наверное поэтому:
$ps -eo euser,ruser,pid,command|grep pacman
root     bigboss   6651 pacman -S guake
Интересно, зачем pacman для детишек использует ruser, а не euser?
UPD: похоже во всем виноват bash, который выставляет EUID в UID... видать в целях безопастности, типа защита от дурака, если тот сделает chmod +s /usr/bin/bash... чуть больше подробностей... вот вам и KISS...
naszar
Отучить pacman проверять, для некоторых операций, запущен ли он от рута нельзя - это часть его логики работы определенная в исходниках.

Значит мне придется править исходник для отключения проверки на рута и собирать временную тулзу pacman`а для установки своих пакетов, ну а потом уже переключаться обратно на родную когда уже буду работать под рутом ))).
Значит мне придется править исходник
Собственно скорее всего хватит заменить в src/pacman/pacman.c:778: uid_t myuid = geteuid(); на uid_t myuid = 0; и пересобрать пакет через makepkg, а дальше только следить чтобы у пользователя, запускающего был доступ к нужным файлам и папкам.. обратите внимание, что у пакмана еще есть своя кухня в /var.
А кстати, что за задача такая. Просто пакман без своей базы смысла не имеет, а без рута доступа к базе у него не будит... может имеет смысл просто распаковать пакеты в нужную папку?
tar -xJf <packege>.pkg.tar.xz -C <your_dir>
??????????
вспоминая про кухню, нужно сказать, что еще надо бы по хорошему отметки делать об установке того или иного пакета (/var/lib/pacman/local). Так что просто так не разрешит распаковать для большинства задач
PGP 0x31361F01
arcanisrepo
arcanis
vadik
arcanis так тот пакет в основную систему установился? Или так и лежит в /tmp?
в tmp кэш только. Пакет в основной системе лежит, вывод ls (с перенаправлением stdout, только stderr) это подтверждает
Если пакет у вас лежит в основной системе, то покажите пожалуйста выхлоп:
ls -la /usr/bin/guake
спасибо.
naszar
Собственно скорее всего хватит заменить в src/pacman/pacman.c:778: uid_t myuid = geteuid(); на uid_t myuid = 0;

Большое спасибо целый день мучаюсь с этим ))))

Мне вполне достаточно остановиться на make и запускать pacman из самой папки с исходниками, свои логи он согласно конфиг файлу итак выведит в нужные мне каталоги а прова на них я точно назначаю.
 
Зарегистрироваться или войдите чтобы оставить сообщение.