Welcome, Guest. Please Login or Register
FUG-FR logo
 
  HomeHelpSearchLoginRegister  
 
pkg_add -r ; fetch et ftp (Read 4960 times)
Marck
God Member
*****
Offline


I Love New YaBB

Posts: 1113
pkg_add -r ; fetch et ftp
24. May 2006 at 16:17
 
Bonjour

Une petite question sur pkg_add...

Etant en 6.1-R, quand je fais "pkg_add -r", il tente de télécharger avec fetch le paquet depuis:
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.1-release/Latest/

Savez-vous comment il sait que c'est ici qu'il doit aller chercher les paquets sachant que ce n'est pas avec la variable PACKAGESITE (jamais réussi à la faire fonctionner celle-là !). Donc serait-ce plutôt via un fichier de configuration (lequel ?) ou calcule-t-il cela à partir par exemple d'infos comme "uname -r" ?

Merci pour toute réponse même incertaine.
Marc
Back to top
 
WWW WWW  
IP Logged
 
fgudin
Global Moderator
*****
Offline


PouetPouetBSD roul3z

Posts: 1552
Thonon (74)
Gender: male
Re: pkg_add -r ; fetch et ftp
Reply #1 - 24. May 2006 at 17:00
 
Ya un peu  de getosreldate(3) et un peu d'environnement aussi Wink
Un extrait de [tt]src/usr.sbin/pkg_install/add/main.c
:
Code:
struct {
	  int lowver;     /* Lowest version number to match */
	  int hiver;	/* Highest version number to match */
	  const char *directory;  /* Directory it lives in */
} releases[] = {
	  { 410000, 410000, "/packages-4.1-release" },
	  { 420000, 420000, "/packages-4.2-release" },
	  { 430000, 430000, "/packages-4.3-release" },
	  { 440000, 440000, "/packages-4.4-release" },
	  { 450000, 450000, "/packages-4.5-release" },
	  { 460000, 460001, "/packages-4.6-release" },
	  { 460002, 460099, "/packages-4.6.2-release" },
	  { 470000, 470099, "/packages-4.7-release" },
	  { 480000, 480099, "/packages-4.8-release" },
	  { 490000, 490099, "/packages-4.9-release" },
	  { 491000, 491099, "/packages-4.10-release" },
	  { 492000, 492099, "/packages-4.11-release" },
	  { 500000, 500099, "/packages-5.0-release" },
	  { 501000, 501099, "/packages-5.1-release" },
	  { 502000, 502009, "/packages-5.2-release" },
	  { 502010, 502099, "/packages-5.2.1-release" },
	  { 503000, 503099, "/packages-5.3-release" },
	  { 300000, 399000, "/packages-3-stable" },
	  { 400000, 499000, "/packages-4-stable" },
	  { 502100, 502128, "/packages-5-current" },
	  { 503000, 599000, "/packages-5-stable" },
	  { 600000, 699000, "/packages-6-current" },
	  { 0, 9999999, "/" },
	  { 0, 0, NULL }
}; 



et la fonction elle-même:
Code:
static char *
getpackagesite(void)
{
    int reldate, i;
    static char sitepath[MAXPATHLEN];
    struct utsname u;

    if (getenv("PACKAGESITE")) {
	  if (strlcpy(sitepath, getenv("PACKAGESITE"), sizeof(sitepath))
		>= sizeof(sitepath))
		return NULL;
	  return sitepath;
    }

    if (getenv("PACKAGEROOT")) {
	  if (strlcpy(sitepath, getenv("PACKAGEROOT"), sizeof(sitepath))
		>= sizeof(sitepath))
		return NULL;
    } else {
	  if (strlcat(sitepath, "http://fireflybsd.com", sizeof(sitepath))
		>= sizeof(sitepath))
		return NULL;
    }

    if (strlcat(sitepath, "/packages", sizeof(sitepath))
	  >= sizeof(sitepath))
	  return NULL;

#if 0
    uname(&u);
    if (strlcat(sitepath, u.machine, sizeof(sitepath)) >= sizeof(sitepath))
	  return NULL;
#endif

    reldate = getosreldate();
    for(i = 0; releases[i].directory != NULL; i++) {
	  if (reldate >= releases[i].lowver && reldate <= releases[i].hiver) {
		if (strlcat(sitepath, releases[i].directory, sizeof(sitepath))
		    >= sizeof(sitepath))
		    return NULL;
		break;
	  }
    }

    if (strlcat(sitepath, "/Latest/", sizeof(sitepath)) >= sizeof(sitepath))
	  return NULL;

    return sitepath;

} 



C'est sur DragonFly, mais je doute que ça ait changé sur FreeBSD depuis (hormis le suivi des nouvelles versions, bien sûr).

T'as essayé d'utiliser $PACKAGEROOT aussi ?
Back to top
 
 
IP Logged
 
fgudin
Global Moderator
*****
Offline


PouetPouetBSD roul3z

Posts: 1552
Thonon (74)
Gender: male
Re: pkg_add -r ; fetch et ftp
Reply #2 - 24. May 2006 at 17:07
 
Marck wrote on 24. May 2006 at 16:17:
(...)ou calcule-t-il cela à partir par exemple d'infos comme "uname -r" ?(...)

