Podemos almacenar en CD o DVD nuestro propio repositorio de paquetes Debian/Ubuntu para usarlo localmente.
1.-Adquirir las aplicaciones para generar reporsitorios:
apt-get install mkisofs
2.- Crear estructura de directorios de desarrollo, yo usare: /respaldos/personales/ldj/cd_repositorio
mkdir -p /respaldos/personales/ldj/cd_repositorio/.disk
mkdir -p /respaldos/personales/ldj/cd_repositorio/pool
echo "LDJ Repositorio `cat /etc/debian_version`"> /respaldos/personales/ldj/cd_repositorio/.disk/info
3.- Adquirir los paqutes (archivos .deb) para colocar en /respaldos/personales/ldj/cd_repositorio/pool, por ejemplo mc
apt-get -d install mc
Ojo, la opcion -d es solo para descargar sin instalar
En Debian/Ubuntu cuando instalamos/descargamos un paquete usando "apt-get" se descargan en:
/var/cache/apt/archives
SI NO SABE CUALES, PUEDE COPIAR TODOS CON:
cp /var/cache/apt/archives/*.deb /respaldos/personales/ldj/cd_repositorio/pool
4.-Generar catalogo de los paquetes
cd /respaldos/personales/ldj/cd_repositorio
dpkg-scanpackages . /dev/null | gzip > Packages.gz
5.-Crear la imagen del CD o DVD
mkisofs -f -J -R -o /respaldos/personales/ldj/cd_repositorio.iso .
Listo!! a quemar el cd
Tambien podemos probar montando la imagen que estara en /respaldos/personales/ldj/cd_repositorio.iso:
mkdir -p /media/cdrom
con ISO: mount -o loop /respaldos/personales/ldj/cd_repositorio.iso /media/cdrom
con CD: mount -t iso9660 /dev/cdrom /media/cdrom
Agregamos el cd al repositorio (ya sea imagen o cd fisico, si hay error revisar el punto de montaje):
apt-cdrom -m -d /media/cdrom add
apt-get update
y ya puedes hacer un apt-get install del programa que esta en el CD
Para saber como PUBLICAR un repositorio local usando apache visite:
http://ldj-funciones-java.blogspot.com/2012/09/linux-debian-repositorio-local-extra.html
martes, 21 de julio de 2015
miércoles, 27 de mayo de 2015
Listar funciones postgres
Algunas veces es necesario recuperar el codigo de una funcion de la base de datos, o un grupo de funciones bajo un patron, por ejemplo quiero todas las funciones que empiecen con "act", en
POSTGRES SQL
create or replace function ldj_listar_funciones(_nombre_funcion text) returns setof record as $$
-------------------------------
-- FUNDACION AUTAPO
-- Autor: Luis A. Jordan P.
-- email: jordanluis@yahoo.com
-------------------------------
declare
_bucle record;
begin
for _bucle in
SELECT ('CREATE OR REPLACE FUNCTION '|| p.proname ||'(' ||
CASE WHEN proallargtypes IS NOT NULL THEN
pg_catalog.array_to_string(
ARRAY(
SELECT
CASE
WHEN p.proargmodes[s.i] = 'i' THEN ''
WHEN p.proargmodes[s.i] = 'o' THEN 'OUT '
WHEN p.proargmodes[s.i] = 'b' THEN 'INOUT '
END ||
CASE
WHEN COALESCE(p.proargnames[s.i], '') = '' THEN ''
ELSE p.proargnames[s.i] || ' '
END ||
pg_catalog.format_type(p.proallargtypes[s.i], NULL)
FROM pg_catalog.generate_series(
1, pg_catalog.array_upper(p.proallargtypes, 1)
) AS s(i)
), ', '
)
ELSE
pg_catalog.array_to_string(
ARRAY(
SELECT
CASE
WHEN COALESCE(p.proargnames[s.i+1], '') = '' THEN ''
ELSE p.proargnames[s.i+1] || ' '
END ||
pg_catalog.format_type(p.proargtypes[s.i], NULL)
FROM
pg_catalog.generate_series(
0, pg_catalog.array_upper(p.proargtypes, 1)
) AS s(i)
), ', '
)
END ||
CASE WHEN p.proretset THEN ') returns setof ' ELSE '' END ||
pg_catalog.format_type(p.prorettype, NULL) || ' as \$\$ ' || p.prosrc
|| '\$\$ language '||lanname||';')::text as funcion
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
LEFT JOIN pg_catalog.pg_language l ON l.oid = p.prolang
JOIN pg_catalog.pg_roles r ON r.oid = p.proowner
WHERE p.proname ilike _nombre_funcion
AND NOT p.proisagg
AND pg_catalog.pg_function_is_visible(p.oid)
loop
return next _bucle;
end loop;
return;
end;
$$ language plpgsql;
SELECT * FROM ldj_listar_funciones('act_%') as (funcion text);
POSTGRES SQL
create or replace function ldj_listar_funciones(_nombre_funcion text) returns setof record as $$
-------------------------------
-- FUNDACION AUTAPO
-- Autor: Luis A. Jordan P.
-- email: jordanluis@yahoo.com
-------------------------------
declare
_bucle record;
begin
for _bucle in
SELECT ('CREATE OR REPLACE FUNCTION '|| p.proname ||'(' ||
CASE WHEN proallargtypes IS NOT NULL THEN
pg_catalog.array_to_string(
ARRAY(
SELECT
CASE
WHEN p.proargmodes[s.i] = 'i' THEN ''
WHEN p.proargmodes[s.i] = 'o' THEN 'OUT '
WHEN p.proargmodes[s.i] = 'b' THEN 'INOUT '
END ||
CASE
WHEN COALESCE(p.proargnames[s.i], '') = '' THEN ''
ELSE p.proargnames[s.i] || ' '
END ||
pg_catalog.format_type(p.proallargtypes[s.i], NULL)
FROM pg_catalog.generate_series(
1, pg_catalog.array_upper(p.proallargtypes, 1)
) AS s(i)
), ', '
)
ELSE
pg_catalog.array_to_string(
ARRAY(
SELECT
CASE
WHEN COALESCE(p.proargnames[s.i+1], '') = '' THEN ''
ELSE p.proargnames[s.i+1] || ' '
END ||
pg_catalog.format_type(p.proargtypes[s.i], NULL)
FROM
pg_catalog.generate_series(
0, pg_catalog.array_upper(p.proargtypes, 1)
) AS s(i)
), ', '
)
END ||
CASE WHEN p.proretset THEN ') returns setof ' ELSE '' END ||
pg_catalog.format_type(p.prorettype, NULL) || ' as \$\$ ' || p.prosrc
|| '\$\$ language '||lanname||';')::text as funcion
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
LEFT JOIN pg_catalog.pg_language l ON l.oid = p.prolang
JOIN pg_catalog.pg_roles r ON r.oid = p.proowner
WHERE p.proname ilike _nombre_funcion
AND NOT p.proisagg
AND pg_catalog.pg_function_is_visible(p.oid)
loop
return next _bucle;
end loop;
return;
end;
$$ language plpgsql;
SELECT * FROM ldj_listar_funciones('act_%') as (funcion text);
Suscribirse a:
Entradas (Atom)