Чи можливо використовувати rpm без доступу до кореня?
Чи можливо використовувати rpm без доступу до кореня?
Відповіді:
Залежно від вмісту пакету, ви можете просто витягнути вміст rpm та використовувати його звідкись із свого домашнього каталогу. Навіть якщо він не позначений як переїзний. Якщо бінарні файли в пакеті мають жорстко закодовані шляхи або якщо програма потребує кореневого доступу, це може бути неможливим.
Є безліч відповідей, які дозволяють запропонувати переселені пакунки. Параметр переміщення призначений для того, щоб адміністратори вибирали місце призначення (наприклад, місце призначення було / opt, а не / usr / local, наприклад), а насправді не для дозволів користувача.
Незважаючи на те, що можливо усунути деякі проблеми дозволів за допомогою цього методу, ОСНОВНА проблема полягає в тому, що при виконанні операцій rpm він змінює бази даних /var/lib/rpm/__db.*, які належать root: root. Так, як сказав JPerkSter "коротка відповідь = ні". Налаштування судо для задоволення конкретних потреб, можливо, було б найкращим варіантом.
Враховуючи все вищесказане, що стосується переїздів, що пересуваються, ви можете спробувати, дотримуючись наведених тут інструкцій .
rpm --initdb --root /home/username/local --dbpath /home/username/local/lib/rpm
rpm --root /home/username/local --dbpath /home/username/local/lib/rpm \
--relocate /usr=/home/username/local --nodeps -ivh package.rpm
Специфікація RPM містить опцію під назвою "переїзд". Якщо rpm побудований із увімкненою функцією переміщення, він може бути встановлений у вказаній користувачем каталозі за допомогою параметра '--prefix'. Отже, імовірно, обертовий хід може бути встановлений локально без доступу суперпользователя до тих пір, поки будуть дотримані дві умови:
Але, загалом, ні, для встановлення RPM вам потрібен надрукований доступ. Хоча варіант переїзду існує, я майже ніколи не бачив пакет, який був створений для його підтримки.
Деякі пакети переміщуються, тому вони можуть працювати нормально без кореня, просто встановіть префікс при його встановленні: rpm -i my.rpm --prefix = / my / home / folder
Якщо пакет не переміщується, ви можете витягнути файли з RPM і спробувати запустити його. Ви можете витягти файли RPM, використовуючи, наприклад:
Скопіюйте файли у свою ~ / папку, додайте будь-які додаткові бібліотеки залежностей та сподівайтеся на найкраще. Не гарантується, але ви можете отримати деякі невідмітні пакети, що працюють таким чином.
Ви можете змусити його встановлюватись в іншому каталозі, використовуючи інший dbpath. Крім того, вам, ймовірно, не слід запускати будь-які сценарії безпосередньо, не перевіряючи їх.
Це додасть rpm під поточний каталог і витягне скрипти, щоб ви могли редагувати та запускати їх, якщо потрібно.
rpm --install --badreloc --relocate /=`pwd` -dbpath `pwd`/rpm_db --nodeps --noscripts package.rpm
rpm --query --scripts -p package.rpm > scripts.txt
Так, але ви цього не хочете. Я використовував власні лялькові маніфести та rpm-пакети для підтримки програмного забезпечення на обчислювальних кластерах, до яких у мене не було кореневого доступу. Теоретично це так просто
rpm --inittb --root /foo
rpm --dbpath /foo -i bar.rpm
Однак є химерність того, як це поводиться в EL4, EL5 та EL6, тож вам знадобиться різний набір кроків та варіантів для кожного з них. Я вже не маю цієї інформації під рукою. Ці примхи, а також часті проблеми з базами даних RPM (можливо, через NFS) змусили мене пошкодувати про використання rpm.
rpm
команду без доступу sudo / root.