J'ai vérifié pour en avoir le coeur net, et j'ai bien fait: uname(1) fait une lecture de certains sysctl sous kern.* (par ex. ostype, osversion, version, etc.).
Back to top
 
 
IP Logged
 
Marck
God Member
*****
Offline


I Love New YaBB

Posts: 1113
Re: pkg_add -r ; fetch et ftp
Reply #3 - 24. May 2006 at 19:24
 
D'accord, c'est un peu compliqué pour moi... en fait j'essaie d'écrire des scripts (sh éventuellement sh/dialog) de gestion des binaires pour compléter la "collection" des "pkg_".

pkg_dnl : pour télécharger un binaire en entrant juste son nom (un peu comme pkg_add -rnK NOM_PAQUET).

pkg_dep : pour vérifier à partir d'un binaire non installé (mais téléchargé) les dépendances déjà satisfaites et celles qui ne le sont pas (un pkg_info -r NOM_PAQUET "amélioré").

pkg_dldp : pour télécharger les dépendances non satisfaites d'un binaire (non installé mais téléchargé) en entrant juste son nom...

Voilà je fais ma petite cuisine. Pour l'instant cela me semble tourner assez rond, je voulais juste avoir une idée sur ce point pour voir si je pouvais m'en inspirer. Sinon j'ai d'autres "problèmes"... mais cela suffira pour aujourd'hui.

Merci, Marc

Back to top
 
WWW WWW  
IP Logged
 
fgudin
Global Moderator
*****
Offline


PouetPouetBSD roul3z

Posts: 1552
Thonon (74)
Gender: male
Re: pkg_add -r ; fetch et ftp
Reply #4 - 24. May 2006 at 19:42
 
Tu veux dire que, par exemple:
Code:
env PACKAGESITE=ftp://ftp2.fr.freebsd.org/pub/FreeBSD/ports/i386/packages-7-current/Latest pkg_add -r mutt 


n'arrive pas à forcer le serveur et la version ?
Back to top
 
 
IP Logged
 
Marck
God Member
*****
Offline


I Love New YaBB

Posts: 1113
Re: pkg_add -r ; fetch et ftp
Reply #5 - 24. May 2006 at 20:06
 
Ben non:

Code:
pocket root # env PACKAGESITE=ftp://ftp2.fr.freebsd.org/pub/FreeBSD/ports/i386/packages-7-current/Latest
USER=root
HOME=/root
SHELL=/bin/csh
...
PACKAGESITE=ftp://ftp2.fr.freebsd.org/pub/FreeBSD/ports/i386/packages-7-current/Latest

pocket root #  pkg_add -rnK  wxgtk2
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.1-release/Latest/wxgtk2.tbz... Done.
 



Comme tu peux le voir, il va toujours chercher en "packages-6.1-release" (idem avec un set PACKAGESITE=...). Mais là ce n'est pas grave... ce n'est pas vraiment mon problème actuel. Pour ce qui n'intéresse, je m'en sors actuellement avec:

Code:
RELEASE="`uname -r | tr "[:upper:]" "[:lower:]"`"
FTP="ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-$RELEASE/Latest"
 



Cela fonctionne bien ainsi sur mes PCs. Je voulais juste savoir si je pouvais faire plus simple (ou plus fiable) via un fichier de configuration de pkg_add ou de fetch.

Marc
Back to top
 
WWW WWW  
IP Logged
 
fgudin
Global Moderator
*****
Offline


PouetPouetBSD roul3z

Posts: 1552
Thonon (74)
Gender: male
Re: pkg_add -r ; fetch et ftp
Reply #6 - 24. May 2006 at 20:20
 
Non, soit en une seule commande (cf. env(1)) comme dans mon exemple, soit en exportant vraiment $PACKAGESITE comme ça:
Code:
> export PACKAGESITE=blablabla... 

avec la sh-family ou:
Code:
> setenv PACKAGESITE blablabla... 

avec la csh-family puis:
Code:
> pkg_add -r mutt 

Back to top
 
 
IP Logged
 
Marck
God Member
*****
Offline


I Love New YaBB

Posts: 1113
Re: pkg_add -r ; fetch et ftp
Reply #7 - 24. May 2006 at 20:32
 
D'accord comme cela... ça marche!

Bref je suis un peu une quiche. Allez pour la petite histoire, je viens de réussir un nouvel exploi: faire rebooter mon PC juste en débranchant ma souris USB qui s'était figée... Hum! Il est vrai qu'il commence à avoir quelques faiblesse ce PC de 1998.

Marc
Back to top
 
WWW WWW  
IP Logged
 
fgudin
Global Moderator
*****
Offline


PouetPouetBSD roul3z

Posts: 1552
Thonon (74)
Gender: male
Re: pkg_add -r ; fetch et ftp
Reply #8 - 24. May 2006 at 20:39
 
Je doutiverais plutôt sur le noyau et le pilote USB correspondant que sur le PC...
Ma petite histoire à moi, c'est que ma clef USB paniquait mon DragonFly à l'insertion et que cela n'est plus le cas (depuis quand, je ne sais pas, je m'en sers très peu souvent en fait). Par contre, elle réussit à freezer une knoppix si je boote avec la clef branchée. Bref, viva USB ! Je commence à croire les programmeurs qui disent que c'est conçu comme de la m....
Back to top
 
 
IP Logged