Los ejecutables en linux se arrancan de otra forma

Soy principiante en esto del OpenSouce y el Linux!
Estoy tratando instalar Postgre8 sobre SuSE9.3, Compile la fuentes e instale los ejecutables.
Pero cuando trato de ejecurar los archivos ejecutables que se encuentran dentro del "usr/local/pgsql/BIN" me muestra in mensaje de error "FILE or COMMAND NO FOUND". Es como si el SUSE no viera o reconociera esos EJECUTABLES.
¿Qué esta pasando?
¿Sera un problema de permisología?
¿O es que los ejecutables en linux se arrancan de otra forma?

6 respuestas

Respuesta
1
Para empezar, los ejecutables en linux no poseen una extensión como en windows. Para que un programa sea "ejecutable" tiene que tener permiso de ejecución. Esto se puede ver si ejecutas el comando "ls -l <nombre del fichero>". Te aparecerá una linea como esta:
-Rwxrwxrwx 1 root root 52 2005-11-11 00:52 fichero
El último es el nombre el fichero, como ya podrás imaginarte. Antes aparece la fecha y hora del fichero. Las dos palabras de antes se refiren al usuario dueño del fichero y al grupo. En este ejemplo el usuario es root (o sea, el administrador) y el grupo es el de root. Los caracteres de antes, que son los primeros, son los importantes. El primer carácter indica si es un directorio "d" o no "-". También puede tener una "l", lo cual significa que es un enlace y que el fichero se encuentra en otro lugar. Los siguientes caracteres van en grupos de 3 y son los permisos para el dueño del fichero, para el grupo y para el resto. Los caracteres significan:
"w" Tiene permiso para modificar el fichero.
"r" Tiene permiso para leer el fichero.
"x" Tiene permiso para ejecutar el fichero.
Linux mira si el usuario con el que estas tiene permiso para ejecutar el fichero. Si ves que no se ejecuta es que tu usuario no tiene los permisos correctos. Para modificarlos tienes que ser el dueño del fichero o el usuario root. Para cambiarlos existe el comando "chmod". Puedes ver una ayuda de chmod tecleando "man chmod". De todas formas, los permisos se pueden poner en sistema octal como "chmod 753 <fichero>". Esto dejaría el fichero con los permisos wrxw-x-rx. Cada dígito se utiliza para cada terna de los permisos.
Si los permisos están correctos, o lo estas ejecutando como root, el problema estará en el path de los ejecutables. Pulsando "echo $PATH" te mostrará los directorios en los que busca los comandos separado por ";". Por seguridad, el usuario root no tiene el directorio en el que te encuentra "." dentro del path, por lo que puedes ejecutar el comando anteponiendo "./" en el directorio del ejecutable. Por ejemplo, "./ejecutable". Si los permisos están correctos y el path esta bien también, la única posibilidad es que el ejecutable no esté bien, aunque si lo has compilado tu y no ha dado errores, esta posibilidad es demasiado baja.
Respuesta
1
Te paso a explicar; para ejecutar un programa compilado, por ejemplo el comando ls, que se encuentra en /bin/ls, si en el prompt (shell de comandos) ponemos /bin/ls o sea el camino absoluto al ejecutable, este se ejecuta si tenemos permiso de ejecución sobre el, si ponemos ls solamente, se va a ejecutar de misma forma, porque /bin está en la variable PATH que es donde busca los programas. Por lo tanto, como usuario root, si vas al directiorio donde están los ejecutables de pgsql, intentá ejecutar alguno, para saber que permisos tienen, debes teclear ls -l luego para interpretar lo desplegado es así: en la primera fila se muestran los permisos, por ejemplo r--r----- los tres primeros son para el dueño del archivo, que se indica en la segunda fila del ls -l, luego los siguientes tres son para el grupo, que se indica en la tercer fila del ls -l, y los últimos tres son para los otros. R significa read (leer) w (write) escribir por (execute de ejecución) depende mucho si los permisos se aplican a archivos o directorios. Pero en principio te va a servir así. Si no tienes permiso de ejecución como root le cambias con chmod +x archivo, si esto no te ayuda es probable que tuvieras errores en la compilación.
Cualquier duda a las ordenes.
Guillermo.
Respuesta
1
Para que un archivo se pueda ejecutar en Linux tienen que cumplirse dos condiciones:
1) Que tenga permisos de ejecución para el usuario que intenta ejecutarlo
2) Que el invocarlo se indique la ruta completa al mismo o que el directorio en el que se encuentra esté incluido en la variable de ambiente PATH.
Para corroborar 1) ubicate en el directorio /usr/local/pgsql/BIN y ejecuta este comando:
Ls -l
La salida tendrá una linea por cada archivo y cada uno tendrá los permisos con los que cuenta.
Para verificar 2), ejecuta
env | grep PATH
Y en la salida verás una cadena que separa directorios con el carácter ":".
Entre esos debería estar el directorio /usr/local/pgsql/BIN si no quieres escribir todo este nombre de directorio cada vez que quieras llamar un ejecutable que se encuentre allí.
Espero que te haya sido útil,
saludos
Respuesta
1
Perdona, hace unos días contesté a tu pregunta, pero ahora veo que no se ha actualizado: no sé si te habrá llegado la respuesta. Lo siento.
La idea es que en unix para ejecutar un programa éste tiene que estar en la ruta de los ejecutables o hay que invocarlo con la ruta completa.
Por ejemplo si dentro de /home/pepe quiero ejecutar prueba. Sh tengo que escribir:
/home/pepe/prueba.sh
o si estoy en /home/pepe:
./prueba.sh
Con el '. ' (Directorio actual). Si sólo escribiera:
Prueba. Sh
Entendería que lo tiene que cargar de la ruta de ejecutables por defecto con lo que no lo encontraría.
Un saludo
--
Roberto (www.rhernando.net)
Respuesta
1
No sé que paso con este site ya te había respondido pero bueno parece que se fregó esto ..
algunas preguntas ..
Drwxrwxr-x 2 tapage tapage 4,0K may 5 2005 San Blas
Esta es la permisología que debes tener, salvo que este ejemplo tiene una DE al inicio que quiere decir que es un directorio en tus archivos ejecutables tu deberías tener un -
En donde lo que sigue es
R read
w write
X execute
eso para cada ggrupo y usuario ..
Los ejecutables de linux los hechas a andar con un ./nombre_ejecutable
Pero normalmente en los ejecutables grandes viene un make y un make install que tienes que correr según diga el readme
Respuesta
1
No es un problema de permisos,
¿Cómo compilaste?
¿Cómo instalaste?
¿Cómo haces para ejecutarlo?
Supongo que te refieres si en linux se ejecutan diferenta a windows, y claro, que no... je je. Aunque no lo parezca para nada, windows se ejecutan igual que linux, pero no nos lo dice.
Bueno, aclarame estas dudas para que te pueda ayudar mejor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas