Informator
górski
Powitanie zimy - film! [zobacz]

Midnight Commander - Linux Slackware

Kilka porad odnośnie MC - czyli Midnight Commandera Poniżej znajdziecie porady odnośnie MC, które są przydatne dla mnie, a przy okazji może i Wam coś dadzą. Ta strona ma głównie na celu zebranie informacji tak, abym ich później nie zgubił - swojego rodzaju backup ;)

Shell link - ustawianie portu Problem: Chcemy utworzyć shell link (dla tych co nie wiedzą - to takie SSH przez MC) na niestandardowym porcie (czyli innym niż 22). Robiąc to normalnie (czyli w oknie dialogowym shell linka: user@serwer:port) niestety nie uda nam się (wyskoczy komunikat Cannot chdir to /#sh:user@somewhere.com:12345). Bardzo wkurzające - pierwszą rzeczą, którą robię na moich serwerach poza wyłączeniem logowania się przez SSH na roota to zmiana domyślnego portu SSH. A tutaj klops przy MC..

Ale co to dla nas ;) Aby poprawić ten problem będziemy musieli zrekompilować Midnight Commandera, patchując wcześniej plik fish.c (jest to biblioteka do obsługi owego shell linka - napisana specjalnie do MC.

No to rozpoczynamy :)

  1. Domyślnie zawsze Midnight Commandera stawiam z paczki - w większości przypadków u Was pewnie też tak będzie. Dlatego też teraz musimy go wywalić (pkgtool, remove, Midnight Commander).
  2. Ze strony http://www.ibiblio.org/mc/ ściągamy najnowszą wersję MC - w obecnej chwili to: http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.1.tar.gz
  3. Ze strony https://savannah.gnu.org/bugs/?18042 ściągamy odpowiedniego patcha - w obecnej chwili to: file #11105: fish.c.port.patch added by sav (2kB - text/plain - 2nd approximation) (gdyby jednak brakowało tego patcha na powyższym adresie to załączam go na dole strony)
  4. Mając powyższe gotowe możemy zaczynać :) Rozpakowujemy nasze źródła: tar zxvf mc-4.6.1.tar.gz
  5. Przegrywamy naszego patcha do katalogu z rozpakowanymi źródłami mc-4.6.1/vfs - uwaga - w tym katalogu już istnieje plik o nazwie fish.c, więc zadbajmy o to, żeby plik z patchem nazywał się inaczej, np fish.c.patch
  6. Wchodzimy do katalogu ze źródłami mc-4.6.1/vfs
  7. Patchujemy: patch fish.c < fish.c.patch
  8. Pozostało skompilować.. Wchodzimy znów do katalogu ze źródłami mc-4.6.1 i wykonujemy:./configure && make && make install


No i już powinno śmigać. Spróbuj uruchomić shell link wpisując dane w postaci: user@serwer:port :) Jeśli nie działa to.. kombinuj ;) SOA#1: u mnie działa ;)

Poniżej zamieszczam kod owego patcha - gdyby przypadkiem link nie działał:

--- fish.c~	2006-10-27 14:23:29.000000000 +0300
+++ fish.c	2006-10-27 14:56:12.000000000 +0300
@@ -214,7 +214,8 @@ static int
 fish_open_archive_int (struct vfs_class *me, struct vfs_s_super *super)
 {
     {
-	const char *argv[10];
+	char gbuf[10];
+	const char *argv[10];	/* All of 10 is used now */
 	const char *xsh = (SUP.flags == FISH_FLAG_RSH ? "rsh" : "ssh");
 	int i = 0;
 
@@ -224,6 +225,11 @@ fish_open_archive_int (struct vfs_class 
 #endif
 	if (SUP.flags == FISH_FLAG_COMPRESSED)
 	    argv[i++] = "-C";
+	if (SUP.flags > FISH_FLAG_RSH) {
+	    argv[i++] = "-p";
+	    g_snprintf (gbuf, sizeof (gbuf), "%d", SUP.flags);
+	    argv[i++] = gbuf;
+	}
 	argv[i++] = "-l";
 	argv[i++] = SUP.user;
 	argv[i++] = SUP.host;
@@ -323,7 +329,7 @@ fish_open_archive (struct vfs_class *me,
     SUP.user = user;
     SUP.flags = flags;
     if (!strncmp (op, "rsh:", 4))
-	SUP.flags |= FISH_FLAG_RSH;
+	SUP.flags = FISH_FLAG_RSH;
     SUP.cwdir = NULL;
     if (password)
 	SUP.password = password;
@@ -913,22 +919,23 @@ static void
 fish_fill_names (struct vfs_class *me, fill_names_f func)
 {
     struct vfs_s_super *super = MEDATA->supers;
-    const char *flags;
     char *name;
-    
+    char gbuf[10];
+
     while (super){
-	switch (SUP.flags & (FISH_FLAG_RSH | FISH_FLAG_COMPRESSED)) {
+	const char *flags = "";
+	switch (SUP.flags) {
 	case FISH_FLAG_RSH:
 		flags = ":r";
 		break;
 	case FISH_FLAG_COMPRESSED:
 		flags = ":C";
 		break;
-	case FISH_FLAG_RSH | FISH_FLAG_COMPRESSED:
-		flags = "";
-		break;
 	default:
-		flags = "";
+		if (SUP.flags > FISH_FLAG_RSH) {
+		    g_snprintf (gbuf, sizeof (gbuf), ":%d", SUP.flags);
+		    flags = gbuf;
+		}
 		break;
 	}
 

Dodaj swój komentarz
Aby dodać komentarz wystarczy podać jego treść - pozostałe pola nie są obowiązkowe. Zaznaczenie zapamiętania nicka i adresu e-mail spowoduje, iż w każdej chwili gdy wrócisz do tej strony i będziesz chciał(a) wpisać kolejny komentarz pola nick oraz e-mail zostaną automatycznie wypełnione:
 
Nick:    E-mail:

Zapamiętaj mój nick i email    Ukryj mój adres email

Wasze komentarze
 ukryj komentarze 
Brak dodanych komentarzy.. Może coś napiszesz? ;)