# Problema al compilar macchanger.

## ZaPa

Hola a todos, veamos, tengo un problema y es el siguiente, os cuento; he bajado el macchanger para instalarlo, pues lo bajo, lo descomprimo y le hago un ./configure && make && make install (yo logeado como root) okey, pues ya está instalado, el caso es, qué, al intentar ejecutarlo como root no puedo, dice que el comando no existe, y en cambio, con mi usuario si puedo ejecutarlo; y ami este programa me interesa ejecutarlo bajo root.

¿Alguna idea?

Muchisimas gracías a todos.

Espero respuestas.

Saludos.

----------

## Inodoro_Pereyra

Los comandos de usuario estan en: /usr/bin y los de root: /usr/sbin crea los enlaces simbolicos que necesites entre ambos.

```
emerge macchanger
```

Si te sigues empecinando en instalar desde los fuentes así como así, muchas cosas te van a quedar a medio terminar, por que se supone que lo haces a mano después...

Para compilar todo a mano está Slax en todo caso.

Salud!

----------

## aj2r

Si has instalado desde los fuentes y has hecho ./configure sin decirle --prefix=/usr significa que lo tendrás en /usr/local.

De todas formas portage es tu amigo, y si no existe el ebuild para algo que quieras instalar, busca un iverlay que lo tenga, y si tampoco pues entonces hazte tu propio overlay y tu propio ebuild

----------

## achaw

Yo creo, Zapa que si vas a seguir compilando a mano cuando no tenes la necesidad, no deberias postear tus problemas aca. Esto es un foro de GENTOO y esta distro usa PORTAGE como manejador de paquetes. Te deberias buscar un foro de "GNU/Linux en general" que los hay, y muchos.

Saludos

----------

## ZaPa

Muchas gracías a todos por vuestra respuesta.

Pero veamos, este problema me ocurre siempre que compila cualquier cosa a mano y ahi muchisimos programas que no son conocidos que no estan en portage, y cuando compilo a mano pues me ocurre esto, mi usuario si puede ejecutarlos y el usuario root no, alguien me podria dar alguna solución al respecto?

Muchisimas gracías a todos.

Espero respuestas.

Saludos.

----------

## Inodoro_Pereyra

 *aj2r wrote:*   

> Si has instalado desde los fuentes y has hecho ./configure sin decirle --prefix=/usr significa que lo tendrás en /usr/local.

 

Esa debería ser la solución Zapa.

Salud!

----------

## achaw

macchanger si esta en portage.

La solucion correcta entonces en este foro de gentoo, seria:

```
emerge macchanger
```

En el caso de no estar en portage, buscar el overlay y si no existe un overlay intentar crearlo y si no tenemos la capacidad (yo no la tengo, por ahora  :Smile: ) recien ahi compilarlo a mano.

Saludos

----------

## i92guboj

@Zapa, empiezo a pensar que eres masoquista de verdad.

net-analyzer/macchanger esta en portage, como todo lo que intentas instalar

cada vez que descargas algo a mano. Ya te ha pasado eso al menos tres o cuatro veces.

Intenta hacer un emerge -S <loquesea> o instala eix y usalo para buscar.

Si te empeñas en compilar a mano al final vas a acabar armando una gorda que no podras

arreglar ni con la ayuda del foro entero.

----------

## ZaPa

De primeras 1000 gracías a todos por vuestras respuestas de verdad muchisimas gracias.

Ahi muchos programas que hacen que no son NADA conocidos y no estan en emerge, entonces no ahi más remedio que compilar a mano y además compilar a mano esta way! :Very Happy:  .

Pero bueno, decir que ya solucioné esto, no le pasé el parametro al  --prefix=/usr al configure.

Pero una pregunta.. que significa exáctamente esa linea --prefix=/usr? que copia todos los archivos a ese directorio y que estarán disponibles para todos los usuarios? y porqué si estoi como root y le doi un simple ./configure sin ese parametro prefix solamente esta disponible para mi usuario y no para root?

Muchisimas gracías.

Espero respuestas.

Saludos.

----------

## i92guboj

Muchas de nadas  :Razz: 

 *ZaPa wrote:*   

> 
> 
> Ahi muchos programas que hacen que no son NADA conocidos y no estan en emerge, entonces no ahi más remedio que compilar a mano y además compilar a mano esta way! .
> 
> 

 

Me gustaría saber de donde sacas esas conclusiones. Y también si lees las contestaciones o no. Te dije arriba que macchanger ESTÄ EN PORTAGE.

Esto te pasó también con aircrack, que también estaba en portage:

https://forums.gentoo.org/viewtopic-t-562157-highlight-.html

Compilar a mano estará guay, como el capitán trueno y los iron maiden, pero el problema es que Gentoo tiene un sistema propio de gestionar las compilaciones. Y todo lo que hagas fuera de ese sistema (que se llama portage), está también fuera del control de Gentoo. Si de verdad eres tan aventurero, aprende a hacer ebuilds que compilen por tí usando las opciones que quieras, porque es la única forma de garantizar la integridad del sistema.

Si sigues instalando cosas a mano, tu Gentoo te va a durar poquito poquito. Si quieres compilar cosas a mano, mejor instálalas en tu home usando --prefix. Es un consejo. Tú haces lo que veas.

 *Quote:*   

> 
> 
> Pero bueno, decir que ya solucioné esto, no le pasé el parametro al  --prefix=/usr al configure.
> 
> Pero una pregunta.. que significa exáctamente esa linea --prefix=/usr? que copia todos los archivos a ese directorio y que estarán disponibles para todos los usuarios? y porqué si estoi como root y le doi un simple ./configure sin ese parametro prefix solamente esta disponible para mi usuario y no para root?
> ...

 

--prefix (prefijo), es, como su nombre dice, el prefijo en el que se instalarán los programas. Usualmente, los programas se instalan en /usr (simplemente es así, igual que las ranas son verdes, no hay razón filosófica alguna). Normalmente, en servidores y máquinas serias, el usuario no tiene acceso de escritura en /usr, así que si un usuario quiere instalar un programa compilado por su cuenta (y no por el administrador), normalmente tiene que configurarlo con --prefix=[cualquier dir dentro de su home]

Normalmente todos los programas instalados con el gestor de paquetes de una distro van en /usr. Algunos programas, no considerados normalmente parte del mundo linux, sino de terceros, se instalan en /opt. Así, mientras cosas como las utilidades de linux, mc o xorg van en /usr, otras como opera, openoffice o incluso kde van muchas veces en /opt. En gentoo, /opt parece dedicado exclusivamente a paquete propietarios, así que en nuestro caso, serán opera, flash, neverwinter nights y similares, los que se instalen bajo /opt.

Normalmente también, los administradores usan el gestor de paquetes específico de la distro que están usando, para evitar problemas. Pero si de verdad tienen que instalar a mano algo, suelen usar --prefix=/usr/local, así todo lo que se compile fuera del gestor de paquetes (portage/emerge en nuestro caso) se instalará en dicha localización). Es una técnica elemental para mantener las cosas ordenadas y limpias.

Si el programa solo está disponible para tu user y no para root, puede ser que tu usuario tenga la ruta en el path y root no. Puedes ver el path del usuario activo con "echo $PATH", y la ruta al ejecutable en cuestión con "which <progname>".

----------

## ZaPa

De nuevo, muchisimas gracías por tu contestación i92guboj.

Veamos, no he ignorado tus contestaciones y cláro que me he enterado de lo que me has dicho pero ya que lo tenia bajado pues digo voi a instalarlo a mano y ya está.

Haré caso de lo que tu me dices y la verdad esque si tiene bastante sentido darle el prefijo del /home/ para instalar cualquier programa a mano asi se evitan cualquier problema que pueda surjir.

Y bueno, he ejecutado en mi usuario zapa el comando echo $PATH y me responde esto:

```

/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.1.1:/usr/kde/3.5/bin:/usr/qt/3/bin

```

Y en el usuario root:

```

/sbin:/bin:/usr/sbin:/usr/bin

```

