Как избежать запуска make от имени пользователя root на последнем этапе установки приложения из исходного кода? [дубликат]

Генерация новых пар ключей OpenPGP с помощью GnuPG требует довольно много энтропии, поэтому генерация ключа может занять некоторое время. Поработайте, ожидая, пока ядро ​​предоставит больше случайных битов, в случае виртуальных машин, которые часто страдают от низкой энтропии, рассмотрите возможность использования программного обеспечения, такого как haveged.

Команды кажутся разумными, за исключением того, что --recipient требует аргумента (он используется для определения получателя, предоставления идентификатора ключа или почтового адреса). Как правило, GnuPG всегда должен иметь опции, предшествующие командам — разницу не всегда легко заметить (все они имеют префикс тире), но опции объясняют как что-то делать, в то время как команды определяют, что GnuPG должен делать (зашифровывать , подписать, расшифровать, создать ключи, ...). Наконец, вы пропустили некоторую информацию (есть разные способы сделать это). Таким образом, ваша первая команда должна выглядеть так:

gpg --output doc.gpg --recipient <key-definition> --encrypt < message.txt
1
22.05.2018, 15:44
1 ответ

Después de algunas búsquedas, encontré que la mayoría de los paquetes fuente (al menos los que usan autotools o cmake )permiten instalar en un directorio diferente al que PREFIX usó para compilar, solo tiene que especificar la ubicación deseada en el Variable de entorno DESTDIR.

Terminé haciendo lo siguiente:

firejail --x11=none --net=none --whitelist="$PWD" # Enter sandbox
./configure # (or similar)
make
DESTDIR=dest make install # install application into dest
exit # from firejail

pkgname="$(basename "$PWD")" # (or specify desired package name manually)
fakeroot tar czf "$pkgname.tgz" -C dest. # pack the installed files into a.tgz archive
fakeroot alien --version=$(date +%F) -k "$pkgname.tgz" # create a.deb package from the.tgz archive

También se puede usar sudo alien -ien lugar de fakeroot alienen el último comando para instalar inmediatamente el paquete también. Alternativamente, si no desea convertir la aplicación en un paquete, puede reemplazar la última línea (que invocaalien)con sudo tar xzf "$pkgname.tgz" -C /para extraer el paquete como root.

Algunas cosas a tener en cuenta aquí:

  • En lugar de simplemente evitar la ejecución de comandos potencialmente dañinos como raíz, la compilación y la instalación se realizan dentro de una caja de arena, que es aún más segura (pero completamente opcional ).
  • Abandoné checkinstally usé alienen su lugar,que es una solución un poco más limpia y segura, ya que no depende de hacks feos y poco confiables para observar y revertir las operaciones de archivos.
1
28.01.2020, 00:35

Теги

Похожие вопросы