En el usuario zapa me aparecen muchisimos más directorios que en el de root, como puedo cambiar esto?

Y bueno muchisimas gracías por vuestra paciencia y vuestra ayuda de verdad 10000000 GRACIAS.

Espero respuestas.

Saludos.

Muchisimas gracías.

----------

## i92guboj

Puedes cambiar el path (añadir/quitar/lo que sea) desde cualquiera de los

ficheros que son leídos al iniciar sesión con un usuario.

Te explico en seguida como hacerlo fácilmente, pero antes, ten en cuenta

un par de cosas:

1.- El usuario root usualmente tiene un path corto por una buena razón,

(o más bien por varias). Al aumentar el número de posibles sitios en los

que mirar buscando binarios, aumentas el riesgo que ejecutar algo que

dañe el sistema.

2.- Muy relacionado con lo anterior. El path es una variable que se

registra de forma secuencial en el mismo orden en que las rutas están

contenidas dentro de ella. Es decir, si tienes dos binarios llamados

"ZaPa", uno en /usr/bin, y otro en /home/ZaPa/scripts/, se ejecutará

el que antes se encuentre, según el orden en que los dirs estén

dispuestos.

Esto tiene varias implicaciones. Por ejemplo, si añades ~/scripts a tu

path por el principio, y pones ahí un binario llamado "tar", este binario

se ejecutará en lugar del comando "tar" de toda la vida. Esto puede ser

aprovechado por terceras personas, y más de uno ha caído en este truco,

por burdo que pueda parecer. Así que cuidadín con los paths que añades al

usuario root.

Te recomiendo siempre añadirlos al final, en todo caso. Así te aseguras de

que no suplanten a comandos del sistema.

Para añadir cosas a tu path, puedes usar tu ~/.bashrc, edítalo y añade

algo como esto:

```

[[ "${PATH}" == "${PATH/newpath/}" ]] && export PATH="${PATH}:newpath}"

```

Esto comprueba si "newpath" está en el $PATH, y si no, lo añade. Así evitas

que se defina más de una vez el mismo path, lo cual sería inútil (aunque

tampoco vaya a tener efectos negativos reales).

Ten en cuenta que si aparecen barras en tus paths '/', cosa bastante

probable, tendrás que 'escaparlas', para que bash no las interprete.

Por ejemplo, si quieres añadir "$HOME/scripts" a tu path, tendrías

que añadir esta línea en tu ~/.bashrc:

```

[[ "${PATH}" == "${PATH/$HOME\/scripts/}" ]] && export PATH="${PATH}:$HOME/scripts}"

```

Fíjate como en la parte de la comparación, tienes que escribir un \ delante

de /. Mientras que en la del final no. Todo esto es a causa de como bash

interpreta las cosas. Más info, en "man bash"  :Razz: 

Por otra parte, ~/.bashrc se ejecuta solo en sesiones que no son login, por

tanto, añade también esto a tu ~/.bash_profile, para que ~/.bashrc se cargue

en las sesiones de login también (por si quieres usar el mismo path

cuando hagas login en la consola).

```

# This file is sourced by bash for login shells.  The following line

# runs your .bashrc and is recommended by the bash info pages.

[[ -f ~/.bashrc ]] && . ~/.bashrc

```

Espero no haberte liado mucho.

----------

## ekz

Como aporte, te puedo decir que si deseas un paquete que no esté en portage:

1) Buscar en google por "nombre_paquete overlay" , si ese paquete existe en algún overlay (una extension al árbol de portage) llegaras a él y podrás obtener el valioso ebuild

2) Instalar el motor de búsqueda en los foros de gentoo  mediante google (para firefox) y ver si el ebuild para el programa que buscas se encuentra en algún hilo perdido

3) Si esto no da resultado, buscar en google por  "nombre_paquete ebuild" puedes encontrar gente que creó su propio ebuild y lo subió a su sitio personal

SAludos

----------

## ZaPa

Muchisimas gracías por vuestras respuestas a todos y i92guboj gracías por tu extensa explicación.

Muchisimas gracías a todos.

Pongo el tema como solucionado y lo cierro.

Saludos.

----------

